所以我最近处理了一些条带代码,我决定是时候使用 webhook 了。我查看了stripe网页上的webhooks页面,复制了源代码,但不起作用。
client.post('/webhook', express.raw({ type: 'application/json' }), (request, response) => {
const sig = request.headers['stripe-signature'];
let event;
try {
event = exports.stripe.webhooks.constructEvent(request.body, sig, code);
}
catch (err) {
response.status(400).send(`Webhook Error: ${err.message}`);
return;
}
// Handle the event
switch (event.type) {
case 'payment_intent.succeeded':
const paymentIntent = event.data.object;
console.log(paymentIntent);
break;
// ... handle other event types
default:
console.log(`Unhandled event type ${event.type}`);
}
// Return a 200 response to acknowledge receipt of the event
response.send();
});
Run Code Online (Sandbox Code Playgroud)
我已经多次检查我的代码是否相同,但确实如此。有人能告诉我出了什么问题吗?如果是这样的话,我也在端口 3001 上监听。
我正在尝试从 Stripe 设置一个 webhook 来处理该payment_intent.succeeded事件,但出现异常。这是我来自 Node 后端的代码(我已经提取了我希望的所有相关部分。如果还需要其他任何东西,请告诉我):
const stripeWebHookSecret = 'whsec_WA0Rh4vAD3z0rMWy4kv2p6XXXXXXXXXXX';
import express from 'express';
const app = express();
app.use(bodyParser.urlencoded({ extended:true }));
app.use(bodyParser.json());
app.use(session({ <some params here> }));
const openRouter = express.Router();
registerOpenPaymentRoutes(openRouter);
app.use('/open', openRouter);
Run Code Online (Sandbox Code Playgroud)
的实现registerOpenPaymentRoutes如下所示:
export const registerOpenPaymentRoutes = (router) => {
router.post('/payment/intent/webhook', bodyParser.raw({type: 'application/json'}), (req, res) => {
let signature = req.headers['stripe-signature'];
try {
let event = stripe.webhooks.constructEvent(req.body, signature, stripeWebHookSecret);
switch(event.type){
case 'payment_intent.succeeded':
let intent = event.data.object;
res.json({ message: 'Everything went smooth!', intent }); …Run Code Online (Sandbox Code Playgroud)