PKPaymentRequest不强制执行帐单地址的电话要求

时间:2015-03-25 16:46:20

标签: ios applepay

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

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

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

编辑 - 这是完整的方法:

+ (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;
}

2 个答案:

答案 0 :(得分:3)

API有点混乱,但帐单地址就是 - 帐单邮寄地址。它没有电话领域。如果您想获取用户的电话号码,请改为使用requiredShippingAddressFields

答案 1 :(得分:0)

如果您需要多个运输领域,那么Swift的文档就不多了。这是执行此操作的代码。

Swift 3

var pkAddress = PKAddressField()
pkAddress.insert(.name)
pkAddress.insert(.email)
request.requiredShippingAddressFields = pkAddress