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

Fem*_*ina 6 google-app-engine objective-c braintree ios applepay

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

我成功生成了一个客户端令牌,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];
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但它没有推动" PKPaymentAuthorizationViewController".跟踪它也不例外.

  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];
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    这给出了"vc" nil.

纠正我,如果这是错的.如何在真实设备上测试?

小智 10

您的应用的Apple Pay权利可能未正确设置.

当没有设置权利时,我注意到了canMakePayments返回YEScanMakePaymentsUsingNetworks:返回NO.

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

因此,要验证Apple Pay是否已针对您的应用进行配置,请确保目标设置的"功能"部分中的"Apple Pay"处于"开启"状态,并且它具有商家标识符(如果您有避风港,则需要设置该标识符)已经好了.

然后:

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