【问题标题】:How do i get Payment Token from STPPaymentMethodsViewController using Swift?如何使用 Swift 从 STPPaymentMethodsViewController 获取付款令牌?
【发布时间】:2018-12-11 08:32:12
【问题描述】:

我使用 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)

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

提前致谢:)

【问题讨论】:

  • 你可以实现它的委托方法
  • 我已经实现了它的委托方法,但是哪个委托方法可以用来获取支付令牌? @RahulGUsai
  • 使用stripe.github.io/stripe-ios/docs/Protocols/…stpaddcardviewcontroller
  • 你能再读一遍我的问题吗?我使用的是 STPPaymentMethodsViewController 而不是 STPAddCardViewController。 @RahulGUsai
  • 是的,我已经仔细阅读了你的问题,这就是为什么我给你文档链接,使用 stpaddcardview 控制器你可以获得令牌,因为它的委托方法返回令牌请参考我给出的文档链接

标签: ios swift sdk stripe-payments


【解决方案1】:

您将在didSelectPaymentMethoddelegate 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,然后您可以将其传递给您的后端并用作 @ 987654329@参数当creating a charge:

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

【讨论】:

  • 感谢@karllekko 的回复。我知道这件事。现在你能告诉 selectedPaymentMethod 我如何生成我想发送到服务器的最终支付令牌吗?
  • @SagarUnagar 我已经编辑了答案。基本上你想转换 STPPaymentMethod,然后获取 stripeId 属性,你可以使用它来创建负责人。
  • 感谢@karllekko 的编辑!你能告诉我如何生成支付令牌而不是卡令牌吗?我的后端服务器需要支付令牌。
  • @SagarUnagar 你所说的支付令牌是什么意思?
  • 支付令牌看起来像tok_1CjW4EL6UpNJN4PNnpNNA8Q3,卡令牌看起来像card_1Cjn4fLCkY2Mr3fjQKLeuiUA。我需要看起来像 tok_1CjW4EL6UpNJN4PNnpNNA8Q3 的最终付款令牌。
猜你喜欢
  • 1970-01-01
  • 2017-03-25
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2023-03-10
  • 1970-01-01
  • 2017-01-26
相关资源
最近更新 更多