我正在开发braintree,我希望在我使用定期结算时向客户发送自定义电子邮件通知,因此每个月都应将这些自定义通知发送给所有用户。为此,我必须使用webhooks检索当前发生的事件,然后根据webhook的响应发送电子邮件通知。 (我认为这只是解决方案,如果有人知道另一种可能的解决方案请建议)。我想首先在我的localhost上测试webhooks,并且我尝试创建一个新的webhook并指定localhost路径作为目标来检索webhooks。但这显示错误“目的地未经验证”..........
答案 0 :(得分:8)
这些是在开发webhook期间可以使用的一些工具:
1)PostCatcher,
2)RequestBin,
3)ngrok,
4)PageKite和
5)LocalTunnel
http://telerivet.com/help/api/webhook/testing
https://www.twilio.com/blog/2013/10/test-your-webhooks-locally-with-ngrok.html
答案 1 :(得分:2)
另一种测试它的方法是通过创建WebAPI并通过Postman将数据发布到POST方法中。为此,只需在Visual Studio中创建一个WebAPI。在API控制器中,创建POST方法。
/// <summary>
/// Web API POST method for Braintree Webhook request
/// The data is passed through HTTP POST request.
/// A sample data set is present in POSTMAN HTTP Body
/// /api/webhook
/// </summary>
/// <param name="BTRequest">Data from HTTP request body</param>
/// <returns>Webhook notification object</returns>
public WebhookNotification Post([FromBody]Dictionary<String, String> BTRequest)
{
WebhookNotification webhook = gateway.WebhookNotification.Parse(BTRequest["bt_signature"], BTRequest["bt_payload"]);
return webhook;
}
在邮递员中,将以下数据作为原始JSON发布到正文中。
{
"bt_signature":"Generated Data",
"bt_payload":"Very long generated data"
}
上述Json词典的数据是通过以下代码生成的:
Dictionary<String, String> sampleNotification = gateway.WebhookTesting.SampleNotification(WebhookKind.DISPUTE_OPENED, "my_Test_id");
// Your Webhook kind and your test ID
只需从示例通知中选择数据并将其放在JSON上方即可。运行您的WebAPI,放置调试器。在Postman中添加localhost URL,选择POST,然后单击Send。 您的POST方法应该被点击。
此外,请不要忘记添加网关详细信息:
private BraintreeGateway gateway = new BraintreeGateway
{
Environment = Braintree.Environment.SANDBOX,
MerchantId = "Your Merchant Key",
PublicKey = "Your Public Key",
PrivateKey = "Your Private Key"
};
我希望这会有所帮助!
答案 2 :(得分:1)
我在Braintree工作。如果您需要更多帮助,请get in touch with our support team。
为了测试webhook,您需要能够通过Braintree Gateway访问您的应用程序。 localhost
地址不是。尝试使用外部IP地址,并确保可以从互联网上访问正确计算机上的端口。
有关设置webhooks的更多信息,请查看Braintree webhook guide。
答案 3 :(得分:1)
您可以使用PutsReq来模拟您想要的响应,并在开发过程中进行端到端测试。
答案 4 :(得分:1)
快速进行脏污测试: http://requestb.in/
进行更正式的测试(例如持续集成): https://www.runscope.com/
答案 5 :(得分:0)
如果您有在线服务器,则可以将计算机的端口转发到该服务器。
ssh -nNT -R 9090:localhost:3000 root@yourvds.com
然后将webhook指定为http://yourvds.com:9090/webhook
所有请求都将转发给您的机器,您将能够看到日志
答案 6 :(得分:0)
我知道这是一个老问题,但according to the docs,您可以使用此代码测试您的webhook代码:
Dictionary<String, String> sampleNotification = gateway.WebhookTesting.SampleNotification(
WebhookKind.SUBSCRIPTION_WENT_PAST_DUE, "my_id"
);
WebhookNotification webhookNotification = gateway.WebhookNotification.Parse(
sampleNotification["bt_signature"],
sampleNotification["bt_payload"]
);
webhookNotification.Subscription.Id;
// "my_id"
答案 7 :(得分:0)
您可以使用 Svix CLI 侦听器:https://github.com/svix/svix-cli#using-the-listen-command
这将允许您轻松地将公共端点的请求引导至本地端口,您可以在该端口上运行您的逻辑并在您的本地主机上对其进行调试。