在braintree的localhost上测试Webhook

时间:2014-01-20 12:37:09

标签: asp.net-mvc azure webhooks braintree

我正在开发braintree,我希望在我使用定期结算时向客户发送自定义电子邮件通知,因此每个月都应将这些自定义通知发送给所有用户。为此,我必须使用webhooks检索当前发生的事件,然后根据webhook的响应发送电子邮件通知。 (我认为这只是解决方案,如果有人知道另一种可能的解决方案请建议)。我想首先在我的localhost上测试webhooks,并且我尝试创建一个新的webhook并指定localhost路径作为目标来检索webhooks。但这显示错误“目的地未经验证”..........

我的路径是:“http://127.0.0.1:81/webhook/Accept

8 个答案:

答案 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

这将允许您轻松地将公共端点的请求引导至本地端口,您可以在该端口上运行您的逻辑并在您的本地主机上对其进行调试。