Stripe payments 条带出现问题:未捕获集成错误:Stripe.redirectToCheckout:sessionId的值无效。您指定了';pi#u 1Fr…9sCWFtQr';

Stripe payments 条带出现问题:未捕获集成错误:Stripe.redirectToCheckout:sessionId的值无效。您指定了';pi#u 1Fr…9sCWFtQr';,stripe-payments,sessionid,Stripe Payments,Sessionid,我试着用条纹结帐。我生成了会话,然后它出现在仪表板上。然后,我尝试在具有硬编码id的html文件上运行directocheckout。但错误Uncaught IntegrationError:stripe.redirectToCheckout:sessionId的值无效。您指定了“pi\u 1RFBEBNGS…sCWFtQr”。 我试图定义一个json对象并使用session.id,但仍然不起作用。怎么了 这是我的server.js const express = require("expres

我试着用条纹结帐。我生成了会话,然后它出现在仪表板上。然后,我尝试在具有硬编码id的html文件上运行directocheckout。但错误
Uncaught IntegrationError:stripe.redirectToCheckout:sessionId的值无效。您指定了“pi\u 1RFBEBNGS…sCWFtQr”。

我试图定义一个json对象并使用session.id,但仍然不起作用。怎么了

这是我的server.js

const express = require("express");
const app = express();
const { resolve } = require("path");
// Copy the .env.example in the root into a .env file in this folder
const env = require("dotenv").config({ path: "./.env" });
const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);

(async () => {
    session = await stripe.checkout.sessions.create({
      payment_method_types: ['card'],
      line_items: [{
        name: 'T-shirt',
        description: 'Comfortable cotton t-shirt',
        images: ['https://example.com/t-shirt.png'],
        amount: 500,
        currency: 'usd',
        quantity: 1,
      }],
      success_url: 'https://example.com/success?session_id={CHECKOUT_SESSION_ID}',
      cancel_url: 'https://example.com/cancel',
    });
    console.log(session.id);
    return session;
  })().then(function(session){
      console.log(session.id)
  });
这是我的index.html

<!DOCTYPE html>
    <script src="https://js.stripe.com/v3/"></script>
    <body>
        direct to payment
    </body>
    <script>

        var stripe = Stripe('pk_test_XhC9cMRDNNqdkBVtHwzgYTQa00ov5gDmmN');
        id = 'pi_1FrFEYBNGSiXwN3Wx3FBbawa';
        stripe.redirectToCheckout({
            // Make the id field from the Checkout Session creation API response
            // available to this file, so you can provide it as parameter here
            // instead of the {{CHECKOUT_SESSION_ID}} placeholder.
            sessionId: session.id
        }).then(function (result) {
            // If `redirectToCheckout` fails due to a browser or network
            // error, display the localized error message to your customer
            // using `result.error.message`.
            if (result.error) {
            var displayError = document.getElementById("error-message");
            displayError.textContent = result.error.message;
            }
        });
    </script>
</html>

看起来你在传递你的
id
,而不是
会话.id
(虽然我看不出你在这里从哪里获得
会话
);您需要将server.js中生成的
session.id
发送/设置/呈现到您的html页面。

看起来您传递的是
id
,而不是
session.id
(尽管我看不出您在这里从哪里获得
会话
);您需要将server.js中生成的
session.id
发送/设置/呈现到您的html页面。

“您的html文件不包含会话id-这是一个支付意图id。您需要包含正确的id才能正常工作”@floatingLomas


这对我有帮助。仪表板上的id是payment intent id。我试图从session对象打印出id并将其放入directToPayment()中,结果成功了

“您的html文件不包含会话ID-这是一个支付意图ID。您需要包含正确的ID才能正常工作”@floatingLomas


这对我有帮助。仪表板上的id是payment intent id。我试图从session对象打印出id并将其放入directToPayment()中,结果成功了

我只运行server.js来生成会话id,我直接将id硬编码为签出来测试它。我必须在生成后立即发送会话id吗?您的html文件不包含会话id-这是一个支付意图id。您需要包含正确的id才能执行此操作。哦,我明白了,这是一个支付意图id。如何获取会话id,它在仪表板中吗?我只运行server.js来生成会话id,我直接将id硬编码到check out来测试它。我必须在生成会话id后立即发送会话id吗?您的html文件不包含会话id-这是一个支付意图id。您需要包含正确的id才能执行此操作。哦,我明白了,这是一个支付意图id。如何获取会话id,是否在仪表板中?您好@matt,您可以将答案标记为“已接受”如果你觉得它回答了你的问题。嗨@matt,如果你觉得它回答了你的问题,你可以将你的答案标记为“已接受”。
Uncaught IntegrationError: stripe.redirectToCheckout: Invalid value for sessionId. You specified 'pi_1FrFbeBNGSiXwN3W9sCWFtQr'.
    at new t (https://js.stripe.com/v3/:1:10765)
    at Eu (https://js.stripe.com/v3/:1:136437)
    at wu (https://js.stripe.com/v3/:1:137398)
    at Ou (https://js.stripe.com/v3/:1:138478)
    at Pu (https://js.stripe.com/v3/:1:138592)
    at e.redirectToCheckout (https://js.stripe.com/v3/:1:139007)
    at file:///Users/MattMachine/sdpp_stripe/client.html:62:16
t @ (index):1
Eu @ (index):1
wu @ (index):1
Ou @ (index):1
Pu @ (index):1
(anonymous) @ (index):1
(anonymous) @ client.html:62