Stripe Webhooks(网络钩子) 是实现真正的支付结果异步监听与自动状态变更。本文深入讲解如何配置 Stripe Webhooks,并在实际项目中实现订单状态的自动更新机制。
一、什么是 Stripe Webhooks?
Webhooks 是 Stripe 向你服务器发送事件通知的一种机制。当某个事件,如付款成功、退款完成、订阅变更等发生时,Stripe 会向你预设的 URL(Webhook 端点)发送一个 POST 请求,包含事件详细信息。
使用 Webhooks 有哪些优势?
异步通知:不用用户跳转或刷新页面,也能获取订单状态。
实时更新:支付结果可以瞬时反馈,提高用户信任度。
稳定可靠:Stripe 会自动重试失败的 webhook 事件,确保消息到达。
扩展灵活:支持监听几十种事件类型,如 payment_intent.succeeded、charge.refunded、invoice.payment_failed 等。
二、如何配置 Stripe Webhook 端点?
第一步:进入 Webhook 配置页面
打开 Stripe 后台:https://dashboard.stripe.com
登录账户后,切换为测试模式(页面上方显示“测试模式”)在搜索栏中直接搜索 Webhook 即可快速创建
也可点击进入 Webhook 页面:
👉 https://dashboard.stripe.com/test/workbench/webhooks
第二步:创建 Webhook 的“向导流程”
第一步选择侦听的事件类型
推荐勾选的事件:
类别推荐事件说明PaymentIntentpayment_intent.succeeded支付成功(常用于标记订单已支付)PaymentIntentpayment_intent.payment_failed支付失败
选好后,点击页面右下角的紫色按钮:
👉 继续
第三步:配置 Webhook 端点信息
第 1 步:选择你要监听的事件(推荐选择):
✅ payment_intent.succeeded(支付成功)
✅ payment_intent.payment_failed(支付失败)
第 2 步:选择接收端类型
选择Webhook端点,然后点继续
第四步:填写配置接收端
在这一步你将看到一个表单,填写:
字段内容端点 URL(Endpoint URL)输入你的服务器接收地址,如:https://yourdomain.com/webhook/stripe描述(可选)如“订单状态更新监听”
然后点击 “创建目的地“ 即可完成 Webhook 配置!
三、订单状态自动化更新流程
1. 客户提交订单并跳转支付
创建 PaymentIntent 时附加订单 ID:
StripePaymentIntent::create([
‘amount’ => 29900,
‘currency’ => ‘usd’,
‘metadata’ => [‘order_id’ => ‘ORDER12345’],
]);
2. 客户完成支付,Stripe 自动触发 Webhook
事件如 payment_intent.succeeded 被触发,Stripe 将发送请求到你的 webhook 端点。
3. 后端解析事件,更新订单状态
运用 $event->type 区分事件,调用系统的订单更新逻辑(数据库写入、日志记录、通知发送等)。
4. 自动通知客户
在 webhook 接收逻辑中还可以:
发送支付成功邮件
推送站内通知
通知发货系统准备物流
四、安全性与调试建议
1. 验证 Stripe 签名
建议启用 webhook 的签名验证,确保数据来源真实可靠。密钥签名可在 Stripe 后台 Webhook 配置页中找到。
2. 本地开发推荐使用 stripe-cli
使用命令工具把 Stripe 事件转发到本地服务器:
stripe listen –forward-to localhost:8000/webhook/stripe
还可以使用模拟测试特定事件:
stripe trigger payment_intent.succeeded
五、支持的常用事件推荐清单
事件类型描述payment_intent.succeeded支付成功,常用于确认订单payment_intent.payment_failed支付失败,可用于重试提醒charge.refunded退款完成,更新状态为已退款checkout.session.completedCheckout 支付成功(如用 Stripe Checkout)invoice.payment_succeeded订阅类账单支付成功invoice.payment_failed自动续费失败
更多事件类型可参考官方文档:
https://stripe.com/docs/api/events/types
六、总结
Stripe Webhooks构建一个稳定、高效、不用人工介入的订单状态自动更新系统。无论是一次性支付、订阅服务、退款处理,Webhook 都可以帮助系统在第一时间做出响应,是现代电商系统的核心机制。