要为Stripe Webhook添加自定义端点,您可以使用Apollo Server和Express来完成。下面是一个示例代码:
首先,安装所需的依赖项:
npm install apollo-server-express express stripe
然后,创建一个新的Express应用程序并将其与Apollo Server集成:
const express = require('express');
const { ApolloServer } = require('apollo-server-express');
const app = express();
// 创建Apollo Server实例
const server = new ApolloServer({
// ...Apollo Server的配置
});
// 将Apollo Server与Express应用程序集成
server.applyMiddleware({ app });
// 启动服务器
app.listen({ port: 4000 }, () =>
console.log(`Server ready at http://localhost:4000${server.graphqlPath}`)
);
接下来,您可以添加一个Express路由来处理Stripe Webhook请求:
const stripe = require('stripe')('YOUR_STRIPE_SECRET_KEY');
app.post('/webhook', express.raw({ type: 'application/json' }), async (req, res) => {
const sig = req.headers['stripe-signature'];
try {
const event = stripe.webhooks.constructEvent(req.body, sig, 'YOUR_STRIPE_WEBHOOK_SECRET');
// 在这里处理Stripe Webhook事件
switch (event.type) {
case 'payment_intent.succeeded':
// 处理付款成功事件
break;
case 'payment_intent.failed':
// 处理付款失败事件
break;
// 添加其他事件处理逻辑
default:
console.log(`Unhandled event type: ${event.type}`);
}
res.sendStatus(200);
} catch (err) {
console.log(err);
res.sendStatus(400);
}
});
在上面的代码中,我们首先使用Stripe密钥初始化Stripe客户端。然后,我们使用'/webhook'
路由来处理POST请求,并使用stripe.webhooks.constructEvent
方法验证请求的签名和密钥。在事件处理程序中,您可以根据需要添加其他Stripe Webhook事件的处理逻辑。
最后,您可以通过访问http://localhost:4000/webhook
来访问自定义的Stripe Webhook端点。
请注意,为了安全起见,您应该将Stripe密钥和Webhook密钥存储在环境变量中,并从那里获取它们。此外,为了确保安全性,您还应该验证Stripe Webhook事件的签名,以防止伪造请求。
希望这可以帮助到您!