Stripe支付链接附加的client_id未出现在Webhook事件中,如何查找?
解决Stripe支付链接client_id参数获取问题
直接在支付链接后拼接URL参数(如?client_id=123)的方式,Stripe不会自动将该参数带入Webhook事件的payload或元数据中,你需要通过以下正确方式传递并获取client_id:
创建支付链接时嵌入元数据
无论是通过Stripe API还是Dashboard创建支付链接,都需要将client_id添加到支付链接的metadata中:- API方式:调用创建PaymentLink的接口时,在请求体中加入
metadata字段:// 示例(实际根据你使用的语言调整) stripe.paymentLinks.create({ line_items: [{price: 'price_123', quantity: 1}], metadata: { client_id: '123' } }); - Dashboard方式:编辑支付链接时,找到「高级选项」-「元数据」,手动添加
client_id:123的键值对。
- API方式:调用创建PaymentLink的接口时,在请求体中加入
Webhook中获取元数据
在你验证Webhook事件后,从对应事件的对象中提取metadata:// 示例:以checkout.session.completed事件为例 Event event = Webhook.constructEvent(payload, sigHeader, STRIPE_SIGN_SECRET); if ("checkout.session.completed".equals(event.getType())) { Session session = (Session) event.getDataObjectDeserializer().getObject().get(); String clientId = session.getMetadata().get("client_id"); // 后续处理逻辑 }补充说明
若使用Stripe自定义结账流程(而非原生支付链接),也可在前端获取URL中的client_id,再在创建Checkout Session时传入metadata字段,最终同样从Webhook的Session对象中提取。
内容的提问来源于stack exchange,提问作者Hard Worker
相关产品推荐
相关产品推荐

