2 回答
TA贡献1951条经验 获得超3个赞
您要求 Stripe 联系本地主机,以便您可以在本地测试您的代码,但因为它不是公共 URL,Stripe 看不到它,也无法向您发送请求。使用“localhost”只会在你的机器上工作。
要在本地使用 Stripe webhooks 测试您的代码,您可以使用 expose.sh 使用 Stripe 可以使用的公共 HTTPS URL 公开您的本地服务器。
安装暴露.sh
对于 Mac 或 Linux,转到Expose.sh并将显示的安装代码复制/粘贴到终端中。
对于 Windows,转到Expose.sh,下载二进制文件并将其放在您的 PATH 中的某个位置。
将您的本地 API 服务器公开到网络
启动您的 API 服务器。然后运行,expose <port>
其中端口是您的 API 服务器运行的端口,例如 80 或 8080。
Expose.sh 将生成一个随机的公共 expose.sh URL。你会看到类似的输出
https://s3rh.expose.sh is forwarding to localhost:80 http://s3rh.expose.sh is forwarding to localhost:80
然后您可以让 Stripe 使用公共 HTTPS URL,该 URL 将转发到您本地运行的服务器。
获得 URL 后,您可以使用stripe listen --events checkout.session.completed --forward-to <https expose.sh url>
输出中的 URL 进行替换,这类似于https://s3rh.expose.sh
.
TA贡献1829条经验 获得超13个赞
我有一个类似的问题,我在浪费了几个小时后终于设法解决了。这个问题调试起来特别烦人,因为 Laravel 的日志中没有记录任何内容,并且完全错误地指定格式会在 Stripe CLI 中返回成功的状态代码。
至少在我的情况下,问题是 webhook 事件stripe-webhook.php需要完全用下划线分隔:
'jobs' => [
"payment_intent_succeeded" => \App\Jobs\StripeWebhooks\PaymentIntentSucceeded::class,
// 'source_chargeable' => \App\Jobs\StripeWebhooks\HandleChargeableSource::class,
// 'charge_failed' => \App\Jobs\StripeWebhooks\HandleFailedCharge::class,
],
- 2 回答
- 0 关注
- 146 浏览
添加回答
举报