【发布时间】:2023-03-08 01:23:01
【问题描述】:
我正在使用 Stripe 创建一个支付网关。
我想将我的 localhost url localhost/stripe/webhook.php 设置为我的 webhook url。是否可以将 localhost 地址设置为 webhook url?这将用于创建在 Stripe 中每次成功收费时触发的邮件服务。
【问题讨论】:
标签: php stripe-payments webhooks
我正在使用 Stripe 创建一个支付网关。
我想将我的 localhost url localhost/stripe/webhook.php 设置为我的 webhook url。是否可以将 localhost 地址设置为 webhook url?这将用于创建在 Stripe 中每次成功收费时触发的邮件服务。
【问题讨论】:
标签: php stripe-payments webhooks
Stripe 现在有一个官方工具,Stripe CLI 可以让这变得简单(但仍然需要安装另一个工具)。
请参阅this answer below 或official Stripe CLI docs。
另外,实现此目的的另一种方法是使用http://www.ultrahook.com,它允许您在 localhost 上接收 webhook。这种替代方案适用于所有 webhook,而不仅仅是 Stripe 的
【讨论】:
stripe。我曾经使用ngrok,但大约在 4 或 5 年前就停止了开发。因此,我更喜欢stripe,因为它是他们的官方工具。话虽如此,我还没有使用它,所以我不知道它与ngrok相比表现如何。
如何使用 ngrok 并设置 Stripe Webhooks url
尝试在此终端提示符下键入 ngrok.exe http 80 以公开端口 80
例如,如果我们在 localhost 上有 Stripe webhooks url,就像这样 http://localhost/stripeproject/webhook.php
只需将您的 ngrok url 指定为您的 webhook 的端点 服务,您就快完成了。
你可以设置这个网址 http://f253021b.ngrok.io/stripeproject/webhook.php发送测试 webhook 到您帐户中的集成端点 webhook 设置。
对我来说效果很好。
更多详情click here
【讨论】:
ngrok http --host-header "server1.dev" 80
现在有另一种选择:您现在可以使用 the Stripe CLI 在本地无缝测试 webhook,而无需第三方工具。
在这种情况下,您只需执行 something like this 将您的 Stripe 事件检测到您的本地 webhook 处理程序代码:
stripe listen --forward-to localhost/stripe/webhook.php
【讨论】:
不,这行不通。 Stripe 服务器必须能够联系您的服务器以发送 webhook。 Stripe 不知道如何联系您的“本地主机”。您需要一个可访问网络的地址或 IP 地址才能正常工作
【讨论】:
【讨论】:
更简单的是,在本地运行时将此端点添加到您的应用程序中(而不是在产品中!):
const eventsSeen = new Set();
app.post("/test/simulate-stripe-webhook", async (req, res) => {
const events = await stripe.events.list({ limit: req.query.limit || 10 });
for (const event of events) {
if (eventsSeen.has(event.id)) continue;
await processStripeEvent(event);
eventsSeen.add(event.id);
}
return res.status(200).end();
});
...processStripeEvent 是您的 webhook 触发的任何逻辑。
那么就不需要在 Stripe 中管理 webhook。
【讨论】:
可以将 webhook 发送到您的本地主机。查找“ngrok”,当你运行它时,它会打开一个公共互联网访问端口,并为你提供一个可以访问你的本地主机的 url。获取此 url 并将其设置为您的 webhook 地址并通过将其指向您的 webhook.php 文件来完成 url。
* 编辑 *
这仅适用于测试。
【讨论】:
您可以使用expose.sh 通过公共HTTPS URL 公开您的服务器。
对于 Mac 或 Linux,请转到 Expose.sh 并将显示的安装代码复制/粘贴到终端中。
对于 Windows,请转到 Expose.sh,下载二进制文件并将其放在 PATH 中的某个位置。
启动您的 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 将转发到 localhost。 我已经写了一个完整的指南here
免责声明:我构建了expose.sh
【讨论】:
就像马特说的那样,你需要把它放在网上的某个地方——最好使用 https://。供您参考,我在 2 个月前在这里放置了一个示例邮件 webhook:https://github.com/pnommensen/Stripe-Webhook-Emails。
【讨论】:
是的,可以在本地主机上测试条形网络挂钩 转到此 URL https://dashboard.stripe.com/test/webhooks/ 并打开您的端点 对于即 https://test.com/api/StripeHook 现在打开您的 Webhook 尝试,然后剥离并复制所有 json 代码。
现在在本地主机上运行您的项目并打开邮递员并点击 https://localhost/api/StripeHook 并将所有复制的 json 文本放入邮递员的正文数据中。
【讨论】: