我正在使用Stripe集成支付系统。在这个过程中,我需要在我的本地开发人员中测试webhook。机器在我发货到QA之前。我试过以下,
local url:https:// localhost / xxx / yyy / zzz ultrahook命令:ultrahook -k localhost https://localhost.com/xxx/yyy/zzz 条纹中使用的钩子网址:http://localhost.arivanza.ultrahook.com/xxx/yyy/zzz
我也试过,https://localhost.com/,但是从条纹测试时,请求并没有从钩子中获得。
LocalTunnel:从github下载后,我找不到启动应用程序的方法。
PageKite:默认情况下会打开localhost:80,不知道如何打开https://localhost.com
非常感谢任何帮助。
答案 0 :(得分:1)
嗨,我已经尝试了自己。 请按照以下步骤进行操作
使用asp.net的条带webhook的代码示例:
var postdata =new StreamReader(HttpContext.Request.InputStream).ReadToEnd();
var data = JObject.Parse(postdata);
var eventid = data["id"].ToString();
var eventdata = StripeHelper.GetStripeEvent(eventid);
if(eventdata!=null)
{
switch(eventdata.Type)
{
case "charge.succeeded":
//charged event
break;
case "customer.source.created":
//card added
break;
case "customer.source.deleted":
//card deleted
break;
case "customer.subscription.trial_will_end":
//trial will end
break;
}
}
答案 1 :(得分:1)
如果您需要在本地开发机器上接收webhook(比方说,在localhost:1234/api/url
上),您可以使用本地“模拟”条带服务器,如localstripe。一旦推出,它就像条纹一样,如果你配置它就发送事件。
安装并运行localstripe:
pip3 install --user localstripe
localstripe
将您的程序配置为使用localhost:8420
(localstripe)而不是真正的Stripe(api.stripe.com
)。例如,使用Python程序:
import stripe
stripe.api_key = 'sk_test_anythingyouwant'
stripe.api_base = 'http://localhost:8420'`
配置localstripe以将webhook事件发送到您的程序:
curl localhost:8420/_config/webhooks/mywebhook1 \
-d url=http://localhost:1234/api/url -d secret=whsec_s3cr3t
并非所有事件都在localstripe中实现,并且它的行为可能与真正的Stripe略有不同。但它允许您在本地沙箱中测试您的应用程序,而无需触及实际的Stripe服务器。
答案 2 :(得分:0)
尽管其他答案有效,但我认为它们有点过时了。
Stripe 现在有一个 CLI 工具,允许您在 Stripe 和本地主机之间创建连接。步骤如下
创建处理 Stripe 网络钩子调用的网络钩子文件。假设此文件的路径为 http://localhost/webhook
。
转到 stripe.com,转到仪表板,然后单击 Developers 和 Webhooks,然后添加一个新端点。确保该端点中的 URL 是上述步骤 1 中的 URL(即 http://localhost/webhook
)
在本地下载并安装 Stripe CLI。然后按照说明login
在您的 Stripe CLI 中,运行以下命令:
stripe listen --forward-to http://localhost/webhooks
。
这最终会监听 Stripe 的任何 webhooks 到您的本地服务器,并将它们转发到您本地的服务器(即,它在两者之间建立了一座桥梁)
测试您的工作。
上述解决方案的问题在于它不会将 webhook 的响应发送回 Stripe 服务器(因为 http://localhost/webhook
是您的网络专用的)。
如果您坚持要回复给 Stripe,那么您应该
将您的本地主机映射到公共域
使用隧道,例如 ngrok
。 This answer 描述了如何使用 ngrok
,但对我来说,我以这种方式调用 ngrok
:
ngrok http -host-header=localhost 80
上面的调用会给我类似 https://<some-random-numnber>.ngrok.io
因此在 stripe.com 中,我必须将端点写为
https://<some-random-numnber>.ngrok.io/<path-to-webhook-response-page>/
希望能帮到你
答案 3 :(得分:0)
尽管其他答案有效,但我认为它们有点过时了。
Stripe 现在有一个 CLI 工具,允许您在 Stripe 和本地主机之间创建连接。步骤如下
创建处理 Stripe 网络钩子调用的网络钩子文件。让我们 假设这个文件的路径是 http://localhost/webhook。
转到 stripe.com,转到仪表板,然后单击开发人员,然后 Webhooks,然后添加一个新端点。确保其中的 URL 端点是上述步骤 1 中的端点(即 http://localhost/webhook)
在本地下载并安装 Stripe CLI。然后按照 登录说明
在您的 Stripe CLI 中,运行以下命令:
stripe listen --forward-to http://localhost/webhooks.
This will eventually listen to Stripe for any webhooks to your local
server, and forward them to your sever locally (i.e, it creates a
bridge between the two)
在VerifyCsrfToken[中间件]中注册网址: 类 VerifyCsrfToken 扩展了 BaseVerifier { 受保护的 $except = [ '网络钩子' ]; }
测试你的工作