条纹创建结帐会话未加载

问题描述

我正在按照 Node 中 Stripe 付款设置的步骤进行操作,但我无法让我的页面重定向到预先构建的 Stripe 结帐表单。对“/create-checkout-session”的发布请求只是在网络选项卡中显示“待处理”。

有人能解释一下这条路线应该指向哪里吗?该教程使它看起来应该是 {localhost address}/create-checkout-session,但我看不出它们是如何连接回 Stripe 的服务器的。

我的 Server.js

var express = require("express");
var app = express();
var cors = require("cors");
app.use(cors());
app.options("*",cors());
var dotenv = require("dotenv");
const Stripe = require("stripe");
const stripe = Stripe(
  "***************************** (secret key would go here) ************************"
);
app.get(
  "/checkout-session",async (req,res) => {
    const { sessionId } = req.query;
    const session = await stripe.checkout.sessions.retrieve(sessionId);
    res.send(session);
  });
  app.post("/create-checkout-session",res) => {
    const { priceId } = req.body;

    try {
      const session = await stripe.checkout.sessions.create({
        mode: "subscription",payment_method_types: ["card"],line_items: [
          {
            price: priceId,quantity: 1
          }
        ],success_url: "localhost:3000/listings?session_id={CHECKOUT_SESSION_ID}",cancel_url: "localhost:3000/stripe"
      });
      res.send({
        sessionId: session.id
      });
    } catch (e) {
      res.status(400);
      return res.send({
        error: {
          message: e.message
        }
      });
    }
  })


app.listen(4242,() =>
  console.log(`Node server listening at http://localhost:${4242}/`)

客户端

<template>
  <div id="main">
    <head>
      <title>Checkout</title>
      <script src="https://js.stripe.com/v3/"></script>
    </head>
    <body>
      <button @click.prevent="createSession" ref="checkout">Subscribe</button>
    </body>
  </div>
</template>
<script>
var createCheckoutSession = function(priceId) {
  console.log("create checkout");
  return fetch("http://localhost:4242/create-checkout-session",{
    method: "POST",headers: {
      "Content-Type": "application/json"
    },body: JSON.stringify({
      priceId: "price_1I641zIXVRhKifjKEM8o7Fat"
    })
  }).then(function(result) {
    console.log("posted");
    return result.json();
  });
};

export default {
  methods: {
    createSession() {
      console.log("called function");
      createCheckoutSession().then(function(data) {
        console.log("redirected");
        // Call Stripe.js method to redirect to the new Checkout page
        stripe.redirecttocheckout({
          sessionId: data.sessionId
        });
        console.log("redirected").then(handleResult);
      });
    }
  }
};
</script>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)