带 React JS 的条纹

IT技术 reactjs npm stripe-payments child-process
2021-05-04 05:21:58

我需要在 React JS 中使用 Stripe.js 创建令牌,但我找不到任何简单的方法。在 node.js 我会做这样的事情:

   stripeClient.tokens.create({
      card: {
        number: '4242424242424242',
        exp_month: 12,
        exp_year: 2050,
        cvc: '123'
      }

但是 Stripe npm module在 React JS 中对我不起作用。我收到错误:

无法解析module“child_process”

所以因为这显然是节点库,我想使用

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>

但我不确定在 React 中实现外部库的最佳实践应该是什么

4个回答

您可以像任何其他客户端库一样继续添加它,就像您过去所做的那样。

包括这个脚本标签:

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>

然后使用它在代码中公开的全局变量。

import React from 'react';

// we didn't have to import stripe, because it's already
// in our global namespace.
Stripe.setPublishableKey('pk_test_6pRNASCoBOKtIshFeQd4XMUh');

它不像能够从 NPM 要求它那么干净,但它会工作得很好。

对于那些在 React 中使用 Stripe 寻求指导的人:Accept Stripe Payments with React and Express是一篇在 React 中直接实现 Stripe (create-react-app) 和一个处理你的支付请求的最小 Express 服务器的文章,将它们转发到 Stripe 平台。本文将样板文件保持在最低限度,并附带一个开源项目,您可以简单地自行尝试。

切换到 BrainTree
他们支持可以与create-react-app ( Webpack / Browserify )一起使用的客户端 NPM 包https : //developers.braintreepayments.com/guides/client-sdk/setup/javascript/v3#npm

npm install --save braintree-web

不幸的是,Stripe 和 React 不能很好地结合在一起NPM 上
Stripe版本仅供服务器端使用;因此,即使您 Webpack / Browserify 库(由create-react-app 提供),也缺少用于配置公钥和标记信用卡信息的客户端功能。
对于客户端,条纹喜欢“stripe.js”被从外部URL中使用:https://js.stripe.com/v3/不幸的是,外部 URL 不太适合create-react-app - 例如,import不能使用ES6 ,并且 Webpack 没有捆绑外部文件。此外,版本 (v3) 强制用户使用一种elements方法并查询 DOM(基本上与 React 背道而驰)。

您可以在 html 文件中添加直接链接,但另一方面,即使不需要,它也会每次加载。所以我建议你通过你的代码添加条带库,以保持懒惰的lodaing 概念。

            const script = document.createElement("script");
            script.src = "https://js.stripe.com/v3/";
            script.async = true;
            document.body.appendChild(script); 

然后

Stripe = Stripe('your keys').

在这之后 Stripe.createToken('add any of your card element').then(setOutcome)