【问题标题】:Redirect to checkout in ReactJS在 ReactJS 中重定向到结帐
【发布时间】:2019-10-26 08:33:17
【问题描述】:

我正在尝试在 ReactJS 中实现 Stripe 功能“重定向到结帐”。 我一直在环顾四周,似乎没有任何包裹可以帮助做到这一点。

const stripe = 
Stripe('key');

stripe.redirectToCheckout({
  items: [
    // Replace with the ID of your SKU
    {sku: 'sku_123', quantity: 1}
  ],
  successUrl: 'https://your-website.com/success',
  cancelUrl: 'https://your-website.com/canceled',
}).then(({error}) => {
  // If `redirectToCheckout` fails due to a browser or 
network
  // error, display the localized error message to your 
customer
  // using `error.message`.
});

这是我得到这个源代码的地方:https://stripe.com/docs/stripe-js/reference#stripe-redirect-to-checkout

StripeJS 似乎只支持不接收产品 SKU 作为参数的标准结帐

【问题讨论】:

  • 你在前端做这个吗? O.o
  • 我是新手反应。我试图找到销售订阅的最简单方法..stripe.com/docs/payments/checkout/client
  • 好吧,这不是 React 的东西。 React 是一个前端库/框架。 Stripe 是一个支付系统,有 js 支持,但它适用于 nodejs 后端。我建议你设置一个后端来做支付的事情,以及与那个后端对话的 api。否则有人可以检查您的前端代码并窃取访问密钥等内容
  • 即使服务器集成也有这种方法:stripe.com/docs/payments/checkout/server#create-subscriptions 我需要以某种方式从 React 调用该 stripe.redirectToCheckout..

标签: javascript reactjs stripe-payments


【解决方案1】:

在我阅读了新的stripe-js 文档后https://stripe.com/docs/stripe-js/react 我发现这可能对你有用

而不是使用stripe,安装@stripe/stripe-js 那么这项工作可以由

完成
import { loadStripe } from "@stripe/stripe-js";

...

const stripePromise = loadStripe(
    "pk_.........."
  );

const stripe = await stripePromise;

stripe.redirectToCheckout({
      ...
    })

【讨论】:

  • 看准了!这为我解决了这个问题。我需要在 useEffect 挂钩中使用 Stripe 库,然后才有机会将 Stripe 脚本注入头部。
【解决方案2】:

我发现了它是如何工作的。

基本上按照文档,需要在 public/index.html 中导入 Stripe 脚本

stripe.redirectToCheckout(...)

可以简单的放到一个按钮的onClick中。 文档中真正不清楚并且可能误导像我这样的新手的事情在于设置公钥:

const stripe = Stripe('key');

不起作用,因为在编译时找不到脚本。
这可以通过以下方式解决:

const stripe = window.Stripe('key');

这对我有用。

【讨论】:

  • 或者你可以将它添加到你的构建工具链中并在内部使用它。你必须安装npm i stripenpmjs.com/package/stripe
  • 根据文档,此密钥有权读取您的所有产品信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 2022-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多