Интеграция Stripe SDK с использованием Swift и Flutter

Я пытаюсь интегрировать Apple Pay в iOS с помощью флаттера. Я использую каналы метода для связи со Swift и завершения процесса оплаты. Я следовал документации, которая находится по этой ссылке.

Тем не менее, я считаю, что застрял в самой финальной части, в которой я не понимаю, как продолжить поток. Поскольку я использую интерфейсы флаттера, мне не нужны iOS ViewController.

Это код, который я пробовал до сих пор в AppDelegate.swift:

func handleApplePayButtonTapped(result: FlutterResult){
    let merchantIdentifier = "my.apple.merchant.id"
    let paymentRequest = Stripe.paymentRequest(withMerchantIdentifier:merchantIdentifier, country:"US", currency:"USD")
    paymentRequest.paymentSummaryItems = [
    PKPaymentSummaryItem(label:"Fancy Hat", amount:50.00),
    PKPaymentSummaryItem(label:"iHats, Inc", amount:50.00),
    ]

    if Stripe.canSubmitPaymentRequest(paymentRequest){
        //next steps ???
        result(String("Can submit payment request"))
    }else{
        result(String("Can't submit payment request"))
    }
}

Я вызываю этот код в пользовательском интерфейсе флаттера, используя этот код:

Future<void> _doPayment() async {
String returnMsg;
try {
  final bool result = await platform.invokeMethod('checkIfDeviceSupportsApplePay');
  if(result){
    final String status = await platform.invokeMethod('handleApplePayButtonTapped');
    print(status);
  }
  returnMsg = '$result';
} on PlatformException catch (e) {
  returnMsg = "Failed: '${e.message}'.";
}
print(returnMsg);}

У меня уже есть публикуемый ключ Stripe, а также серверная часть, развернутая на Heroku. Если вы проверили мой быстрый код, вы увидите, где я застрял в данный момент.

Как я понял поток, осталось сделать

  • отправить данные карты на сервер и получить токен
  • с помощью токена отправить реквизиты платежа на сервер Stripe

Я очень новичок в быстром языке, и образцы кода будут очень полезны для меня, чтобы продолжить.

Спасибо.


person Sajad Jaward    schedule 05.02.2019    source источник


Ответы (1)


Похоже, вы используете настраиваемую интеграцию Stripe с iOS, используя собственный PKPaymentAuthorizationViewController.

Вы должны прочитать шаги интеграции здесь: https://stripe.com/docs/mobile/ios/custom#apple-pay

По сути, ваши следующие шаги будут

  • создать экземпляр PKPaymentAuthorizationViewController с помощью paymentRequest
  • Назначьте себя его делегатом
  • представить PKPaymentAuthorizationViewController
  • реализовать соответствующие методы делегата, чтобы вернуть токен Apple Pay (PKToken)
  • конвертировать PKToken в STTPToken (токен Stripe)

Все эти и другие шаги подробно описаны по ссылке выше.

person hmunoz    schedule 05.02.2019
comment
Спасибо за разъяснение. Не могли бы вы предоставить пример реализации метода submitTokenToBackend()? это было бы очень полезно. - person Sajad Jaward; 06.02.2019
comment
@SajadJaward, это полностью зависит от того, как работает ваш клиент-сервер. Но в основном вы отправляете свой идентификатор токена на конечную точку на стороне сервера. Ваша конечная точка на стороне сервера проанализирует токен и создаст Charge on Stripe. А затем верните ответ на запрос вашего клиента, чтобы ваше приложение отображалось на стороне клиента. - person hmunoz; 02.09.2020