gpt4 book ai didi

Swift Stripe 访问 DidCreateToken

转载 作者:行者123 更新时间:2023-11-28 05:48:06 25 4
gpt4 key购买 nike


我正在尝试使用 Firebase-Cloud-Functions 将 Stripe 集成到我的 ios (Swift) 应用程序中。现在我想将 token 获取到已创建的卡中,以将其保存到我的 Firestore-Database 中。

我关注了this tutorial关于如何实现它。当我自己显示我的 addCardViewController 时它可以工作,因为我有方法 didCreateToken。但现在我只是像他们提供的 example 中那样以编程方式 显示它(第 158 行是他们显示 View Controller 的地方)我不知道如何实现此方法并获取卡片的 token 如果用户创建/添加新卡片。

这就是我通常做的:

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)
}

但是就像我说的,我无法实现这个方法。

我想在用户添加新卡时获取 token 。

我非常感谢任何形式的帮助。如果您需要任何其他信息,请告诉我。

-玛丽

最佳答案

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

STPPaymentContext 实际上实现了它自己的 STPPaymentMethodsViewControllerSTPAddCardViewController 实例。因此,STPPaymentContext 处理这两个 View Controller 的委托(delegate)方法,并且在使用标准集成时不会向用户公开这些方法。这就解释了为什么该委托(delegate)方法没有为您触发。

相反,您的 View Controller 应该成为 STPPaymentContext 的委托(delegate)并实现所有必需的委托(delegate)方法 [0],包括 paymentContextDidChange 方法。paymentContextDidChange 方法在用户添加新卡或选择新支付方式时触发 [1]。

当用户输入新卡的详细信息时,您应该能够通过以下方式获取 token 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

关于Swift Stripe 访问 DidCreateToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53924470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com