首页 > 解决方案 > 如何使用 Swift 从 STPPaymentMethodsViewController 获取付款令牌?

问题描述

我正在使用STPPaymentMethodsViewControllerStripe 付款。谁能帮助我如何从其委托方法中获取付款令牌?

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)

那么如何使用其委托方法获取支付令牌,以便我可以将该令牌发送到我的服务器?

提前致谢 :)

标签: iosswiftsdkstripe-payments

解决方案


您将在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)
        }
  }
}

一旦您有了付款方式,并且您的用户完成了结帐流程并准备付款,您就可以转换 以获取条带 ID,然后您可以将其传递给您的后端并在创建费用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

推荐阅读