通过 HTTPS 测试 Stripe webhook 不断失败:超时
Posted
技术标签:
【中文标题】通过 HTTPS 测试 Stripe webhook 不断失败:超时【英文标题】:Testing Stripe webhook over HTTPS keep failing : Timed out 【发布时间】:2018-11-02 21:14:03 【问题描述】:短版
我正在尝试创建一个非常基本的 webhook,它重定向到本地主机上的 ASP.NET MVC 控制器方法。但是,我的网站使用完整的 HTTPS,而且似乎我的隧道客户端 (ngrok) 使用 HTTPS 失败。 创建一个新的 ASP.NET MVC 网站并实现我的 webhook 工作正常,但我的 HTTPS 网站一直失败。
加长版
这是我到目前为止所做的:
1/ 在我的 ASP.NET MVC5 网站上创建一个端点并在 localhost 上运行它。它在端口 44368 上运行,因为我的完整网站使用 HTTPS。
public class StripeWebhookController : BaseController
[HttpPost]
[AllowAnonymous]
public ActionResult Index()
// ...
2/ 安装ngrok 并按照this SO answer 中的说明进行配置
3/ 转到我的 Stripe 测试仪表板并复制要这样调用的 URL:
(我尝试检查另一个 RadioButton,“最新”,但效果不佳。我还尝试将 https
替换为 http
,也不是更好)
当我使用 Stripe 仪表板发送测试 webhook 时,我可以在 http://localhost:4040/inspect/http
中看到请求:
但是我在StripeWebhook/Index
方法的第一行放置的断点永远不会被命中。 Stripe 中会出现一个弹出窗口,发送的请求带有以下错误消息:Test webhook error: Timed out
。
但是,如果我使用默认模板创建一个全新的 ASP.NET MVC 网站,并按照完全相同的步骤操作,它就可以工作。这是因为我的项目使用 HTTPS,而 ngrok 无法通过 HTTPS 方法重定向(据我了解。)
如何使用 ngrok(或任何其他免费隧道工具)通过 HTTPS 重定向到控制器方法?
【问题讨论】:
【参考方案1】:从可用信息中很难说问题是与 ngrok 相关还是与您的代码相关或介于两者之间。
使用 ngrok 你必须重写主机,参见ngrok with https on localhost returns 502
我们还有一个名为 Conveyor 的免费隧道工具,它作为 VS 扩展安装。您可以从 Tools -> Extensions 安装它并通过 UI 注册一个帐户。一旦您拥有公共 URL(将是 https),它应该“正常工作”。可能会出现同样的问题,但我很乐意帮助您解决问题。您可能会发现 this video 也很有帮助。
由 OP 编辑:为了更清楚起见,我必须安装 Conveyor,然后单击“通过 Internet 访问”并在他们的网站上注册。然后,您将获得一个类似https://projectName.conveyor.cloud
的地址。我只需要用这个域名在 Stripe 上创建一个新端点并添加我的 /StripeWebhook/Index
路由,它就像一个魅力
【讨论】:
是的,太棒了!我刚刚编辑了您的答案,以便将来的用户更清楚以上是关于通过 HTTPS 测试 Stripe webhook 不断失败:超时的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Stripe Elements 在服务器端销售产品