我试图通过使用Swift将Stripe集成到我的ios ( Firebase-Cloud-Functions )应用程序中。现在,我想将令牌保存到创建的卡中,以便将其保存到我的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
发布于 2018-12-25 18:43:49
看起来您使用STPPaymentContext (标准集成)来表示STPPaymentMethodsViewController (上面示例中的第158行)。
STPPaymentContext实际上实现了自己的STPPaymentMethodsViewController和STPAddCardViewController实例。因此,STPPaymentContext处理这两个视图控制器的委托方法,这些方法在使用标准集成时不会公开给用户。这解释了为什么该委托方法没有为您触发。
相反,视图控制器应该成为STPPaymentContext的委托,并实现所有必需的委托方法,包括paymentContextDidChange方法。每当用户添加新卡或选择新的支付方法1时,就会触发paymentContextDidChange方法。
当用户输入新的卡详细信息时,您应该能够使用以下内容获得令牌ID:
func paymentContextDidChange(_ paymentContext: STPPaymentContext)
{
if let card = paymentContext.selectedPaymentMethod as? STPCard {
let token = card.stripeID
// store token as required
}
}希望这能帮上忙!
https://stackoverflow.com/questions/53924470
复制相似问题