Apple Pay弹出窗口未显示特定的默认送货地址

时间:2016-02-09 14:56:06

标签: ios objective-c applepay

我在法国,试图在我的应用中弹出Apple Pay表。 当我在“设置”中设置法国默认送货地址时,它可以正常工作。 (然后我可以切换到美国地址)

当我在“设置”中设置美国默认送货地址时,它有时可以正常工作,但通常会失败。当它失败时,Apple Pay表单根本不显示。 (PKPaymentAuthorizationViewController实例和PKPaymentRequest实例是正确的,而不是nil

这很奇怪......

1 个答案:

答案 0 :(得分:0)

发现它! 它与具体地址无关!

以这种方式实现此委托方法不起作用

- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                  didSelectShippingContact:(PKContact *)contact
                                completion:(void (^)(PKPaymentAuthorizationStatus,
                                                     NSArray<PKShippingMethod *> * _Nonnull,
                                                     NSArray<PKPaymentSummaryItem *> * _Nonnull))completion{
    completion(PKPaymentAuthorizationStatusSuccess, @[], _currentRequest.paymentSummaryItems);
}

_currentRequestPKPaymentRequest我用来弹出保存为实例属性的PKPaymentAuthorizationViewController

我无法解释,但在完成时设置PKPaymentAuthorizationStatusInvalidShippingPostalAddress而不是PKPaymentAuthorizationStatusSuccess会有效。 当我们调用完成时设置一个断点也将允许Apple Pay表显示。

但如果您仍希望在完成方法中返回PKPaymentAuthorizationStatusSuccess,请按以下方式使用:

completion(PKPaymentAuthorizationStatusSuccess, nil, _currentRequest.paymentSummaryItems);

是的,将nil值设置为nonnull指定的参数将起作用!