【问题标题】:Staying PCI Compliant with Stripe in a Flutter app在 Flutter 应用程序中使用 Stripe 保持 PCI 兼容
【发布时间】:2021-12-31 07:45:45
【问题描述】:

我正在将 Stripe 集成为支付网关,我正在查看它在锡上写的 flutter_stripe

简化的安全性:我们让您可以轻松收集信用卡号等敏感数据并保持 PCI 合规性。这意味着敏感数据会直接发送到 Stripe,而不是通过您的服务器。有关详细信息,请参阅我们的集成安全指南。

所以我期待一个集成直接调用 Stripe sdk,就像我在我的 Nodejs 服务器中一样,我在其中创建 PaymentIntent,如 Stripe 自定义流程指南中所述

创建一个 PaymentIntent 在您的服务器上添加一个创建 PaymentIntent 的端点。 PaymentIntent 跟踪客户的支付生命周期,跟踪任何失败的支付尝试,并确保只向客户收取一次费用。在响应中返回 PaymentIntent 的客户端密码以在客户端完成支付。 (服务器)

使用 Stripe.js 通过确保将付款详细信息直接发送到 Stripe 而不会访问您的服务器来保持 PCI 合规性。 (客户)

并在我的 Flutter 应用程序中确认 PaymentIntent 而不点击尝试服务器。

我期待在他们的 API 中找到与 Stripe 节点 sdk 等效的东西

const paymentIntent = await stripe.paymentIntents.confirm(
  'pi_1EUq4543klKuxW9fVKimzjFV',
  {payment_method: 'pm_card_visa'}
);

但我只找到了方法

Future<PaymentIntent> confirmPayment( String paymentIntentClientSecret,PaymentMethodParams data,[ Map<String, String> options = const {},])

会的

使用提供的 paymentIntentClientSecret 和数据确认付款方式。 有关详细信息,请参阅 PaymentMethodParams。该方法返回一个 PaymentIntent。确认支付方式失败时抛出 StripeException

我从他们的示例应用程序中看到,他们使用服务器来注册客户,从而使 PCI 合规性付诸东流,对吗?

https://github.com/flutter-stripe/flutter_stripe/blob/main/example/server/src/index.ts

我确定我不了解该软件包,但他们的 API confirmPayment 只是将 paymentMethod 广告到 PaymentIntent

任何解释都会很有帮助。 干杯

【问题讨论】:

  • 它说使用“​​Stripe.js 来保持 PCI 兼容”,括号中有“客户端”,我认为他们(或编写 Flutter 库的人)可能在 Flutter 中被忽略(很多)图书馆
  • 嗨,在 Stripe 自定义流程中,我猜这里引用了一个用 js 编写的客户端应用程序,因此建议使用 Stripe.js

标签: flutter stripe-payments


【解决方案1】:

由 PCI 管理的敏感信息(即原始卡数据)直接从客户端发送到 Stripe。 Stripe 创建了一个 Payment Method 来表示该数据 (pm_) 并将其返回给客户端,以便可以从那里引用它。

但是,支付意图必须在安全上下文中使用秘密或受限 API 密钥在服务器端创建,然后支付意图的客户端秘密应发送到客户端以允许客户端确认。

The section about validating your PCI compliance in Stripe's integration security guide 有更多信息。

【讨论】:

  • 是的,这确实是我理解的过程。 flutter_stripe 团队在 GitHub 上向我解释说,他们提供的流程之一是付款,因此为什么您会从服务器收到 PaymentIntent,它会处理将处理它们的卡详细信息直接插入到 Stripe(我所期待的)。我不得不说他们的文档非常混乱(至少对我来说)并且混合在一起..您在flutter_stripe所依赖的各种包之间跳转...但是正如我指出的那样它为您提供的示例的正确部分带有一个可配置的支付页面来插入和管理卡。
  • 我对该主题的另一个疑问是显示客户端客户的注册卡。我在想,由于该包裹没有检索客户付款方式的方法,因此向用户展示他们的付款方式以选择一种并确认付款意图的唯一方法是从我的服务器发送它们。我想这会破坏 PCI 合规性,但即使支付方式数据是加密发送的,它也会破坏它吗?非常感谢
  • 当您使用 Stripe 时,您的 PCI 合规性负担会显着降低,因为您永远不会接触到原始卡信息。卡信息直接从您的客户发送到安全存储的 Stripe,然后您会获得一个引用它的 ID。您可以获得卡品牌和最后 4 个等详细信息,但不能获取整个卡号,因此您可以向客户显示有关已保存卡信息的详细信息,而不会增加您的 PCI 合规性负担。
  • 所以我应该只返回支付方式id加上持有last4、到期日等的卡参数,而不是支付方式正确?
  • “不是付款方式”是什么意思?询问 Stripe 支持可能会更好,因为它们与编码无关:support.stripe.com/contact
猜你喜欢
  • 2015-04-26
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 2020-04-08
  • 2012-07-08
  • 2011-03-27
相关资源
最近更新 更多