0

我查看了苹果指南,但没有发现任何关于这个问题的信息。

附加信息:

我已将 Apple Pay 按钮添加到应用程序,如果没有可用于支付的功能(例如卡),则将其隐藏。但是客户不喜欢它并想要其他方法。我认为我们可能会像要求用户添加卡一样打开钱包,但我不确定 Apple 指南对此有何看法。

有没有关于它的明确建议?

4

1 回答 1

4

以下是 Apple关于实施 Apple Pay 的指南。

这是相关部分:使用PKPaymentAuthorizationViewController方法

如果canMakePayments返回NO,则设备不支持 Apple Pay。不要显示 Apple Pay 按钮。相反,请退回到另一种付款方式。

如果canMakePayments返回YEScanMakePaymentsUsingNetworks:返回NO,则设备支持 Apple Pay,但用户尚未为任何请求的网络添加卡。您可以选择显示支付设置按钮,提示用户设置他或她的卡。用户点击此按钮后,立即开始设置新卡的过程(例如,通过调用 openPaymentSetup 方法)。

要在 iOS 8.3 或更高版本上创建用于发起支付请求的 Apple Pay 品牌按钮,请使用PKPaymentButton类。

从 PKPaymentButton 文档:

提供一个按钮,用于通过 Apple Pay 触发付款或提示用户设置卡。

您可以使用 type 对其进行初始化setUp

当用户点击此按钮时,调用openPaymentSetup

 override func viewDidLoad() {
    super.viewDidLoad()

    var applePayButton: PKPaymentButton?
    if !PKPaymentAuthorizationViewController.canMakePayments() {
      // Apple Pay not supported
      return
    }
    if !PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: [.masterCard]) {
      // Apple Pay supported and payment not setup
      applePayButton = PKPaymentButton.init(paymentButtonType: .setUp, paymentButtonStyle: .black)
      applePayButton?.addTarget(self, action: #selector(self.setupPressed(_:)), for: .touchUpInside)
    } else {
      // Apple Pay supported and payment setup
      applePayButton = PKPaymentButton.init(paymentButtonType: .buy, paymentButtonStyle: .black)
      applePayButton?.addTarget(self, action: #selector(self.payPressed(_:)), for: .touchUpInside)
    }

    applePayButton?.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(applePayButton!)
    applePayButton?.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
    applePayButton?.widthAnchor.constraint(equalToConstant: 200).isActive = true
    applePayButton?.heightAnchor.constraint(equalToConstant: 60).isActive = true
    applePayButton?.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -20).isActive = true

  }

  @objc func payPressed(_ sender: PKPaymentButton){
    // Start payment
  }

  @objc func setupPressed(_ sender: PKPaymentButton){
    let passLibrary = PKPassLibrary()
    passLibrary.openPaymentSetup()
  }

}
于 2018-08-07T14:21:27.773 回答