支付验签失败_微信支付 支付验证签名失败 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配置问题相关推荐
- 公众号微信朋友圈分享提示签名失败 easywechat 微信朋友圈分享签名失败
config:fail,Error: 系统错误,错误码:63002,invalid signature uniapp微信公众号朋友圈分享失败 config:fail,Error: 系统错误,错误码:6 ...
- 华为应用内支付验签失败,报错Signature length not correct
问题背景: 支付验签失败,具体报错如下: 问题分析: 支付公钥使用错误. 问题总结: 华为从IAP sdk3.x版本开始,支付公钥要参考如下章节获取,详细请参考文档: 原文链接:https://dev ...
- ios不行安卓可以 微信签名_微信支付-支付验证签名失败(iOS)
在项目中添加微信支付,iOS端的所有东西都已经按照文档搞好了,可就是跳转到微信的时候显示"支付验证签名失败",可是安卓端的都没有问题,就很郁闷了. 后来在对文档的时候发现... 6 ...
- 关于微信APP支付,提示支付验证签名失败
最近做微信APP支付,在"统一下单"里加签没有问题,调用成功,但是在 "调起支付"后却提示 支付验证签名失败. 先说一下请求的参数,参数一共有七个: prep ...
- ##iOS中的微信支付 支付验证签名失败
iOS中的微信支付 支付验证签名失败 今天要在项目中添加微信支付,iOS端的所有东西都已经按照文档搞好了,可就是跳转到微信的时候显示"支付验证签名失败",可是安卓端的都没有问题,就 ...
- 微信支付 支付验证签名失败
公众号支付,WeixinJSBridge.invoke()方法,返回错误:支付验证签名失败 检查后台签名参数.支付密钥均正确,却还是错误,最后询问微信支付技术才解决,问题所在就是微信给的java sd ...
- 服务商模式下微信小程序支付时,一直报“支付验证签名失败”错误的解决办法
在写小程序支付的时候,我是以服务商模式发起的支付,统一下单接口是调用成功的,但是在小程序调起支付的时候就报"支付验证签名失败"的错误. 主要有三个原因: 1.第二次签名用到的tim ...
- php 苹果支付验证失败的原因,iOS 微信支付报错 支付验证签名失败
可能的原因有两个: 一.传给微信sdk的参数中时间戳的格式错误. iOS中时间戳的格式要求是32位的int类型 image.png 一般服务器返回的是字符串需要强制转换成32位int类型的值 二.服务 ...
- 微信公众号之支付验证签名失败
微信公众号支付最坑莫过于paySign的生成,因为他的生成参数和统一下单获得sign的生成参数不一样,因次我在这里一直弹出支付验证签名失败.最后发现paySign的生成参数是:appId,timeSt ...
- uni 微信支付出现支付验证签名失败
uni 在app中支付出现验证签名失败 安卓正常 IOS出现这个问题 经过对照其他参数 排查到 IOS接收时间戳只能接收10位 最终 左边为正常参数返回 这个为问题参数返回 提示的错误信息 下面为支付 ...
最新文章
- 64位Ubuntu上编译32位程序操作步骤
- AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
- 【C语言】C语言实现面向对象编程之多态
- 可执行jar包的MANIFEST.MF
- 成都计算机中心起名,成都给宝宝起名的地方哪里好
- day32 java的多线程(2)
- Vue.js 3 Step 创建一个组件
- 同频切换的事件_LTE前台路测切换问题处理大礼包
- ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
- C++ (MFC)将字符串保存到指定目录下的文本中
- 基于java的网上书店系统设计(含源文件)
- c语言编程数的平方,C语言编程实例:由两个平方三位数获得三个平方二位数
- 计算机主机的拆卸步骤,电脑清灰教程:电脑主机怎么清理灰尘?台式电脑主机清理灰尘教学...
- antdownload百度网盘下载器、下载不限速
- ubuntu截图快捷健
- 一台电脑如何同时登录两个skype帐号
- Win10打补丁KB4022725出现0x80073712错误
- 投资理财-言微不劝人
- 手把手教你如何使用Multisim对Digilent FPGA开发板进行编程
- c语言空字符串不占空间,C语言中,字符串所占内存空间就是字符串有效字符的个数。...