通过 Node.js (authorize.net) 发送 PCI 数据

Sending PCI data through Node.js (authorize.net)

一位客户要求我通过 authorize.net 设置卡支付。但是,我注意到节点 SDK 已经一年没有更新了,而且他们的 Node SDK 只在他们的一些文档页面上提到(所以我觉得这不是他们的主要关注点)。

我有多年使用 Braintree Payments and Stripe 的经验。他们都对 Node 有很好的支持,还有 drop-in/hosted React(前端)字段。这种方法从我的服务器中删除了大部分 PCI 合规性要求。

但是,我的客户不能使用 Braintree 或 Stripe,因为他们销售的是 Braintree 和 Stripe 的 ToS 不允许的受限商品。他们目前使用 Authorize.net,希望我继续在他们的新网站上支持它。

看来我唯一的选择是直接将卡片详细信息从我的 React 前端发送到我的节点 API 服务器。这让我很不舒服。正如 Stripe's PCI guide 所说,PCI DSS 中有 300 多个安全控制,如果在服务器上发送 PCI 数据,则需要满足这些安全控制。

这是他们在 Node 上的信用卡输入示例,取自他们的 examples GitHub repo

    var creditCard = new ApiContracts.CreditCardType();
    creditCard.setCardNumber('4242424242424242');
    creditCard.setExpirationDate('0822');
    creditCard.setCardCode('999');

    var paymentType = new ApiContracts.PaymentType();
    paymentType.setCreditCard(creditCard);

我的问题是:

  1. 在 2020 年,通过我的服务器发送银行卡详细信息似乎不再是最佳做法,因为那里有这么多提供商提供托管字段。这是一个合理的担忧吗?
  2. 我是否需要让 QSA 验证我的 Node.js 代码和 PCI 合规性?

更多link:

在写这个问题时,我发现另一个 Stack Overflow post 中的 PHP/Magento 中有人和我有同样的担忧 post

使用 Authorize.net 的 Accept.js,您可以将付款详细信息直接发送到他们的服务器,并使用付款随机数(如 Braintree/Stripe)代替银行卡详细信息。

Accept.js is a JavaScript library for sending secure payment data directly to Authorize.Net. Accept.js captures the payment data and submits it directly to us, in exchange for a one-time-use token, or payment nonce. You can use this payment nonce in the place of payment data in a follow-on createTransactionRequest API call.

Our JavaScript library offers developers two workflow options for accepting payment:

  • Option 1: Host your own payment form for a PCI-DSS SAQ A-EP solution that gives you complete control of the customer payment experience.
  • Option 2: Embed our hosted, mobile-optimized payment information form in your page to collect the card information in a PCI-DSS SAQ A compliant way. For a fully hosted payment solution that you can redirect your customers to or embed as an iFrame within your page, see our documentation for Accept Hosted.

嘿,我相信 accept.js 套件将是您所需要的。 https://developer.authorize.net/api/reference/features/acceptjs.html 基本上,它在收到来自客户端的 post 请求后需要一个付款随机数,并将其发送到您的服务器,而不是敏感的信用卡信息。我正在尝试自己使用它。也许我们可以合作。我是节点支付小白。我 post 在这里提出了一个问题。 I would like to automatically hit an api with dynamic values from my client side via a post request using javascript files. How can I achieve this? 让我知道这是否有帮助