支付验签失败_微信支付 支付验证签名失败 prepay_id配置问题
jspai方式支付,頁面一直報(bào)【簽名驗(yàn)證失敗】,簽名驗(yàn)證過了沒有問題,有一點(diǎn)錯誤就報(bào)【缺少參數(shù) total_fee】,這是誤報(bào),具體原因有很多。
原因是因?yàn)槲以谇芭_這樣寫的:
package: "prepay_id=" + data.obj.package
實(shí)際 【prepay_id=xxxx】應(yīng)該寫在后臺二次簽名那里:
前臺代碼
jsapi支付具體流程:
1.統(tǒng)一下單、生成預(yù)支付訂單
2.后臺拿著預(yù)支付訂單信息進(jìn)行二次加密,具體:
String body = request.getParameter("body");
String out_trade_no = StringUtil.getUuid();
String total_fee = request.getParameter("price");
String spbill_create_ip = StringUtil.getIpAddr(request);
String notify_url = Config.UNIFIEDORDER_NOTIFY_URL_M2;
String trade_type = "JSAPI";
String openid = request.getParameter("openid");
Map map = new HashMap();
map.put("body", body);// 商品描述
map.put("out_trade_no", out_trade_no);// 商戶訂單號
map.put("total_fee", total_fee);// 總金額
map.put("spbill_create_ip", spbill_create_ip);// 發(fā)起人IP地址
map.put("notify_url", notify_url);//通知地址
map.put("trade_type", trade_type);// 交易類型
map.put("openid", openid);// 交易類型
Map data = PayUtil.unifiedOrder(map);//獲取到預(yù)支付訂單
Map res = PayUtil.responseCode(data);//解析錯誤碼
if (res.get("return_code").equals("SUCCESS")) {
if (res.get("result_code").equals("SUCCESS")) {
System.out.println("JSAPI統(tǒng)一下單成功...");
System.out.println("JSAPI生成前臺需要的參數(shù)...");
String page_time_stamp = String.valueOf(System.currentTimeMillis()).substring(0, 10);
String page_prepay_id = res.get("prepay_id").toString();
Map pagePrams = new HashMap<>();
pagePrams.put("appId", Config.APP_ID);
pagePrams.put("timeStamp", page_time_stamp);
pagePrams.put("nonceStr", StringUtil.getUuid());
pagePrams.put("package", "prepay_id="+page_prepay_id);
pagePrams.put("signType", Config.SIGN_TYPE);
pagePrams.put("paySign", PayUtil.generateSignature(pagePrams));
return new ResponseUtil(1, "統(tǒng)一下單成功", pagePrams);
} else {
return new ResponseUtil(0, res.get("err_code_des").toString());
}
} else {
return new ResponseUtil(0, "統(tǒng)一下單失敗: " + data.get("return_msg"));
}
重點(diǎn)是紅色部分,二次簽名,參數(shù)名要和jssdk官網(wǎng)寫的一致(注意大小寫):
總結(jié)
以上是生活随笔為你收集整理的支付验签失败_微信支付 支付验证签名失败 prepay_id配置问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中数组的写法
- 下一篇: 计算机硬件性能指标参考