我想知道是否有人知道用处理Plaid webhooks的最佳实践?
Plaid SDK提供了任何简单的方法来将web钩子请求对象转换为给定事件类型的模型对象吗?我只看到他们有Node示例,这些示例似乎只按键解构JSON请求对象。
还想知道他们是否要验证传入的web钩子请求实际上是来自Plaid的
@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("");
}发布于 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钩子表示该项处于错误状态,用户可能已经解决了它,或者在此期间它可能已经自我恢复。
https://stackoverflow.com/questions/71200094
复制相似问题