ios - 一旦我在 STPAddCardViewController() 上选择完成,应用程序就会加载并且不会停止加载
问题描述
我使用本教程将支付集成到我的应用程序中:
https://www.raywenderlich.com/182-accepting-credit-cards-in-your-ios-app-using-stripe#
但是当我STPAddCardViewController()
在应用程序加载时选择完成并且不会停止加载。我在教程中显示的扩展中添加了打印语句,希望它能告诉我代码在哪里停止,但没有显示任何打印语句。如下所示:
extension OrderDetialsViewController: STPAddCardViewControllerDelegate {
func addCardViewControllerDidCancel(_ addCardViewController: STPAddCardViewController) {
print("addCard")
navigationController?.popViewController(animated: true)
}
private func addCardViewController(_ addCardViewController: STPAddCardViewController,
didCreateToken token: STPToken,
completion: @escaping STPErrorBlock) {
print("addCard Created Token")
var totalCost = 0
for i in 0...localData.shoppingCart.itemSizeArray.count-1{
if localData.shoppingCart.itemSizeArray[i] == "hd"{
totalCost = totalCost+2000
}
else if localData.shoppingCart.itemSizeArray[i] == "d"{
totalCost = totalCost+4000
}
else if localData.shoppingCart.itemSizeArray[i] == "free"{
totalCost = totalCost + 0
}
else if localData.shoppingCart.itemSizeArray[i] == "home" {
totalCost = totalCost + 500
}
}
StripeClient.shared.completeCharge(with: token, amount: totalCost) { result in
print("StripeClient")
switch result {
case .success:
completion(nil)
let alertController = UIAlertController(title: "Congrats on your order",
message: "Your payment was successful! Check email for confirmation!",
preferredStyle: .alert)
let alertAction = UIAlertAction(title: "OK", style: .default, handler: { _ in
self.navigationController?.popViewController(animated: true)
})
alertController.addAction(alertAction)
self.present(alertController, animated: true)
self.createOrderEmailBody()
self.createCustomerOrderBody()
self.changeUserRewardsScore()
case .failure(let error):
print(error)
completion(error)
}
}
}
}
解决方案
您使用的是什么版本的 iOS SDK?
如果是 v16.0.0 之后的版本,需要实现didCreatePaymentMethod
返回一个 PaymentMethod 对象的函数,该didCreateToken
方法已弃用。
您还必须实现 PaymentIntents,因为 PaymentMethods 只能与 PaymentIntents 一起使用,这是推荐的集成。
以下是有关如何在 iOS 应用程序中开始使用 PaymentMethods 和 PaymentIntents 的教程:https ://youtu.be/s5Ml41bZidw?t=57
推荐阅读
- list - 如何防止 Markdown 的列表吃空格?
- flutter - 颤抖每24小时自动更新一次Firebase的最佳方法是什么?
- angular - Angular 7响应式表单如何获取选定值的文本而不是下拉列表表单控件中的值
- elasticsearch - 文本中的短语之间有多少个单词?
- python - Maya python 地形生成器
- sonarqube - SonarQube 无法在 linux 中启动
- r - 将两个边距添加到 facet_grid 但不是组合
- oracle - 为 oracle db 创建 lucene 索引 - 性能
- java - Log4j 不在 Linux 服务器上工作,但在 Eclipse (Windows) 上工作
- checksum - 有没有人认出这些校验和/CRC/Reed-Solomon 等中的模式?