项目总结58:微信小程序支付-校验签名失败-问题处理
问题还原:
项目二次开发需求迭代,重新扩容订单需求时,发现小程序唤起订单支付页面时,总是报"检验签名失败"异常。
分析和处理问题
1-既然是校验签名失败,说明要么我们自己的签名不对,要么给微信参数给错了;
2-微信支付文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6;明确说明唤起支付需要5个参数进行签名校验,如下:
3-核实生成唤起支付的参数是否正确,结果发现多了三个参数,因为传给微信的签名是用8个参数生成的,而微信校验签名时自己生成的签名是用5个参数生成的,所以两个签名不一样,导致签名失败。把三个参数去掉后,就可以了;
几个比较容易坑人的问题或概念
1-针对验签这个操作,APP支付签名和小程序支付签名,对应的参数数量和名称写法时不一样的,小程序是5个参数,且参数名称使用驼峰法则;而APP支付时6个参数,参数名称是全部小写。
2-整个微信支付流程中,涉及到两个签名
1- 统一下单时,需要对下单参数进行签名
2- 唤起支付时需要校验签名,校验意味着,需要我们自己先生成签名,再把参数和签名传给微信,微信在生成一个签名,两个签名进行比较。