【问题标题】:Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment requestApple pay PKPaymentauthorizationViewController 在加载支付请求时总是返回 nil
【发布时间】:2015-10-10 03:04:59
【问题描述】:

我将 PK Payment auth 视图控制器实例返回为 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];
    }
}

【问题讨论】:

    标签: ios objective-c applepay


    【解决方案1】:

    如果您要实例化具有原始值的支持网络,请确保它们以正确的大小写进行。

    // 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
    }
    

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题。看起来您已将其包含在内,但对于其他为此苦苦挣扎的人,我的问题最初不是为请求提供商人能力。

      斯威夫特:

      request.merchantCapabilities = PKMerchantCapability.capability3DS
      

      https://developer.apple.com/documentation/passkit/pkmerchantcapability?language=objc

      【讨论】:

        【解决方案3】:

        在访问PKPaymentAuthorizationViewController 之前,您应该在您的 iPhone 设备上正确配置 Apple Pay。如果您尚未在您的设备上配置 Apple Pay,您将获得 nilPKPaymentAuthorizationViewController 值。你甚至可以在控制台上找到一个异常声明“This device cannot make payment.

        要在您的设备上配置 Apple Pay,请按照以下步骤操作:

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

        希望这会有所帮助。

        【讨论】:

        • 感谢 pradeep。现在设备配置正确,我们在日常生活中使用它。 canMakePayment 返回 True。
        • 谢谢,很有帮助。
        • 我正在尝试使用 Sanbox 测试仪,详情如下:developer.apple.com/support/apple-pay-sandbox,但这不适用于我的情况。它总是给我零价值
        • @MehulThakkar 我也遇到了同样的问题,沙盒卡无法在英国地区使用,您的问题解决了吗?
        • 这对我不起作用。我做了很多更改,但没有任何改变。
        猜你喜欢
        • 2015-09-16
        • 1970-01-01
        • 2021-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-09
        • 2015-08-16
        相关资源
        最近更新 更多