接入微信JSAPI支付的时候遇到的问题:
调用的时候出现无效参数的问题
1.这个问题要解决主要是要看调用微信支付的时候,传过去的参数名是否对应上。
调用的时候出现验证签名失败的问题
1.出现这个问题的时候要去查看必要的传输的数据是否全部提交到请求中
2.如果传输的数据都正确了要查看是否是加密方式的错误
3.sign参数是需要对前面的所有参数进行加密之后在set进去的,这个要注意。
给前端调用JSAPI支付的时候出现签名错误
1.检查后台返回给前端的微信公众号支付数据是否齐全,因为是要验签的,所以少一个参数都会出现问题.
2.在后台请求微信统一下单接口的时候(trade_type=JSAPI),微信用户的openid为必传参数
3.调用统一下单接口的时候,如果使用的是微信的SDK要注意签名加密方式,在前端获取微信支付调用时需要传参说明验签方式
4.在后台调用统一下单接口(trade_type=JSAPI)成功之后,获取到的数据,是需要传输给前端,让前端拉起微信支付的,而前端调用这个接口的时候还需要一个时间戳的参数,这个时候可以考虑在调用统一下单接口的时候自定义一个参数传输给微信,在回调的时候同时获取,也可以在调用下单接口回调的数据中加入.(这个时间戳是秒格式的时间戳,java获取方式:new Date().getTime() / 1000 即可)
5.要注意后台调用微信统一下单接口后返回的数据,是key=value格式,虽然字段看上去和前端需要的参数差不多,但是key的字段名是有区别的
6.还有在传输拉起支付的数据给前端的时候,要注意将这些数据**(appId,timeStamp,nonceStr,package,signType,注意顺序,因为需要加密是有顺序要求的)**进行二次加密,(注意package的value值在其前面加上"prepay_id="),将以上数据加密之后设入paySign中,使用的加密规则和统一下单接口的加密规则一致(这个坑应该是最多人会踩到的),然后将数据传输给前端即可.
PS:有不对的地方希望可以指出让我改正.