3

我们正在创建 aPKPaymentRequest并将requiredBillingAddressFields属性设置为PKAddressFieldPostalAddress | PKAddressFieldPhone。系统强制执行地址要求,但忽略电话要求。(在这种情况下强制意味着,在用户填写字段之前,不允许 Apple Pay 交易继续进行。)

我们的应用程序不需要送货地址,但在调试时我们将requiredShippingAddressFields属性设置为PKAddressFieldPostalAddress | PKAddressFieldPhone并发现现在强制执行电话号码要求。

PKPaymentRequestor文档中没有任何PKAddressField内容表明这是预期的行为。关于如何解决这个问题的任何想法?

编辑 - 这是完整的方法:

+ (PKPaymentRequest *)newPayRequestFromBasket:(WFBasket *)basket
{
    PKPaymentRequest *request = [PKPaymentRequest new];
    request.supportedNetworks = [WFApplePayManager supportedPaymentNetworks];
    request.countryCode = [WFAppTargetDispatcher currentAppTarget].storeConfig.countryCode;
    request.currencyCode = [WFAppTargetDispatcher currentAppTarget].storeConfig.currencyCode;
    request.merchantIdentifier = [WFAppTargetDispatcher currentAppTarget].storeConfig.merchantIdentifier;
    request.merchantCapabilities = PKMerchantCapability3DS; // Support of 3DS is mandatory

    int64_t orderId = basket.orderId;
    request.applicationData = [NSData dataWithBytes:&orderId length:sizeof(orderId)];

    request.paymentSummaryItems = [WFApplePayManager allSummaryItemsFromBasket:basket];

    request.requiredBillingAddressFields = [WFApplePayManager requiredBillingFields]; // = PKAddressFieldPostalAddress | PKAddressFieldPhone

    return request;
}
4

2 回答 2

4

API 有点混乱,但账单地址就是这样——账单地址。它没有电话字段。如果你想获取用户的电话号码,你应该使用它requiredShippingAddressFields

于 2015-03-25T19:32:09.823 回答
0

如果您需要多个运输字段,那么 Swift 的文档并不多。这是执行此操作的代码。

斯威夫特 3

var pkAddress = PKAddressField()
pkAddress.insert(.name)
pkAddress.insert(.email)
request.requiredShippingAddressFields = pkAddress
于 2017-05-11T03:39:34.260 回答