什么是WEB Hook?有哪些实现方式?
豆豆 2020-07-09 09:16:00 1072人已围观
一、什么是Web Hook?
Webhook是一个API概念,简单来说就是一种反向API机制,类似于消息推送,并且变得越来越流行。我这里有一张图为大家解释清楚Web Hook的实际应用场景,拿支付宝的支付场景为例:
仔细看清楚上面时序图中的第6、7、8 三步。
二、如何使用webhook?
接着上面第一章节来说,常规的项目一般是使用第6小步,例如:客户需要请求支付宝的数据,那么就需要主动发起一个GET/POST 的请求,在请求处理后同步返回信息;但是有些业务场景是无法立即获得反馈的,那么怎么办?很简单让对方留下一个联系方式,等我有消息了我主动联系您,这就是上面图片中的第7小步,让对方留一个notifyUrl地址,在支付宝得到准确信息后,支付宝通过这个地址来通知商户。那如果第6、7都失败了怎么办?那就再给他们留一个补救的入口(第8小步)让客户走常规的方式主动来请求信息。这种组合起来就是一个完整的闭环,正常和异常情况都有考虑。
三、主要应用场景
web hook通常应用于异步编程中,如:高安全的支付、微信登录(OAuth)、资源同步、资源创建与更新、耗时较长。
四、安全问题
由于webhook会向公网上的hook url发送数据,这就意味着某些不好心的人可能会找到这个url,从而进行发送错误的数据,但是我们可以通过以下一些技术手段来解决这个问题:
增加token机制,增加auth认证,只接收对应服务端domain或IP请求,数据签名等,例如支付宝和微信支付行业就是使用数据签名来实现的,如下图:
第五、附录
1、支付宝支付接口文档:https://opendocs.alipay.com/open/270/105899
2、微信支付接口文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1