微信支付提交订单的时候,一直返回签名错误的问题。git

主要点在于:算法

一、全部参数,不能有中文、特殊字符微信

二、全部须要提交的参数,除了sign以外都须要参与签名算法app

三、全部参数的参与顺序,须要排序(按照accsii升序排序)微信支付

附上签名算法:code

/**

* 微信支付签名算法sign

* @param parameters

* @return

*/

public static String createSign(SortedMap parameters){

StringBuffer sb = new StringBuffer();

Set es = parameters.entrySet();//全部参与传参的参数按照accsii排序(升序)

Iterator it = es.iterator();

while(it.hasNext()) {

Map.Entry entry = (Map.Entry)it.next();

String k = (String)entry.getKey();

Object v = entry.getValue();

if(null != v && !"".equals(v)

&& !"sign".equals(k) && !"key".equals(k)) {

sb.append(k + "=" + v + "&");

}

}

sb.append("key=" + //这里是商户那里设置的key);

System.out.println("签名字符串:"+sb.toString());

// System.out.println("签名MD5未变大写:" + MD5Util.MD5Encode(sb.toString(), characterEncoding));

String sign = md5Password(sb.toString()).toUpperCase();

return sign;

}

/**

* 生成32位md5码

*

* @param key

* @return

*/

public static String md5Password(String key) {

char hexDigits[] = {

'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'

};

try {

byte[] btInput = key.getBytes();

// 得到MD5摘要算法的 MessageDigest 对象

MessageDigest mdInst = MessageDigest.getInstance("MD5");

// 使用指定的字节更新摘要

mdInst.update(btInput);

// 得到密文

byte[] md = mdInst.digest();

// 把密文转换成十六进制的字符串形式

int j = md.length;

char str[] = new char[j * 2];

int k = 0;

for (int i = 0; i < j; i++) {

byte byte0 = md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

return new String(str);

} catch (Exception e) {

return null;

}

}

微信支付 签名 java_Java后台微信支付签名算法(MD5)相关推荐

  1. 微信jssdk签名java_JAVA生成微信JSSDK接口签名

    签名生成规则如下: 参与签名的字段包括有效的 jsapi_ticket(获取方式详见微信 JSSDK 文档), noncestr (随机字符串,由开发者随机生成),timestamp (由开发者生成的 ...

  2. jsapi支付签名_PHP实现微信支付(jsapi支付)流程步骤详解

    最近接触到一个项目,涉及到微信支付,搞微信开发这么久以来,还没搞过支付,之前也就搞过公众号发红包,感谢前辈们的探索,我看了他们的博文,让我少走了很多弯路. 前期准备: 1.微信认证服务号,并且开通了微 ...

  3. 微信支付 通知 java_java之微信支付通知

    微信支付,是现在大多数平台都需要接入的一个支付方式,没办法,谁让现在的用户都习惯了这种消费方式呢 我今天只说说微信支付通知,我们后台怎么接收通知,并把我们的订单的状态改为已支付, 至于为什么不说支付的 ...

  4. 微信小程序+java后台实现支付(java操作)

    支付,在微信小程序上面称为当一个用户使用该小程序,当进入到支付环节,我们需要调用微信支付接口过程,进行一系列的操作,并记录下来. 微信小程序与java接口实现支付操作,大致思路如下: 1.微信小程序调 ...

  5. (微信支付签名失败)微信支付v2版本踩坑-二次签名不同类型签名参数key不同

    小伙伴们在做微信支付对接的时候会遇到各种各样的坑,特别是微信支付v2版本,微信支付的二次签名官方文档没有给出明显的签名参数,导致在开发中很容易碰到微信支付的这个坑(微信支付签名失败),app签名key ...

  6. 微信小程序netcore后台api支付结果通知接口的坑

    终于搞定回调通知了,这里总结下几个暗坑 1.回调通知一定是post接口,且可以直接访问 2.需要解析回调的HttpContext内容才能知道结果 3.收到信息一定要进行验证判断是否来自于微信渠道 4. ...

  7. 微信支付退款 java_Java后台实现微信支付和微信退款

    微信支付流程 都是我自己工作中开发的,亲测可用,不喜勿喷. controller中我是这么写的,你们需要根据自己的业务需求改动.ResponseBean是我自己封装的,你们可以改成你们想要的形式. / ...

  8. java微信支付签名生成_微信APP支付(Java后台生成签名具体步骤)

    public class PayCommonUtil { //定义签名,微信根据参数字段的ASCII码值进行排序 加密签名,故使用SortMap进行参数排序 public static String ...

  9. 微信红包接口 java_java调用微信现金红包接口的心得与体会总结

    这几天看了下之前写的有关微信支付的博客,看的人还是挺多的,看了下留言不知道是因为博客写的不够细还是什么情况,大多都找我要源码,我觉得吧程序员还是需要有这么一个思考的过程,因此没直接给源码,俗话说&qu ...

  10. java 微信jssdk签名_JAVA生成微信JSSDK接口签名

    签名生成规则如下: 参与签名的字段包括有效的 jsapi_ticket(获取方式详见微信 JSSDK 文档), noncestr (随机字符串,由开发者随机生成),timestamp (由开发者生成的 ...

最新文章

  1. 通知:前blog文章全丢了..
  2. 华为云严选上新啦!高效准确的数据同步方案来了
  3. Android 功耗(10)---电流波形图(power monitor)
  4. Python 爬下的必胜客数据背后,藏着什么样的信息?
  5. Linux 内核调优
  6. 300本计算机编程的经典书籍下载
  7. excel导出文本格式设置为数值(easypoi)
  8. 家长进课堂 计算机ppt,【家长进朴园】探秘计算机—5.7中队家长进课堂活动
  9. 内核block层IO调度器—bfq算法深入探索3
  10. 修心三不:不生气不计较不抱怨
  11. CentOs下安装pip3
  12. 微信官方发红包DEMO
  13. 设计一个Dog类,包含名字,年龄,颜色三个属性
  14. 自主实现sleep函数(代码实现)
  15. 某星级酒店警卫队定岗定编项目纪实 ——完善定岗定编,转向人性化管理
  16. 并购狂魔Oracle到底在做什么战略布局
  17. 指令系统(一)数据传送指令
  18. ARM嵌入式开发总结
  19. linux下MaKefile编写
  20. win10系统dnf安装不上服务器失败,win10 1903系统dnf图表系统组建失败的修复方法

热门文章

  1. atlas 1.1.0 的本地开发文档(编译)
  2. 【服务器数据恢复】服务器raid5磁盘阵列分区丢失的数据恢复案例
  3. 微信小程序登录功能实现(最新)
  4. 论文查重不能超过多少?
  5. mysql设计用户标签库_针对Tag/标签的数据库设计思考 | 学步园
  6. 古人说的雅事,通常是做什么?
  7. 【Java工具类】中文转换成汉语拼音工具-pinyin4j
  8. MES工程师新手,该怎么学习?学习哪些技术?
  9. 【QT】设计一个秒表(跑步计时器)
  10. C语言中心对称图形定义,中心对称图形的定义