【发布时间】:2019-12-26 18:36:48
【问题描述】:
Apple Pay 在模拟器中运行良好,但将 Xcode 升级到 10.4 后停止运行。
- Apple Pay 弹出窗口出现。
点击密码支付后,不验证支付就隐藏了。
方法
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion {}没有被调用。
代码:
NSString *merchantIdentifier = [STPPaymentConfiguration sharedConfiguration].appleMerchantIdentifier;
PKPaymentRequest *paymentRequest = [Stripe paymentRequestWithMerchantIdentifier:merchantIdentifier country:@"US" currency:currencyCode];
paymentRequest.paymentSummaryItems = @[
[PKPaymentSummaryItem summaryItemWithLabel:@"Fancy Hat" amount:[NSDecimalNumber decimalNumberWithString:amount]],
// The final line should represent your company;
// it'll be prepended with the word "Pay" (i.e. "Pay iHats, Inc $50")
[PKPaymentSummaryItem summaryItemWithLabel:@"iHats, Inc" amount:[NSDecimalNumber decimalNumberWithString:amount]],
];
if ([Stripe canSubmitPaymentRequest:paymentRequest]) {
// Setup payment authorization view controller
PKPaymentAuthorizationViewController *paymentAuthorizationViewController = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:paymentRequest];
paymentAuthorizationViewController.delegate = self;
// Present payment authorization view controller
FlutterViewController* controller = (FlutterViewController* )[[UIApplication sharedApplication].keyWindow rootViewController];
[controller presentViewController:paymentAuthorizationViewController animated:YES completion:nil];
}
【问题讨论】:
-
更新到 Xcode 10.3 后出现完全相同的问题。注意到
didAuthorizePayment方法的签名已更改为func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, handler completion: @escaping (PKPaymentAuthorizationResult) -> Void),并标记为iOS11+。但是更改为新签名对我没有帮助。
标签: ios objective-c stripe-payments applepay