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]
}
}
我正在尝试显示一个 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]
}
}