10

我正在研究 Braintree,我想在处理定期计费时向我的客户发送自定义电子邮件通知,因此每个月都应该将这些自定义通知发送给所有用户。为此,我必须使用 webhook 来检索当前发生的事件,然后根据 webhook 的响应发送电子邮件通知。(我认为这只是这种情况下的解决方案,如果有人知道另一种可能的解决方案,请提出建议)。我想首先在我的本地主机上测试 webhook,并且我尝试创建一个新的 webhook 并将本地主机路径指定为检索 webhook 的目标。但这显示了一个错误“目的地未验证”............

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

4

8 回答 8

11

这些是在 webhook 开发过程中可以使用的一些工具:

1) PostCatcher,

2) 请求箱,

3)ngrok,

4) PageKite 和

5) 本地隧道

http://telerivet.com/help/api/webhook/testing

https://www.twilio.com/blog/2013/10/test-your-webhooks-locally-with-ngrok.html

于 2014-02-25T10:51:09.047 回答
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;
}

在 Postman 中,将 Body 中的以下数据作为原始 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,然后单击发送。你的 POST 方法应该被击中。

另外,不要忘记添加您的网关详细信息:

private BraintreeGateway gateway = new BraintreeGateway
        {
            Environment = Braintree.Environment.SANDBOX,
            MerchantId = "Your Merchant Key",
            PublicKey = "Your Public Key",
            PrivateKey = "Your Private Key"
        };

我希望这有帮助!

于 2020-05-06T10:24:37.770 回答
1

我在布伦特里工作。如果您需要更多帮助,请与我们的支持团队联系

为了测试 webhook,您的应用需要能够被 Braintree 网关访问。localhost地址不是。尝试使用您的外部 IP 地址并确保可以从 Internet 访问正确计算机上的端口。

查看Braintree webhook 指南,了解有关设置 webhook 的更多信息。

于 2014-01-21T15:50:19.707 回答
1

您可以使用PutsReq来模拟您想要的响应并在开发中进行端到端测试。

于 2014-05-07T22:58:12.357 回答
1

对于快速'n脏测试: http ://requestb.in/

对于更正式的测试(例如持续集成): https ://www.runscope.com/

于 2014-11-20T03:31:55.897 回答
0

如果您有在线服务器,您可以将端口从您的计算机转发到该服务器。

ssh -nNT -R 9090:localhost:3000 root@yourvds.com

然后将 webhook 指定为http://yourvds.com:9090/webhook

所有请求都将转发到您的机器,您将能够看到日志

于 2015-08-13T15:56:25.427 回答
0

我知道这是一个老问题,但根据文档,您可以使用此代码来测试您的 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"
于 2016-11-02T17:57:32.583 回答
0

您可以使用 Svix CLI 侦听器:https ://github.com/svix/svix-cli#using-the-listen-command

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

于 2021-07-20T20:17:35.630 回答