Я пытаюсь внедрить платежи Stripe в своем приложении для iOS, но по какой-то причине pushPaymentOptionsVewController Stripe по умолчанию, позволяющий пользователю выбрать способ оплаты, выдвигается, но продолжает загружаться и не отображается. Однако pushShippingViewController работает просто отлично.
Я использую облачные функции Google для своих функций createStripeCustomer и createEphemeralKey. Я настроил свою функцию createCustomerKey в своем StripeApi.swift. Мне не удалось найти решение этой проблемы, поскольку оно не вызывает ошибок, и код был написан в соответствии с документацией Stripe.
//StripeApi
let StripeApi = _StripeApi()
class _StripeApi: NSObject, STPCustomerEphemeralKeyProvider {
func createCustomerKey(withAPIVersion apiVersion: String, completion: @escaping STPJSONResponseCompletionBlock) {
let data = [
"stripe_version": apiVersion,
"customer_id" : UserService.user.stripeId
]
Functions.functions().httpsCallable("createEphemeralKey").call(data) { (result, error) in
if let error = error {
debugPrint(error.localizedDescription)
completion(nil, error)
return
}
guard let key = result?.data as? [String: Any] else {
completion(nil, nil)
return
}
completion(key, nil)
}
}
}
//CheckOutVC
func setupStripeConfig() {
let config = STPPaymentConfiguration.shared()
config.createCardSources = true
config.requiredBillingAddressFields = .none
config.requiredShippingAddressFields = [.postalAddress]
let customerContext = STPCustomerContext(keyProvider: StripeApi)
paymentContext = STPPaymentContext(customerContext: customerContext, configuration: config, theme: .default())
paymentContext.paymentAmount = StripeCart.total
paymentContext.delegate = self
paymentContext.hostViewController = self
}
@IBAction func payementMethodClicked(_ sender: Any) {
// vc is pushed but won't stop loading
paymentContext.pushPaymentOptionsViewController()
}
@IBAction func shippingMethodClicked(_ sender: Any) {
// this is working and showing up nicely
paymentContext.pushShippingViewController()
}
Я, очевидно, ожидаю, что pushPaymentOptionsViewController завершит загрузку и отобразится. Но viewController просто покажет синий индикатор вращения и кнопку отмены.
РЕДАКТИРОВАТЬ: Кто-нибудь знает, если это ошибка в последней версии Stripe?