Не удалось загрузить pushPaymentOptionsViewController в Stripe - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь внедрить платежи 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?

...