如何使用Swift从STPPaymentMethodsViewController获取付款令牌?

时间:2018-07-03 06:04:34

标签: ios swift sdk stripe-payments

我正在使用STPPaymentMethodsViewController进行条纹付款。谁能帮助我如何从其委托方法获取付款令牌?

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 :(得分:0)

您将在didSelectPaymentMethod delegate function中获得付款方式。请注意,这只是用户选择的当前方法,而不是最终的方法-调用didFinish delegate function时,他们的选择是最终的。您应该将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来获取数据条ID,然后将其传递给后端并用作creating a charge时的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