Способ оплаты вы получите в функции делегата 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