我只是在官方的条纹文档中复制了关于基本网络挂钩使用的代码,但它一直向我抛出相同的错误.唯一可以看到我更改的是,我使用的是rawBody.json()中间件,而不是exts.json()中间件,我这样做是因为文档中写着"如果您使用的是Express v4-v4.16,则需要使用正文解析器而不是EXPRESS来检索请求正文".复制的代码可以在文档中找到,但我将其附加在这里,以防我遗漏了什么.该错误是一个400 Bad请求,其描述为:"WebHook错误:WebHook有效负载必须以字符串或缓冲区的形式提供"
dotenv.config()
const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY)
const app = express()
app.use(morgan("dev"))
app.use(
cors({
origin: process.env.ORIGIN,
credentials: true,
optionsSuccessStatus: 200,
})
)
app.post("/webhook", bodyParser.json(), (request, response) => {
const payload = request.body
const sig = request.headers["stripe-signature"]
let event
try {
event = stripe.webhooks.constructEvent(
payload,
sig,
process.env.STRIPE_ENDPOINT_SECRET
)
if (event.type === "checkout.session.completed") {
console.log("Session completed successfully")
}
} catch (err) {
return response.status(400).send(`Webhook Error: ${err.message}`)
}
response.status(200).end()
})
app.use(cookieParser())
app.use(express.json({ limit: "50mb" }))
//Rest of endpoints