我正在尝试将Plaid webhooks集成到一个api中,但似乎在启动任何webhooks时遇到了问题。我使用了plaid快速入门代码,并添加了webhook参数:
Plaid.create({
apiVersion: "v2",
clientName: "Plaid Walkthrough Demo",
env: "<%= PLAID_ENV %>",
product: ["transactions", "auth"],
webhook: "http://localhost:3000/api/plaid/webhook",
key: "<%= PLAID_PUBLIC_KEY %>",//...
在接收端,我只是记录req.body,看看是否触发了webhook:
app.post("/api/plaid/webhook", (req, res) => {
console.log("WEBHOOK FIRED");
console.log(JSON.stringify(req.body));
});
当我在Postman中测试该路由时,req.body按照预期进行了记录,但是当创建一个新的格子项目时,它并不工作。我目前在沙盒模式下工作
发布于 2018-09-07 03:35:45
写给Plaid,它不工作的原因是因为localhost:3000不是一个有效的URL。一旦我在一个实际的服务器上尝试过它,它就能工作了。
发布于 2019-03-09 07:10:17
正如您已经发现的那样,localhost:3000不会工作,因为它不是公共的(对Plaid可见)。
当我想在本地测试webhooks时,我通常会使用如下服务:
发布于 2020-07-14 15:19:15
就像提到的Plaid支持一样,localhost:8000不是一个公共URL,所以Plaid看不到它。
但是,使用expose.sh很容易给本地主机提供一个公共URL。然后,您可以在本地测试webhook。
安装expose.sh
对于Mac或Linux,请转到Expose.sh并将显示的安装代码复制/粘贴到终端中。
对于Windows,请转到Expose.sh,下载二进制文件并将其放入路径中的某个位置。
将您的api公开给web
启动API服务器。然后运行expose <port>,其中port是运行您的API服务器的端口,如80或8080。
Expose.sh将生成一个随机的公共expose.sh地址。您将看到如下输出
https://s3rh.expose.sh is forwarding to localhost:80
http://s3rh.expose.sh is forwarding to localhost:80然后,您可以让Plaid使用公共HTTPS URL,该URL将转发给localhost。
我已经写了一个完整的指南here
免责声明:我构建了expose.sh
https://stackoverflow.com/questions/52064149
复制相似问题