日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

支付验签失败_微信支付 支付验证签名失败 prepay_id配置问题

發布時間:2023/12/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 支付验签失败_微信支付 支付验证签名失败 prepay_id配置问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jspai方式支付,頁面一直報【簽名驗證失敗】,簽名驗證過了沒有問題,有一點錯誤就報【缺少參數 total_fee】,這是誤報,具體原因有很多。

原因是因為我在前臺這樣寫的:

package: "prepay_id=" + data.obj.package

實際 【prepay_id=xxxx】應該寫在后臺二次簽名那里:

前臺代碼

jsapi支付具體流程:

1.統一下單、生成預支付訂單

2.后臺拿著預支付訂單信息進行二次加密,具體:

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);// 發起人IP地址

map.put("notify_url", notify_url);//通知地址

map.put("trade_type", trade_type);// 交易類型

map.put("openid", openid);// 交易類型

Map data = PayUtil.unifiedOrder(map);//獲取到預支付訂單

Map res = PayUtil.responseCode(data);//解析錯誤碼

if (res.get("return_code").equals("SUCCESS")) {

if (res.get("result_code").equals("SUCCESS")) {

System.out.println("JSAPI統一下單成功...");

System.out.println("JSAPI生成前臺需要的參數...");

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, "統一下單成功", pagePrams);

} else {

return new ResponseUtil(0, res.get("err_code_des").toString());

}

} else {

return new ResponseUtil(0, "統一下單失敗: " + data.get("return_msg"));

}

重點是紅色部分,二次簽名,參數名要和jssdk官網寫的一致(注意大小寫):

總結

以上是生活随笔為你收集整理的支付验签失败_微信支付 支付验证签名失败 prepay_id配置问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。