Использование Stripe API с пакетом Flutter Dio Flutter для добавления карт, способов оплаты, счетов - PullRequest
0 голосов
/ 03 апреля 2020

Noobi sh Dev здесь. Я разрабатываю приложение, которое включает в себя обработку платежей между клиентами и конкретной услугой, приложение будет брать плату и платить поставщику услуг напрямую на их банковские счета. Нужен действительно совет или, возможно, лучшая реализация.

В любом случае, просмотрев некоторые учебные пособия в Интернете, я разработал приложение, чтобы использовать собственную форму для обработки данных карточки клиента и отправки непосредственно в Stripes API с запросом скручивания. В этом случае, чтобы прикрепить карту к учетной записи клиента. Я считаю, что нашивка требует, чтобы приложения / веб-сайты были совместимы с PCI при обработке данных и не использовали настраиваемую обработку форм из-за боязни сохранения данных карты, поэтому я застрял в этом конкретном методе, который мы используем, напрямую взаимодействуя с API (я использую Dio ) не рекомендуется Stripe, как указано ниже.

Снимок экрана приложения:

enter image description here

Фрагмент кода (кстати, прекрасно работает):

Future<void> addCard(
      {int cardNumber,
      int month,
      int year,
      int cvc,
      String stripeId,
      String userId,
      String cardHolderName,
      String email}) async {
    Map body = {
      "type": "card",
      "card[number]": cardNumber,
      "card[exp_month]": month,
      "card[exp_year]": year,
      "card[cvc]": cvc,
      "billing_details[name]": cardHolderName,
      "billing_details[email]": email
    };
    dynamic stripeResponse;
    try {
      print('Successfully added payment method id $paymentMethodUrl');
      Dio dio = Dio();
      await dio
          .post(paymentMethodUrl,
              data: body,
              options: Options(
                  contentType: Headers.formUrlEncodedContentType,
                  headers: headers))
          .then((response) {
        print(response.data);
        stripeResponse = response;
        String paymentId = response.data['id'];
        Map stripeCustomer = {"customer": UserData.stripeID};
        try {
          dio
              .post('$paymentMethodUrl/$paymentId/attach',
                  data: stripeCustomer,
                  options: Options(
                      contentType: Headers.formUrlEncodedContentType,
                      headers: headers))
              .then((response) {
            print(response.data);
            print('Attached successfully');
          });
        } on DioError catch (e) {
        print('Error attaching card to customer: ${e.response.data['error']['message']}');
        }
      });
    } on DioError catch (e) {
      print(stripeResponse);
      print('Error adding card: ${e.response.data['error']['message']}');
    }
  }

https://stripe.com/docs/security#pci -dss-Guidelines

Самый простой способ быть PCI-совместимым в соответствии с рекомендациями Stripe:

Используйте одну из наших рекомендуемых интеграций платежей для сбора платежной информации , который безопасно передается непосредственно в Stripe без прохождения через ваши серверы

Безопасное обслуживание ваших платежных страниц с использованием Transport Layer Security (TLS), чтобы они использовали HTTPS

В любом случае я был бы признателен если кто-нибудь может дать мне какой-то совет по этому поводу или, может быть, я что-то неправильно понимаю, когда речь идет о соблюдении. Вместо этого я мог бы просто использовать Apple pay и Google pay, если этот вариант недопустим, поскольку я не хочу попадать в неприятности, если я не совместим с PCI из-за передачи данных карты.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...