繁体   English   中英

如何从 stripe.redirectToCheckout() 检索结果值?

[英]How can I retrieve the result value from stripe.redirectToCheckout()?

我正在尝试从 stripe.redirectToCheckout() 获取结果值。 据说返回 Promise https://stripe.com/docs/js/checkout/redirect_to_checkout 这是我认为可以工作的代码,但它没有

    stripe.redirectToCheckout({
      lineItems: [
        {
          price: stripePrice,
          quantity: token,
        },
      ],
      mode: "payment",
      successUrl: someurl
      cancelUrl: someurl
    }).then(result => {
        if (result.error) {
            alert(result.error.message);
        }
    })

不再推荐仅客户端 Checkout 和redirectToCheckout

相反,您可以使用支付链接(如果您需要仅限客户端的解决方案),或者您可以在您的服务器上创建结帐会话并将人们发送到结帐会话对象上的url

但是,关于您最初的问题,如果重定向失败, redirectToCheckout只会返回一个承诺。 如果重定向成功,则在您的页面上运行的 JavaScript 将停止运行,因为浏览器将导航到另一个页面(Stripe Checkout 页面),因此没有机会返回任何内容。

当您被重定向并且您的脚本不再存在时,您无法从此函数中获取数据

Stripe 会在用户结帐后将您重定向回来,然后您必须读取数据。

您可以添加 session_id 查询参数来获取结帐数据:

  1. 修改成功URL:
success_url: "http://yoursite.com/order/success?session_id={CHECKOUT_SESSION_ID}"

请注意, CHECKOUT_SESSION_ID是一个文字字符串,必须完全按照您在此处看到的那样添加。

  1. 使用 session_id 获取结帐数据:
const session = await stripe.checkout.sessions.retrieve(req.query.session_id);
const customer = await stripe.customers.retrieve(session.customer);

资料来源: https://stripe.com/docs/payments/checkout/custom-success-page

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM