ios - 如何在真实设备上测试 Braintree + Apple Pay?

标签 ios objective-c google-app-engine braintree applepay

我正在为来自美国以外的美国客户开发一个使用 Apple Pay 的应用程序。我正在使用 Braintree + Apple Pay。我们支持真实信用卡到存折,但我们无法验证它们。

我成功生成了客户端 token ,self.braintree 并尝试了 BT 的两种集成方式。

  1. BTPaymentProvider - 我们对创建支付方式的抽象。

    if(self.braintree && ![self.braintree isKindOfClass:[NSNull class]])
    {
        self.provider = [braintree paymentProviderWithDelegate:self];
        if ([self.provider canCreatePaymentMethodWithProviderType:BTPaymentProviderTypeApplePay])
        {
            self.provider.paymentSummaryItems = @[[PKPaymentSummaryItem summaryItemWithLabel:@"XXXX" amount:[NSDecimalNumber decimalNumberWithString:@"1"]]];
        }
        [self.provider createPaymentMethod:BTPaymentProviderTypeApplePay];
    }
    

    但它没有推送“PKPaymentAuthorizationViewController”。也不异常(exception)地去追查。

  2. PassKit - Apple 的 ApplePay API。

    if([PKPaymentAuthorizationViewController canMakePayments]) // It returns TRUE
    {
        PKPaymentRequest *paymentRequest = [[PKPaymentRequest alloc] init];
        paymentRequest.countryCode = @"US";
        paymentRequest.currencyCode = @"USD";
        paymentRequest.merchantCapabilities = PKMerchantCapabilityEMV | PKMerchantCapability3DS;
        paymentRequest.merchantIdentifier = MERCHANTID;
        paymentRequest.supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
        paymentRequest.paymentSummaryItems = @[ [PKPaymentSummaryItem summaryItemWithLabel:@"TEST" amount:[NSDecimalNumber decimalNumberWithString:@"1"]] ];
    
        if([PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa]]) // Returns FALSE
        {
            PKPaymentAuthorizationViewController *vc = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:paymentRequest];
            vc.delegate = self;
            [self presentViewController:vc animated:YES completion:nil];
        }
    }
    

    这给出“vc”是nil

如有不妥请指正。如何在真实设备上进行测试?

最佳答案

很可能是您的应用的 Apple Pay 权利设置不正确。

我注意到 canMakePayments 返回 YES 并且 canMakePaymentsUsingNetworks: 在未设置权利时返回 NO

(我还注意到,当您在 PKPaymentRequest 上设置的商家 ID 与您的 Apple Pay 权利的商家 ID 不匹配时,它们都可以返回 YES。在这种情况下,您的 PKPaymentAuthorizationViewController 将是非零的,但显示它会在控制台中记录一个神秘的错误。

因此,要验证您的应用是否配置了 Apple Pay,请确保目标设置的功能部分中的“Apple Pay”处于“开启”状态,并且它具有商户标识符(如果需要,则需要 set up你还没有)。

然后要么:

  • 如果使用您的 BTPaymentProvider 集成方法,请确保在 Braintree 控制面板中正确设置了证书和商户标识符。
  • 如果使用直接 PassKit 集成方法,请确保将 merchantIdentifier 属性设置为权利中匹配的商家标识符。

关于ios - 如何在真实设备上测试 Braintree + Apple Pay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28090069/

相关文章:

ios - 覆盖 UILabel 的布局以添加带有手势处理的 subview

ios - 需要有关 ARC 概念的帮助

java - 在 Google App Engine 上使用 log4j

java - 此 API 不支持解析表单编码的输入

Java - Google App Engine - UTF-8 编码问题

iOS Swift 相机模式-如何指示照片已拍摄

ios - 自定义 UIScrollView 类中的 UIButton 不响应触摸

ios - 为什么我的 UIGraphicsImageRenderer 没有绘图 (iOS 10)?

ios - 在 UITableView 中更改 AVPlayer 的 playerItem

objective-c - CoreData,单独线程上的子 MOC,意外 : error: NULL _cd_rawData but the object is not being turned into a fault