Swift fetch stripeId из paymentContextDidChange - PullRequest
1 голос
/ 27 мая 2020

Я просто пытаюсь получить идентификатор платежа для выбранного метода оплаты из presentPaymentOptionsViewController, но selectedPaymentOption не имеет вызова paymentId или stripeId. Как мне его получить? (Когда я распечатываю selectedPaymentOption, он показывает мне все данные из STPPaymentMethod и stripeId, который я пытаюсь получить.

Представление вариантов оплаты

var paymentContext: STPPaymentContext?

        let db = Firestore.firestore()
        db.collection("stripe_customers").document(uid).getDocument { (snapshot, error) in

            let customerId = snapshot?["customer_id"] as? String ?? ""
            let accountId = snapshot?["account_id"] as? String ?? ""

            let customerContext = STPCustomerContext(keyProvider: StripeAPI(customerId: customerId))
            paymentContext = STPPaymentContext(customerContext: customerContext)
            paymentContext!.delegate = self
            paymentContext!.hostViewController = self
            paymentContext!.presentPaymentOptionsViewController()
        }
    }

PaymentContextDidChange

func paymentContextDidChange(_ paymentContext: STPPaymentContext) {
        let selectedPaymentOption = paymentContext.selectedPaymentOption
        print(selectedPaymentOption)
    }

1 Ответ

1 голос
/ 26 июня 2020

После попытки привести paymentContext.selectedPaymentOption к многочисленным типам, я остановился на следующем. Трансляция в STPPaymentMethod работает как минимум для типов карт.

func paymentContextDidChange(_ paymentContext: STPPaymentContext) {
    
    if let paymentMethod = paymentContext.selectedPaymentOption as? STPPaymentMethod {
        let paymentMethodId = paymentMethod.stripeId
        let paymentOption = paymentContext.selectedPaymentOption
        
        //do what you need to do here...
    }
}
...