ios - 无法从 PKPaymentAuthorizationViewController 委托方法 didSelectShippingContact 中的 PKContact 访问电话号码、名字、街道
问题描述
我正在使用 PKPaymentAuthorizationViewController 及其委托方法集成 Apple Pay。当用户更改地址时,将触发以下委托方法:
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didSelectShippingContact:(PKContact *)contact completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray<PKShippingMethod *> *shippingMethods, NSArray<PKPaymentSummaryItem *> *summaryItems))completion
当我尝试从“联系人”访问电话号码时,它始终为空,名称(名字、姓氏等)也为空。但是所选的运输联系人具有所有信息,例如姓名、电话号码、邮政地址。
PKPaymentRequest *pkPaymentRequest = [[PKPaymentRequest alloc] init];
pkPaymentRequest.merchantIdentifier = merchantId;
pkPaymentRequest.supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, PKPaymentNetworkDiscover];
pkPaymentRequest.merchantCapabilities = PKMerchantCapability3DS;
pkPaymentRequest.countryCode = @"US";
pkPaymentRequest.currencyCode = @"USD";
pkPaymentRequest.requiredShippingContactFields = [NSSet setWithArray:@[PKContactFieldPostalAddress, PKContactFieldName, PKContactFieldPhoneNumber]];
在下面的屏幕截图中找到调试信息,显示 PKContact 对象“联系人”缺少所需的信息。
解决方案
我找到了解决方案,希望这可以帮助像我这样的人。
上面的链接提示我无法在委托方法“didSelectShippingContact”中获取完整的地址信息,而是仅在用户使用委托方法“didAuthorizePayment”中的 Touch ID、Face ID 或密码授权付款后提供'。这里我们有一个 PKPayment(付款)对象,该对象包含我需要进一步处理以完成付款交易的所有地址/联系字段。
推荐阅读
- android - 将 listviewBuilder 包装在 Column 内?
- php - 如何在 PHP 7 中从一个页面重定向到另一个页面?
- android - CMake FetchContent 多次下载外部依赖项
- r - BayesFactor anovaBF 语法
- r - keep the returned matrix after indexing as a vector
- python - 使用 pandas_udf 和 Parquet 序列化时内存泄漏?
- sql - 如何唯一显示 SQL
- php - Restrict checkout shipping state in Woocommerce
- flutter - How to convert duration format ( dd HH mm ) to linera minutes in flutter?
- javascript - 使用流将值类型分配给解构对象