我在法国,试图在我的应用中弹出Apple Pay表。 当我在“设置”中设置法国默认送货地址时,它可以正常工作。 (然后我可以切换到美国地址)
当我在“设置”中设置美国默认送货地址时,它有时可以正常工作,但通常会失败。当它失败时,Apple Pay表单根本不显示。
(PKPaymentAuthorizationViewController
实例和PKPaymentRequest
实例是正确的,而不是nil
)
这很奇怪......
答案 0 :(得分:0)
以这种方式实现此委托方法不起作用
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
didSelectShippingContact:(PKContact *)contact
completion:(void (^)(PKPaymentAuthorizationStatus,
NSArray<PKShippingMethod *> * _Nonnull,
NSArray<PKPaymentSummaryItem *> * _Nonnull))completion{
completion(PKPaymentAuthorizationStatusSuccess, @[], _currentRequest.paymentSummaryItems);
}
(_currentRequest
是PKPaymentRequest
我用来弹出保存为实例属性的PKPaymentAuthorizationViewController
我无法解释,但在完成时设置PKPaymentAuthorizationStatusInvalidShippingPostalAddress
而不是PKPaymentAuthorizationStatusSuccess
会有效。
当我们调用完成时设置一个断点也将允许Apple Pay表显示。
但如果您仍希望在完成方法中返回PKPaymentAuthorizationStatusSuccess
,请按以下方式使用:
completion(PKPaymentAuthorizationStatusSuccess, nil, _currentRequest.paymentSummaryItems);
是的,将nil
值设置为nonnull
指定的参数将起作用!