【问题标题】:Connection refused error when using Stripe webhooks使用 Stripe webhook 时出现连接被拒绝错误
【发布时间】:2021-07-01 14:43:10
【问题描述】:

我在尝试接收 webhook 时经常收到连接被拒绝错误。

(venv) alexa@main:/etc/nginx/sites-available$ stripe listen --forward-to localhost:5000/webhook/
go package net: built with netgo build tag; using Go's DNS resolver
> Ready! Your webhook signing secret is whsec_************************* (^C to quit)
2021-04-05 18:13:03   --> customer.subscription.updated [evt_1Icwv5HrsuAsSZROjKy4Z5CK]
2021-04-05 18:13:03            [ERROR] Failed to POST: Post "http://localhost:5000/webhook/": dial tcp 127.0.0.1:5000: connect: connection refused)

端口已通过我的防火墙启用:

To                         Action      From
--                         ------      ----
5000                       ALLOW       Anywhere
5000/tcp                   ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
5555                       ALLOW       Anywhere
5000 (v6)                  ALLOW       Anywhere (v6)
5000/tcp (v6)              ALLOW       Anywhere (v6)
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
5555 (v6)                  ALLOW       Anywhere (v6)

我的 web 应用在 Ubuntu 20.10 上运行

按照 Justin Michael 在 cmets 中的建议运行 curl -v -X POST http://localhost:5000/webhook/ 后,我得到以下结果:

*   Trying 127.0.0.1:5000...
* TCP_NODELAY set
* connect to 127.0.0.1 port 5000 failed: Connection refused
* Failed to connect to localhost port 5000: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 5000: Connection refused

【问题讨论】:

  • 该错误表明 Stripe CLI 尝试将 POST 请求转发到 http://localhost:5000/webhook/ 被拒绝。不涉及您的防火墙;这是从 Stripe CLI 向localhost:5000 上运行的任何内容发出的本地请求。您可以运行以下命令并将输出添加到您的问题中吗? curl -v -X POST http://localhost:5000/webhook/
  • 谢谢。我在上面的问题中添加了输出。我尝试用 Linux 服务器的 IP 地址替换 'localhost' - 结果相同。在我的本地计算机上测试 web-app 和 Stripe webhook 时,使用 'localhost' 的相同命令似乎工作正常。
  • 输出表明连接被拒绝(与 Stripe CLI 尝试时相同)。你能解释一下你的测试设置吗?您的 webhook 代码在哪里运行?您提到涉及服务器?通常 Stripe CLI 只用于本地测试;服务器混在一起是不寻常的。
  • 当然。我在我的个人电脑上开发了一个网络应用程序。我测试了 Stripe 的功能,包括。 Webhooks 和一切工作正常。现在我在 Linode 虚拟服务器上部署网络应用程序并再次执行相同的测试。用服务器的 IP 地址替换 'localhost' 后,错误实际上不再是“连接被拒绝”,而是 webhook 错误 400,我试图弄清楚如何调试。在本地机器上进行测试时,我没有收到任何这些错误。

标签: django linux ubuntu stripe-payments web-development-server


【解决方案1】:

根据您的最新评论,您似乎在本地计算机上运行了 Stripe CLI,并且您正尝试使用它来将 Stripe 事件转发到您的 Linode 上运行的代码。

Stripe CLI 仅用于本地测试,虽然从本地计算机转发到 Linode 可能可行,但不建议这样做。

这里最好的方法是 set up an actual webhook endpoint in your Stripe Dashboard 或 create one using the Stripe API 并将其指向您的 Linode。

或者,您可以在 Linode 本身上安装 Stripe CLI 并在本地转发,但实际的 webhook 端点将是更好的测试方法,因为您将获得实际的 webhook 端点行为,例如retries。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2022-05-04
    • 1970-01-01
    相关资源
    最近更新 更多