我正在为来自美国以外的美国客户开发一个使用 Apple Pay 的应用程序。我正在使用 Braintree + Apple Pay。我们支持真实信用卡到存折,但我们无法验证它们。
我成功生成了客户端 token ,self.braintree
并尝试了 BT 的两种集成方式。
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)地去追查。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/