Я использовал этот учебник для интеграции оплаты в мое приложение:
https://www.raywenderlich.com/182-accepting-credit-cards-in-your-ios-app-using-stripe#
Но когда я выбираю «Готово» на STPAddCardViewController()
, приложение загружается и не не прекращать загрузку. Я добавил операторы print в расширение, показанное в руководстве, в надежде, что оно покажет мне, где код останавливается, но ни один из операторов print не был показан. Это показано ниже:
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)
}
}
}
}