<signCreateUtil>package com.*.utilsTest;import java.security.MessageDigest;
import java.util.*;/*** 微信支付接口签名生成工具*/
public class SignCreateUtil {/*** 生成签名* @param key 商户密钥* @param parameters  装在签名参数的SortedMap* @return 加密后签名*/public static String createSign(String key, SortedMap<String, String> parameters) {SortedMap<String, String> stringSortedMap = paraFilter(parameters);  //参数过滤StringBuffer sb = new StringBuffer();  //创建拼接字符串对象Set es = stringSortedMap.entrySet();   //遍历SortedMapIterator 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);String sign = MD5Encode(sb.toString(), "UTF-8").toUpperCase();  //把拼接好的字符串MD5加密生成签名return sign;}/*** 除去数组中的空值和签名参数* @param sArray 签名参数组* @return result 去掉空值与签名参数后的新签名参数组*/private static SortedMap<String, String> paraFilter(SortedMap<String, String> sArray) {SortedMap<String, String> result = new TreeMap<String, String>();  //构建新的容器用作返回if (sArray == null || sArray.size() <= 0) {return result;}for (String key : sArray.keySet()) {String value = sArray.get(key);if (value == null || value.equals("") || key.equalsIgnoreCase("sign")|| key.equalsIgnoreCase("sign_type")) {continue;}result.put(key, value);}return result;}/***  md5加密工具* @param origin 签名参数组成的字符串* @param charsetName  生成字符串的编码字符集*/private static String MD5Encode(String origin, String charsetName) {String resultString = null;  //构建返回字符串try {resultString = new String(origin);MessageDigest md = MessageDigest.getInstance("MD5");if (charsetName == null || "".equals(charsetName))resultString = byteArrayToHexString(md.digest(resultString.getBytes()));elseresultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetName)));} catch (Exception exception) {exception.printStackTrace();}return resultString;}private static String byteArrayToHexString(byte b[]) {StringBuffer resultSb = new StringBuffer();for (int i = 0; i < b.length; i++)resultSb.append(byteToHexString(b[i]));return resultSb.toString();}private static String byteToHexString(byte b) {int n = b;if (n < 0)n += 256;int d1 = n / 16;int d2 = n % 16;return hexDigits[d1] + hexDigits[d2];}private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };}
<Test>package com.*.utilsTest;import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;@SuppressWarnings("all")
public class Test {public static void main(String[] args) {String key = "1234567";SortedMap<String , String> arrays = new TreeMap<>();arrays.put("appid" , "wxd930ea5d5a258f4f");arrays.put("mch_id" , "10000100");arrays.put("device_info" , "1000");arrays.put("body" , "test");arrays.put("nonce_str" , "ibuaiVcKdpRxkhJA");String sign = SignCreateUtil.createSign(key, arrays);System.out.println(sign);/***  09BED67F77E9D359A5014C4DAE84F42E  使用微信签名工具生成的签名,用作比较*  09BED67F77E9D359A5014C4DAE84F42E*/}
}

生成微信支付接口的签名工具相关推荐

  1. 微信支付接口,提示:调用支付jsapi缺少参数: $key0$

    下面是 官方给的 帮助文档. 支付返回签名错误 注意签名参数的大小写,支付密钥key要到商户平台设置,设置的规则是32位数字与字母大小写的组合.以下链接为签名过程. (https://pay.weix ...

  2. java生成微信支付sign 及校验签名封装

    需要工具类的可以联系博主~~ /*** 生成微信支付sign** @param params(可排序)* @param key* @return*/public static String creat ...

  3. asp php微信支付,Asp微信支付接口代码 微信中生成订单后可以直接调出微信钱包直接付款_随便下源码网...

    Asp微信支付接口代码 微信中生成订单后,可以直接调出微信钱包直接付款 软件介绍: 众所周到,目前微信支付已经十分普及,无论是商场.超市.网站上,微信支付的发展十分迅速,而ASP版微信支付在微信公众平 ...

  4. java后台提供ios微信支付接口

    提供微信支付接口,需要先在微信开放平台(https://open.weixin.qq.com/)申请账号,进行开发者资格认证通过后创建应用. 创建成功后会有对应应用的AppID和AppSecret这个 ...

  5. 微信支付一直抱签名错误,但是校验通过。

    问题:微信支付一直抱签名错误,但是校验通过. 问题描述:微信支付调起预支付时,一直报签名错误,但是用微信支付接口签名校验工具验证是签名sign一直验证通过. 解决方式:重新设置一下商户号的key,但是 ...

  6. Android_APP 微信支付接口开发

    1.首先说一下我们在开发微信支付接口的时候遇到最多和最疑惑的问题,那就是明明 appid.商户号.API密钥 都对照了好几遍确实是和自己的一样,并且也没有在Log日志中出现签名错误等信息,却始终调不起 ...

  7. 微信支付接口(公众号支付)+微信支付回调函数 附代码

    前段时间做微信支付,微信浏览器填写金额商品名之后提交跳转付款页面确认然后返回界面判断,今天来详细说下 国际惯例先贴代码 mcontroller.java public void wxpay() {if ...

  8. php 微信支付md5签名,微信支付回调验证签名处理

    微信支付回调验证签名:一定要验证签名,可能不造成伪造数据,或者数据库造到灌水: /** * 微信支付回调类 * @name callbackaction.class.php * @author yan ...

  9. 调用微信支付接口总结

        项目里面用到了微信支付的功能,照着文档学习了一下,这里做个总结来记录.项目用到的是anglusJS来做前端开发,我这边简化了,用的ajax进行异步的调用,然后业务也直接写在了控制层(不过不应该 ...

最新文章

  1. 【转】Asp.net页面的生命周期
  2. java监控任务进度_Java Swing组件实现进度监视功能示例
  3. 在线应用的 Serverless 实践
  4. java16位字符串压缩成8位_在8位UART上发送16位值
  5. 【NLP】使用Python可视化Word2vec的结果
  6. 【视频】vue组件之slot插槽
  7. linux查看所有磁盘信息fdisk,Linux下添加新硬盘,分区及挂载 挂载好新硬盘后输入fdisk -l命令看当前磁盘信息 可以看...
  8. Envoy实现.NET架构的网关(五)集成Redis实现限流
  9. 【精彩实况】第三届大数据科学与工程国际会议
  10. 工科计算机考研311分今年能上吗,2020年考研,工科345分,能进大连理工吗?学姐:热门专业悬...
  11. mysql格式化日期成分_MySQL格式化日期
  12. 离散卷积与自相关----------信号处理系列[原创]
  13. 错过后悔十年!计算机视觉入门到精通,学习书籍推荐
  14. 说说Android桌面(Launcher应用)背后的故事(四)——揭秘Workspace
  15. 【开源】微信小程序、小游戏以及 Web 通用 Canvas 渲染引擎 - Cax
  16. SIFT算法论文:译文、详解
  17. stl文件用proe怎么打开_stl格式怎么打开
  18. PDF识别文字、关键字,获取对应坐标,用于插入电子签名
  19. 做祛痘产品微信是如何引流的?祛斑祛痘产品引流加粉渠道有哪些?
  20. 深入理解AX Inventory Aging Report

热门文章

  1. VIC水文模型入门攻略(中)VIC的数据和输入文件准备
  2. 小米云深度学习平台的架构设计与实现
  3. 【C语言】通讯录(文件版)
  4. 操作DOM树实现二级下拉框联动
  5. filebeat7.7.0相关详细配置预览- processors
  6. 存钱罐小程序_一罐来统治所有人
  7. Java中Map使用详解
  8. oracle12541 linux,PLSQL连接Linux上的oracle数据库出现,ORA-12541 TNS 无监听程序
  9. 如何修复rpc服务器,RPC服务器不可用修复工具
  10. fiddler解析ssl