Ios Apple pay PKPaymentauthorizationViewController在加载付款请求时始终返回零

Ios Apple pay PKPaymentauthorizationViewController在加载付款请求时始终返回零,ios,objective-c,applepay,Ios,Objective C,Applepay,我正在获取PK Payment auth view controller实例,该实例返回为nil。这个代码有什么问题 if([PKPaymentAuthorizationViewController canMakePayments]) { if ([PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard,

我正在获取PK Payment auth view controller实例,该实例返回为nil。这个代码有什么问题

if([PKPaymentAuthorizationViewController canMakePayments])
{
    if ([PKPaymentAuthorizationViewController    canMakePaymentsUsingNetworks:@[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa]]) 
    {
        PKPaymentRequest *request = [[PKPaymentRequest alloc] init];
        request.currencyCode = @"USD";
        request.countryCode = @"US";
        request.merchantCapabilities = 0;
        request.requiredBillingAddressFields=PKAddressFieldAll;
        request.merchantIdentifier = @"merchant.com.domain.mine";
        PKPaymentSummaryItem *item = [[PKPaymentSummaryItem alloc] init];
        item.label=@"Merchant";
        item.amount=[NSDecimalNumber decimalNumberWithString:@"10"];
        request.paymentSummaryItems=@[item];
        PKPaymentAuthorizationViewController *viewController =  [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
        viewController.delegate = self;
        [self presentViewController:viewController animated:YES   completion:nil];
    }
}

在访问PKPaymentAuthorizationViewController之前,您应该在iPhone设备上正确配置Apple Pay。如果您尚未在设备上配置Apple Pay,您将获得
PKPaymentAuthorizationViewController
nil
值。您甚至可以在控制台上找到一个异常,说明“
此设备无法付款。

要在设备上配置Apple Pay,请执行以下步骤:

  • 转到设置
  • 选择存折和苹果支付选项(如果此选项在设置中不可见,请转到常规->语言和地区,将您的地区更改为美国或英国,然后您可以在设置中看到存折和苹果支付选项
  • 从主屏幕打开存折应用程序,配置有效的信用卡/借记卡(仅限美国/英国卡)
  • 验证添加的卡后,运行应用程序,您将获得一个有效的
    PKPaymentAuthorizationViewController
    实例

希望这会有所帮助。

我也遇到过类似的问题。看起来您包括了它,但是对于其他正在努力解决这个问题的人来说,我的问题不是最初向请求提供商品功能

斯威夫特:

request.merchantCapabilities = PKMerchantCapability.capability3DS

如果要用原始值实例化支持网络,请确保它们的大小写正确

// Summarized for posting purposes
let networks = ["AmEx", "Visa", "MasterCard", "Discover"].reduce(into: [PKPaymentNetwork]()) { $0.append(PKPaymentNetwork($1)) }

if PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: networks, capabilities: .capability3DS) {
    // Hooray
}

谢谢你。现在设备配置正确,我们在日常生活中使用它。canMakePayment返回True。谢谢,这很有帮助。我正在尝试使用Sanbox tester,详情如下:,但这不适用于我的案例。它总是给你零的价值me@MehulThakkar我也面临着同样的问题,无法让沙盒卡与英国地区合作,你解决了你的问题吗?这对我来说不起作用。我做了很多改变,但没有什么不起作用。