Swift Stripe Access DidCreateToken



我正试图使用Firebase-Cloud-Functions将Stripe集成到我的ios(Swift)应用程序中。现在我想把令牌拿到一张创建的卡上,把它保存到我的Firestore-Database中。

我已经学习了如何实现它的教程。当我自己显示addCardViewController时,它就起作用了,因为我有didCreateToken方法。但现在我只是像他们提供的例子中所示的那样向它展示programmatically(第158行是他们展示视图控制器的地方),我不知道如何实现这个方法,并获得新的卡if a user creates/add的令牌。

我通常就是这么做的:

func addCardViewController(_ addCardViewController: STPAddCardViewController, didCreateToken token: STPToken, completion: @escaping STPErrorBlock)
{
STRIPE_CUSTOMERS_REF.document(userId).collection("tokens").addDocument(data: ["token": tokenId]) // Calls Firebase-Cloud-Function and adds payment method to Stripe
navigationController?.popViewController(animated: true)
}

但正如我所说,我无法实现这种方法。

我想在用户添加新卡时获得令牌。

我真的很感激你的帮助。如果你需要任何其他信息,请告诉我。

-Marie

看起来像是使用STPPaymentContext(标准集成)来呈现STPPaymentMethodsViewController(上例中的第158行)。

CCD_ 10实际上实现了它自己的CCD_ 11和CCD_。因此,STPPaymentContext处理这两个视图控制器的委派方法,以及在使用标准集成时未向用户公开的委派方法。这就解释了为什么委托方法没有为您触发。

相反,您的视图控制器应该成为STPPaymentContext的委托,并实现所有必需的委托方法[0],包括paymentContextDidChange方法。每当用户添加新卡或选择新的支付方式时,就会触发paymentContextDidChange方法[1]。

当用户输入新卡的详细信息时,您应该能够通过以下内容获得代币ID:

func paymentContextDidChange(_ paymentContext: STPPaymentContext)
{
if let card = paymentContext.selectedPaymentMethod as? STPCard {
let token = card.stripeID
// store token as required
}
}

希望能有所帮助!

[0]https://stripe.github.io/stripe-ios/docs/Protocols/STPPaymentContextDelegate.html

[1]https://stripe.github.io/stripe-ios/docs/Protocols/STPPaymentMethod.html

相关内容

  • 没有找到相关文章

最新更新