问题描述

最近做APP支付,微信下单没有问题,成功获取了预支付订单id,然后二次签名提供给前端,却一直提示支付签名验证失败,不知道什么原因,故期望大神能解答一下

二次签名

                   Map<String, String> returnMap = new HashMap<>();returnMap.put("appid", response.get("appid"));returnMap.put("noncestr", response.get("nonce_str"));returnMap.put("package","Sign=WXPay");returnMap.put("partnerid", response.get("mch_id"));returnMap.put("prepayid", response.get("prepay_id"));returnMap.put("timestamp", String.valueOf(System.currentTimeMillis() / 1000));//单位为秒String sign = WXPayUtil.generateSignature(returnMap, config.getKey());// 二次签名returnMap.put("sign",sign); //签名

签名代码使用的是微信提供的SDK

/*** 生成签名** @param data 待签名数据* @param key API密钥* @return 签名*/public static String generateSignature(final Map<String, String> data, String key) throws Exception {return generateSignature(data, key, SignType.MD5);}/*** 生成签名. 注意,若含有sign_type字段,必须和signType参数保持一致。** @param data 待签名数据* @param key API密钥* @param signType 签名方式* @return 签名*/public static String generateSignature(final Map<String, String> data, String key, SignType signType) throws Exception {Set<String> keySet = data.keySet();String[] keyArray = keySet.toArray(new String[keySet.size()]);Arrays.sort(keyArray);StringBuilder sb = new StringBuilder();for (String k : keyArray) {if (k.equals(WXPayConstants.FIELD_SIGN)) {continue;}if (data.get(k).trim().length() > 0) // 参数值为空,则不参与签名sb.append(k).append("=").append(data.get(k).trim()).append("&");}sb.append("key=").append(key);if (SignType.MD5.equals(signType)) {return MD5(sb.toString()).toUpperCase();}else if (SignType.HMACSHA256.equals(signType)) {return HMACSHA256(sb.toString(), key);}else {throw new Exception(String.format("Invalid sign_type: %s", signType));}}

解决办法

已解决,也不知道什么原因,调整了一下数据就好了

APP支付支付签名验证失败相关推荐

  1. java app微信支付接口_JAVA微信APP支付接口整合

    上次我们看到了支付宝的APP支付工具,那么这次就来封装封装微信的APP支付;如果已经清楚了支付宝的支付流程,那么微信支付也和它大同小异了,当然这其中肯定是有各种变化的: 首先让我把微信支付文档的官网贴 ...

  2. APP 微信支付java后台代码(解决支付失败返回-1)

    开发之前的准备工作: APP支付申请条件 申请成为APP支付商户需要满足以下条件: 1.APP支付商户,须拥有微信开放平台(http://open.weixin.qq.com)的APPID: 2.AP ...

  3. 微信支付服务商,![CDATA[sub_mch_id与sub_appid不匹配],微信小程序支付,签名错误,CDATA[签名错误]解决方法,支付签名验证失败

    微信支付服务商,微信小程序支付,签名错误,CDATA[签名错误]解决方法 1:服务商和普通的商户支付在代码上没有太大差异(不同的是上传的参数,而且微信支付服务商参数上比较难找,官方文档又太简洁,所以很 ...

  4. 微信支付签名验证失败的问题

    微信签名验证失败(两个地方遇到) 第一个在统一下单的时候签名验证失败 去微信社区里面查了下,有些人是自己代码错的,但是我拿的微信sdk的demo代码做的改造,然后检查几遍也没看出来问题,我用的是小程序 ...

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

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

  6. 服务商模式支付签名验证失败php,服务商模式小程序支付签名失败,请求管理员和大牛解决!!!...

    服务商模式小程序支付签名失败,请求管理员和大牛解决!!! 根据服务商模式的小程序支付文档: ①商户server调用支付统一下单: 统一下单成功返回预付单: order appid"wx11a ...

  7. Unity微信支付,IOS提示支付签名验证失败。安卓没问题

    最近手上有一个Unity项目,Java后台,原作者跑路,我们属于半路上车. 打包ipa的时候碰到了很多问题. 在原来项目的基础上引入了微信支付体系. 安卓支付流程没有出问题,但是到了IOS这里,千辛万 ...

  8. 关于微信app支付,支付验证签名失败

    用的是uniapp的方法,一直报 支付验证签名失败 然后sign只截取前30位字符串,就能成功支付了 不明白是什么问题,希望可以帮到你

  9. php支付接口签名,php实现支付接口签名验证

    前言 游戏服务器的玩家充值流程,如果通过google商店或者app store进行充值的话,需要实现回调支付地址.玩家充值成功以后,app store或者google商店会向回调地址传递参数,验证玩家 ...

最新文章

  1. webstorm的使用技巧——1
  2. 上周热点回顾(12.8-12.14)
  3. c# 连接Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value:类型搞混弄出的错误...
  4. Codeforces 918D/917B - MADMAX
  5. Nginx负载均衡状态介绍
  6. mysql connector net 6.9.3_MySQL Connector/Net 6.9.3 发布 MySQL Connector/Net 6.9.3下载
  7. Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 分块
  8. stream分组求和
  9. 抖音上很火的3D立体动态相册实现代码!
  10. java ehcache使用_EhCache使用详细介绍
  11. isSelected() 的使用
  12. 贵州省正安县格林镇:“爱心妈妈”来了!
  13. IT 行业平均薪资第一
  14. latex中插入两张子图片
  15. html中去除下划线,下划线怎么取消?
  16. HTML简易时钟教程,html5 svg简单的模拟时钟特效-HTML5动画
  17. C语言零基础入门(一 简介)
  18. 2021年全球区块链产业重要投资和发展领域
  19. 利用简单游戏项目教你如何用java如何画对象
  20. PCB板厂工厂常用的英文

热门文章

  1. HDUOJ 1069 Monkey and Banana
  2. 少儿Python视频课程A级简介
  3. Seata的四种模式介绍
  4. linux使用指定网卡ping,LINUX ping 指定网卡
  5. 天龙3d服务器维护,天龙八部3D4月6日维护服务器公告
  6. 聚焦扶贫,爱在瑶山,深圳市华南物流商会在行动
  7. [坑]微信支付首次支付成功,第二次调用失败
  8. 最简单的内网穿透教程
  9. MVP2006成都聚会图片
  10. 渠道、数据、技术,谁才是网络信贷市场的决胜因素?