首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Plaid Springboot web钩子侦听器

Plaid Springboot web钩子侦听器
EN

Stack Overflow用户
提问于 2022-02-21 00:46:56
回答 1查看 445关注 0票数 0

我想知道是否有人知道用处理Plaid webhooks的最佳实践?

Plaid SDK提供了任何简单的方法来将web钩子请求对象转换为给定事件类型的模型对象吗?我只看到他们有Node示例,这些示例似乎只按键解构JSON请求对象。

还想知道他们是否要验证传入的web钩子请求实际上是来自Plaid的

代码语言:javascript
复制
 @PostMapping(value = "/webhook/plaid", produces = 
 MediaType.APPLICATION_JSON_VALUE)
 public ResponseEntity plaidWebhook(@RequestBody String payload) {
        JSONParser parser = new JSONParser(payload);
        JSONObject plaidWebhookRequest = null;
        try {
            plaidWebhookRequest = (JSONObject) parser.parse();
            String webhookType = plaidWebhookRequest.has("webhook_type") ? (String) plaidWebhookRequest.get("webhook_type") : null;
            String webhookCode = plaidWebhookRequest.has("webhook_code") ? (String) plaidWebhookRequest.get("webhook_code") : null;
            String error = plaidWebhookRequest.has("error") ? (String) plaidWebhookRequest.get("error") : null;
            String itemID = plaidWebhookRequest.has("item_id") ? (String) plaidWebhookRequest.get("item_id") : null;

            if (webhookType != null && webhookCode != null && webhookType.equals(WebhookType.ITEM.name())) {
                switch (webhookCode) {
                    case ERROR_WEBCODE:
                        log.info("Plaid webhook received: " + ERROR_WEBCODE);
                        break;

                    case PENDING_EXPIRATION:
                        log.info("Plaid webhook received: " + PENDING_EXPIRATION);
                        break;

                    case USER_PERMISSION_REVOKED:
                        log.info("Plaid webhook received: " + USER_PERMISSION_REVOKED);
                        break;
                }

            }
        } catch (ParseException e) {
            log.debug("Plaid webhook object failed to convert to JSONObject");
        }
        return ResponseEntity.status(HttpStatus.OK).body("");
    }
EN

回答 1

Stack Overflow用户

发布于 2022-02-22 17:37:04

我不是Java专家,但我可以谈谈您问题的其他部分:

您可以使用web钩子验证端点来验证web钩子是否来自Plaid:https://plaid.com/docs/api/webhooks/webhook-verification/,尽管我承认这个过程并不像使用Plaid所能做的大多数其他事情那么简单。

作为另一种选择--在这种情况下,您总是可以通过调用/item/get来检查项目状态,以确认在通过update模式发送用户之前需要更新项目。通常情况下,Plaid不会在web钩子中发送敏感信息,并且webhooks中的信息可以通过调用可以自由调用的端点来验证,所以如果不想要,就不需要“信任”Plaid web钩子而不验证它。这样做通常是明智的,例如:即使您有一个web钩子表示该项处于错误状态,用户可能已经解决了它,或者在此期间它可能已经自我恢复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71200094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档