Swift Stripe Access DidCreateToken - PullRequest
       41

Swift Stripe Access DidCreateToken

0 голосов
/ 25 декабря 2018

Я пытаюсь интегрировать Stripe в мое приложение ios (Swift) с помощью Firebase-Cloud-Functions.Теперь я хочу передать токен на созданную карту, чтобы сохранить его в моем Firestore-Database.

Я следовал этому учебнику о том, как его реализовать.Это работает, когда я показываю свой addCardViewController самостоятельно, так как у меня есть метод didCreateToken.Но теперь, когда я просто показываю это programmatically, как показано в предоставленном им примере (строка 158 - там, где они показывают контроллер представления), я не знаю, как реализовать этот метод и получитьтокен карты if a user creates/add sa новый.

Вот что обычно делает Id:

func addCardViewController(_ addCardViewController: STPAddCardViewController, didCreateToken token: STPToken, completion: @escaping STPErrorBlock)
{
    STRIPE_CUSTOMERS_REF.document(userId).collection("tokens").addDocument(data: ["token": tokenId]) // Calls Firebase-Cloud-Function and adds payment method to Stripe
    navigationController?.popViewController(animated: true)
}

Но, как я сказал, я не могу реализовать этот метод.

Я хочу получить токен, когда пользователь добавляет новую карту.

Я действительно ценю любую помощь.Если вам нужна дополнительная информация, дайте мне знать.

-Marie

1 Ответ

0 голосов
/ 25 декабря 2018

Похоже, вы используете STPPaymentContext (стандартная интеграция) для представления STPPaymentMethodsViewController (строка 158 в приведенном выше примере).

STPPaymentContext фактически реализует свои собственные экземпляры STPPaymentMethodsViewController и STPAddCardViewController.Поэтому STPPaymentContext обрабатывает методы делегата для этих двух контроллеров представления, которые не предоставляются пользователю при использовании стандартной интеграции.Это объясняет, почему этот метод делегата не запускается для вас.

Вместо этого ваш контроллер представления должен стать делегатом для STPPaymentContext и реализовать все необходимые методы делегата [0], включая метод paymentContextDidChange.paymentContextDidChange метод запускается всякий раз, когда пользователь добавляет новую карту или выбирает новый способ оплаты [1].

Когда пользователь вводит новые данные карты, вы должны иметь возможность получить идентификатор токена со следующим:

func paymentContextDidChange(_ paymentContext: STPPaymentContext)
{
    if let card = paymentContext.selectedPaymentMethod as? STPCard {
        let token = card.stripeID
        // store token as required
    }
}

Надеюсь, это поможет!

[0] https://stripe.github.io/stripe-ios/docs/Protocols/STPPaymentContextDelegate.html

[1] https://stripe.github.io/stripe-ios/docs/Protocols/STPPaymentMethod.html

...