首页 > 解决方案 > 使用带 Flutter Dio 包 Flutter 的 Stripe API 添加卡、支付方式、账户

问题描述

Noobish Dev 在这里。我正在开发一个涉及处理客户和特定服务之间付款的应用程序,该应用程序会收取费用并将服务提供商直接支付给他们的银行账户。寻找真正的建议或者更好的实施。

无论如何,在在线观看了一些教程后,我开发了该应用程序以使用我自己的表单来处理客户卡数据并使用 curl 请求直接发送到 Stripes API。在这种情况下,将卡附加到客户帐户。我发现条纹要求应用程序/网站在处理数据时符合 PCI 标准,并且由于担心保留卡数据而不使用自定义表单处理,这让我陷入困境,因为我们通过直接与 API 交互来使用这种特殊方法(我正在使用Stripe 不推荐Dio ),如下所示。

应用截图:

在此处输入图像描述

代码片段(顺便说一句,工作正常):

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,而无需通过您的服务器

使用传输层安全 (TLS) 安全地提供您的支付页面,以便它们使用 HTTPS

无论如何,如果有人能给我一些建议,我将不胜感激,或者在合规方面我可能会误解某些东西。如果此选项不可行,我可能会改为使用 Apple Pay 和 Google Pay,因为如果我因处理卡数据而不符合 PCI 标准,我不想陷入麻烦。

提前致谢。

标签: flutterdartstripe-paymentspci-compliance

解决方案


推荐阅读