采用wx.requstPayment[前端]和java-sdk-v3.0.9[后台]实现定额微信服务支付,前端wx.request请求,后台获取支付者唯一标识openId、统一支付颇订单unifiedOrder和签名generateSignature,返还参数都很正常,前端调用wx.requstPayment发起支付,总是得到“支付验证签名失败”。
1 二次签名有问题?
用微信签名验证工具和MD5验证,都没有异常。
2 appId有问题?
不少实践者网上发文说,二签名appId要大写,于是实验,也没有效果。
3 签名加密类型有问题?
查询,实验,果真:初始化默认HMAC-SHA256。
3.1 统一下单申请时选用MD5,不起作用
data.put("sign_type", "MD5");
wxPay.unifiedOrder(data)函数根本不理会。
3.2 修改二次签名和支付统一用HMAC-SHA256,仍然不解决问题。
全部改用MD5:
不起作用。
3.3 反复摸索,只有调整:
有效。
最终调起支付页面如下: