What behaviour is pereferable for Apple Pay button if no cards in the wallet?

谁说胖子不能爱 提交于 2019-12-11 17:12:59

问题


I was looked through the apple guidelines but did not found anything about this question.

Additional info:

I have added Apple Pay button to app and hide it if there are no capabilities (e.g., cards) to pay with. But customer does not like it and wants some other approach. I think we may open wallet like asking user to add a card, but I am not sure what Apple guidelines think about it.

Is there any explicit recommendation about it?


回答1:


Here is Apple's guidelines on implementing Apple Pay.

Here is the relevant section: Using PKPaymentAuthorizationViewController methods

If canMakePayments returns NO, the device does not support Apple Pay. Do not display the Apple Pay button. Instead, fall back to another method of payment.

If canMakePayments returns YES but canMakePaymentsUsingNetworks: returns NO, the device supports Apple Pay, but the user has not added a card for any of the requested networks. You can, optionally, display a payment setup button, prompting the user to set up his or her card. As soon as the user taps this button, initiate the process of setting up a new card (for example, by calling the openPaymentSetup method).

To create an Apple Pay–branded button for initiating payment request on iOS 8.3 or later, use the PKPaymentButton class.

From the PKPaymentButton docs:

Provides a button that is used either to trigger payments through Apple Pay or to prompt the user to set up a card.

You can initialize it with a type setUp.

When the user taps this button, call 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()
  }

}


来源:https://stackoverflow.com/questions/51727723/what-behaviour-is-pereferable-for-apple-pay-button-if-no-cards-in-the-wallet

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!