我正在使用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)
那么如何使用其委托方法获取付款令牌,以便将该令牌发送到服务器?
预先感谢:)
答案 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