PKPaymentAuthorizationViewController 不是零但没有显示

PKPaymentAuthorizationViewController not nil but not showing

我正在尝试显示一个 PKPaymentAuthorizationViewController,它不是零但没有显示。 我以前工作过,但现在不工作了。 权利和商家 ID 似乎不错。 这是我的初始化代码(没有无用的代码)

PKPaymentRequest *request = [PKPaymentRequest new];

request.merchantIdentifier = kApplePayMerchantId;
request.merchantCapabilities = PKMerchantCapability3DS;
request.supportedNetworks = self.class.supportedNetworks;
request.countryCode = _countryCode;
request.currencyCode = _currencyCode;
request.requiredShippingAddressFields = PKAddressFieldAll;
request.requiredBillingAddressFields = PKAddressFieldName | PKAddressFieldPostalAddress;
request.paymentSummaryItems = summaryItems;

PKPaymentAuthorizationViewController *paymentVC = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
paymentVC.delegate = self;
return paymentVC;

然后我用

显示它
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion;

但是没有任何反应。没有记录...

我尝试在 return paymentVC; 之前设置一个断点,打印这个对象(看起来没问题)然后按下播放,我得到了以下日志

Payment request is invalid: check your entitlements

apple pay 视图控制器出现并在 BAD ACCESS 错误中崩溃。

我真的不明白发生了什么。 你能帮我解决这个错误吗?

哇,经过一天的研究,我找到了。 如果您有一个默认的 Apple Pay 送货地址(在钱包条目中,设置中)带有无效字段(我不知道它的规则),Apple Pay sheet 将不会弹出... 所以请注意!

如果您使用 SandBox 卡然后您将货币和国家/地区设置为美国,则可能会出现其他问题

if PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: paymentNetworks) {
        let request = PKPaymentRequest()
        request.currencyCode = "USD"
        request.countryCode = "US"
        request.merchantIdentifier = "merchant.com.axiomc.beanbar"
        request.merchantCapabilities = PKMerchantCapability.capability3DS
        request.supportedNetworks = paymentNetworks
        request.paymentSummaryItems = [paymentItems]
        }
    }