支付宝or微信支付过程中需要二次签名的思考

最近碰到了小程序支付的功能,由于是第一次写这样的功能,看完前后端的开发文档,对于里面的二次签名比较好奇: 服务端返回的数据都没有原始订单里的价格等参数,为什么小程序还要二次签名呢?不可以直接拿来调起支付吗?

以下是我一些不成熟的思考,如有不对,还望指正,感谢!


参数签名的作用

  1. 请求来源(身份)是否合法
  2. 防止请求参数被篡改
  3. 请求的唯一性(不可复制)

结合流程思考

  1. 由服务端利用加密的参数签名发起统一订单

防止参数被篡改

  1. 时间戳

请求的唯一性

  1. 32位随机字符串

辅助校验防止信息被篡改

  1. 微信支付中心返回的参数由服务端传达给客户端 —— 未加密

  2. 客户端进行二次签名且 appid 和 api key 均不在数据传输中,即由小程序完成二次加密

防止支付订单被替换

几乎所有加密都不可逆,这应该是对于金融领域的安全性来设计的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章