我在虚拟机中使用ASP.Net MVC,使用Stripe进行信用卡处理,并安装了ngrok.com来创建网址,以便我可以从Stripe发送webhook到我的本地主机。
我已经安装了ngrok.exe并且我正在运行它并且已经提供了一个使用的网址
我添加了一个名为StripeWebHook的新控制器,并添加了一个新的Index方法来接收来自Stripe的webhook。
namespace YogaBandy2017.Controllers
{
[Route("api/[controller]")]
public class StripeWebHookController : Controller
{
[HttpPost]
[AllowAnonymous]
public void Index()
{
StripeConfiguration.SetApiKey("sk_test_WYKc0e2jXBCU...");
var json = new StreamReader(HttpContext.Request.InputStream).ReadToEnd();
//var stripeEvent = StripeEventUtility.ParseEvent(json);
string secret = "whsec_blSjcGhK1UHRbyGwXa...";
var stripeEvent = StripeEventUtility.ConstructEvent(json,
Request.Headers["Stripe-Signature"], secret);
// Do something with stripeEvent
}
}
}
然后在我的Stripe帐户webhook设置页面中,我为连接帐户添加了新的webhook网址
然后我尝试将测试webhook发送到Stripe的url,我看到帖子进入ngrok命令行(如上图所示),我也看到它出现在localhost:4040,这是一个测试页面ngrok在这里显示,但我无法进入方法'索引'并点击任何断点,Stripe页面显示如下所示的错误
以下是发送测试webhook后Stripe页面显示的内容。 它没有显示任何响应并超时。
更新 - 我收到了ngrok的电子邮件 "麻烦就是HTTPS。 ngrok终止HTTPS流量,然后将未加密的http流量转发到您的本地应用程序。你想做两件事之一:
1)使您的应用程序也公开HTTP端口并将流量转发给该端口 2)使用ngrok的TLS隧道(TLS流量交给你终止)。使用此选项,您可以完成执行证书管理,证书不匹配等所有复杂性,只需fyi。如果可能,我建议#1;#34;
问题 - 有人知道如何使用https打开ASP.Net MVC应用程序中的http端口吗?