【问题标题】:Unable to present Apple Pay Authorization Controller无法出示 Apple Pay 授权控制器
【发布时间】:2017-07-07 09:43:01
【问题描述】:

当我尝试使用 present(completion: _) 显示 PKPaymentAuthorizationController 时,它会失败,没有任何进一步的信息。

我是这样介绍它的:

let paymentSummaryItems: [PKPaymentSummaryItem] = <HIDDEN>

let paymentRequest = PKPaymentRequest()
paymentRequest.paymentSummaryItems = paymentSummaryItems
paymentRequest.merchantIdentifier = <HIDDEN>
paymentRequest.merchantCapabilities = .capability3DS
paymentRequest.countryCode = "US"
paymentRequest.currencyCode = "USD"
paymentRequest.supportedNetworks = [.visa, .amex, .masterCard, .discover]
paymentRequest.requiredShippingAddressFields = [.email]

let paymentController = PKPaymentAuthorizationController(paymentRequest: paymentRequest)
paymentController.delegate = self

paymentController.present { success in
    if success {
      print("Presented payment controller")
    } else {
      print("Failed to present payment controller")
    }
}

每次尝试时,我都会收到“无法提供支付控制器”的消息,并且没有出现 Apple Pay 授权模式。

我添加了PKPaymentAuthorizationController.canMakePayments() 检查,结果返回 true。我不确定可能出了什么问题。相同的代码(使用不同的merchantIdentifier)在我的其他 Apple Pay 项目中运行没有问题。

【问题讨论】:

    标签: swift swift3 ios10 applepay ios10.2


    【解决方案1】:

    如果您在PKPaymentRequest 对象的任何属性中有拼写错误,则会导致此行为。请仔细检查以下属性是否正确:

    • merchantID 应与 Capabilities 中的商家 ID 匹配。
    • currencyCode 应该是三个字母的 ISO 4217 货币代码。
    • countryCode 应该是两个字母的 ISO 3166 国家代码。
    • decimalNumbers 在 paymentSummaryItems 中

    就我而言,我只是尝试使用硬编码的 MercerID 测试该功能,结果发现拼写错误。在这种情况下,PKPaymentRequestPKPaymentAuthorizationController(或 PKPaymentAuthorizationViewController)将被成功初始化,但当您展示控制器时,它根本不会出现。

    【讨论】:

      【解决方案2】:

      我想通了,对于以后遇到此问题的任何人。

      事实证明,我的 PKPaymentSummaryItems 数组中的一个 NSDecimalNumbers 存在问题,它没有正确转换为小数并导致 amount 被设置为 NaN。一旦我修复它,控制器就会正确显示。

      【讨论】:

        【解决方案3】:

        我使用以下步骤修复了它:其中 1 个可能是正确答案。

        • 在 App 目标功能中,启用 Apple wallet 和 Apple pay
        • 在 Apple 支付列表中包含正确的商家 ID
        • 更改权利中的商家 ID
        • 如果配置中出现任何错误,请启用“自动管理签名”配置文件(取消选中/检查是否需要。)

        【讨论】:

          猜你喜欢
          • 2019-02-03
          • 2018-10-23
          • 2016-03-07
          • 2016-08-02
          • 2018-01-17
          • 2019-03-15
          • 2013-08-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多