Как получить токен оплаты из STPPaymentMethodsViewController с помощью Swift? - PullRequest
0 голосов
/ 03 июля 2018

Я использую STPPaymentMethodsViewController для оплаты Stripe. Может кто-нибудь помочь мне, как я могу получить токен оплаты от его метода делегата?

let paymentMethodViewController = STPPaymentMethodsViewController(configuration: STPPaymentConfiguration.shared(),
                                                                 theme: STPTheme.default(),
                                                                 customerContext: self.customerContext,
                                                                 delegate: self)
let navigationController = UINavigationController(rootViewController: paymentMethodViewController)
self.present(navigationController, animated: true, completion: nil)

Итак, как я могу получить токен оплаты, используя метод делегата, чтобы я мог отправить этот токен на мой сервер?

Заранее спасибо:)

1 Ответ

0 голосов
/ 03 июля 2018

Способ оплаты вы получите в функции делегата didSelectPaymentMethod . Обратите внимание, что это только текущий метод, который выбрал пользователь, а не последний - его выбор является окончательным при вызове вашей didFinish функции делегата . Вам следует сохранить способ оплаты из didSelect в локальной переменной и использовать его только после завершения работы пользователя с STPPaymentsMethodViewController.

Как очень грубый контур:

class MyVC: UIViewController{
  var currentPaymentMethod: STPPaymentMethod?

  ....

  extension MyVC: STPPaymentMethodsViewControllerDelegate {
        ...

        func paymentMethodsViewController(_ paymentMethodsViewController: STPPaymentMethodsViewController, didSelect paymentMethod: STPPaymentMethod) {
            print("didSelectPaymentMethod")
            currentPaymentMethod = paymentMethod
        }

        func paymentMethodsViewControllerDidFinish(_ paymentMethodsViewController: STPPaymentMethodsViewController) {
           self.navigationController?.popViewController(animated: true)
        }
  }
}

Когда у вас есть способ оплаты, и ваш пользователь завершил процесс оформления заказа и готов заплатить, вы можете разыграть STPPaymentMethod, чтобы получить идентификатор полосы, который затем вы можете передать своему бэкэнду и использовать в качестве source параметр при создании заряда :

var paymentStripeId: String?
if let source = paymentMethod as? STPSource {
    paymentStripeId = source.stripeID
}else if let card = paymentMethod as? STPCard {
    paymentStripeId = card.stripeID
}
// pass paymentStripeId to your backend
...