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配置问题相关推荐

  1. 公众号微信朋友圈分享提示签名失败 easywechat 微信朋友圈分享签名失败

    config:fail,Error: 系统错误,错误码:63002,invalid signature uniapp微信公众号朋友圈分享失败 config:fail,Error: 系统错误,错误码:6 ...

  2. 华为应用内支付验签失败,报错Signature length not correct

    问题背景: 支付验签失败,具体报错如下: 问题分析: 支付公钥使用错误. 问题总结: 华为从IAP sdk3.x版本开始,支付公钥要参考如下章节获取,详细请参考文档: 原文链接:https://dev ...

  3. ios不行安卓可以 微信签名_微信支付-支付验证签名失败(iOS)

    在项目中添加微信支付,iOS端的所有东西都已经按照文档搞好了,可就是跳转到微信的时候显示"支付验证签名失败",可是安卓端的都没有问题,就很郁闷了. 后来在对文档的时候发现... 6 ...

  4. 关于微信APP支付,提示支付验证签名失败

    最近做微信APP支付,在"统一下单"里加签没有问题,调用成功,但是在 "调起支付"后却提示  支付验证签名失败. 先说一下请求的参数,参数一共有七个: prep ...

  5. ##iOS中的微信支付 支付验证签名失败

    iOS中的微信支付 支付验证签名失败 今天要在项目中添加微信支付,iOS端的所有东西都已经按照文档搞好了,可就是跳转到微信的时候显示"支付验证签名失败",可是安卓端的都没有问题,就 ...

  6. 微信支付 支付验证签名失败

    公众号支付,WeixinJSBridge.invoke()方法,返回错误:支付验证签名失败 检查后台签名参数.支付密钥均正确,却还是错误,最后询问微信支付技术才解决,问题所在就是微信给的java sd ...

  7. 服务商模式下微信小程序支付时,一直报“支付验证签名失败”错误的解决办法

    在写小程序支付的时候,我是以服务商模式发起的支付,统一下单接口是调用成功的,但是在小程序调起支付的时候就报"支付验证签名失败"的错误. 主要有三个原因: 1.第二次签名用到的tim ...

  8. php 苹果支付验证失败的原因,iOS 微信支付报错 支付验证签名失败

    可能的原因有两个: 一.传给微信sdk的参数中时间戳的格式错误. iOS中时间戳的格式要求是32位的int类型 image.png 一般服务器返回的是字符串需要强制转换成32位int类型的值 二.服务 ...

  9. 微信公众号之支付验证签名失败

    微信公众号支付最坑莫过于paySign的生成,因为他的生成参数和统一下单获得sign的生成参数不一样,因次我在这里一直弹出支付验证签名失败.最后发现paySign的生成参数是:appId,timeSt ...

  10. uni 微信支付出现支付验证签名失败

    uni 在app中支付出现验证签名失败 安卓正常 IOS出现这个问题 经过对照其他参数 排查到 IOS接收时间戳只能接收10位 最终 左边为正常参数返回 这个为问题参数返回 提示的错误信息 下面为支付 ...

最新文章

  1. 64位Ubuntu上编译32位程序操作步骤
  2. AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
  3. 【C语言】C语言实现面向对象编程之多态
  4. 可执行jar包的MANIFEST.MF
  5. 成都计算机中心起名,成都给宝宝起名的地方哪里好
  6. day32 java的多线程(2)
  7. Vue.js 3 Step 创建一个组件
  8. 同频切换的事件_LTE前台路测切换问题处理大礼包
  9. ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
  10. C++ (MFC)将字符串保存到指定目录下的文本中
  11. 基于java的网上书店系统设计(含源文件)
  12. c语言编程数的平方,C语言编程实例:由两个平方三位数获得三个平方二位数
  13. 计算机主机的拆卸步骤,电脑清灰教程:电脑主机怎么清理灰尘?台式电脑主机清理灰尘教学...
  14. antdownload百度网盘下载器、下载不限速
  15. ubuntu截图快捷健
  16. 一台电脑如何同时登录两个skype帐号
  17. Win10打补丁KB4022725出现0x80073712错误
  18. 投资理财-言微不劝人
  19. 手把手教你如何使用Multisim对Digilent FPGA开发板进行编程
  20. c语言空字符串不占空间,C语言中,字符串所占内存空间就是字符串有效字符的个数。...

热门文章

  1. 天阔服务器用户名密码,曙光天阔服务器远程控制手册.doc
  2. 2022年废纸价格预测
  3. 秦王扫六合,虎视何雄哉
  4. [转]浅谈缓冲区溢出之栈溢出
  5. 构造器(有参、无参)
  6. java 计算时差_java计算时间差的几种方法
  7. SpringSession实战项目(基于SpringBoot项目)【附源码】
  8. pandas数据分析基础之时间序列
  9. 杨辉三角 C语言实现【一维数组】
  10. MRTG (Multi Router Traffic Grapher)