微信支付 签名 java_Java后台微信支付签名算法(MD5)
微信支付提交订单的时候,一直返回签名错误的问题。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)相关推荐
- 微信jssdk签名java_JAVA生成微信JSSDK接口签名
签名生成规则如下: 参与签名的字段包括有效的 jsapi_ticket(获取方式详见微信 JSSDK 文档), noncestr (随机字符串,由开发者随机生成),timestamp (由开发者生成的 ...
- jsapi支付签名_PHP实现微信支付(jsapi支付)流程步骤详解
最近接触到一个项目,涉及到微信支付,搞微信开发这么久以来,还没搞过支付,之前也就搞过公众号发红包,感谢前辈们的探索,我看了他们的博文,让我少走了很多弯路. 前期准备: 1.微信认证服务号,并且开通了微 ...
- 微信支付 通知 java_java之微信支付通知
微信支付,是现在大多数平台都需要接入的一个支付方式,没办法,谁让现在的用户都习惯了这种消费方式呢 我今天只说说微信支付通知,我们后台怎么接收通知,并把我们的订单的状态改为已支付, 至于为什么不说支付的 ...
- 微信小程序+java后台实现支付(java操作)
支付,在微信小程序上面称为当一个用户使用该小程序,当进入到支付环节,我们需要调用微信支付接口过程,进行一系列的操作,并记录下来. 微信小程序与java接口实现支付操作,大致思路如下: 1.微信小程序调 ...
- (微信支付签名失败)微信支付v2版本踩坑-二次签名不同类型签名参数key不同
小伙伴们在做微信支付对接的时候会遇到各种各样的坑,特别是微信支付v2版本,微信支付的二次签名官方文档没有给出明显的签名参数,导致在开发中很容易碰到微信支付的这个坑(微信支付签名失败),app签名key ...
- 微信小程序netcore后台api支付结果通知接口的坑
终于搞定回调通知了,这里总结下几个暗坑 1.回调通知一定是post接口,且可以直接访问 2.需要解析回调的HttpContext内容才能知道结果 3.收到信息一定要进行验证判断是否来自于微信渠道 4. ...
- 微信支付退款 java_Java后台实现微信支付和微信退款
微信支付流程 都是我自己工作中开发的,亲测可用,不喜勿喷. controller中我是这么写的,你们需要根据自己的业务需求改动.ResponseBean是我自己封装的,你们可以改成你们想要的形式. / ...
- java微信支付签名生成_微信APP支付(Java后台生成签名具体步骤)
public class PayCommonUtil { //定义签名,微信根据参数字段的ASCII码值进行排序 加密签名,故使用SortMap进行参数排序 public static String ...
- 微信红包接口 java_java调用微信现金红包接口的心得与体会总结
这几天看了下之前写的有关微信支付的博客,看的人还是挺多的,看了下留言不知道是因为博客写的不够细还是什么情况,大多都找我要源码,我觉得吧程序员还是需要有这么一个思考的过程,因此没直接给源码,俗话说&qu ...
- java 微信jssdk签名_JAVA生成微信JSSDK接口签名
签名生成规则如下: 参与签名的字段包括有效的 jsapi_ticket(获取方式详见微信 JSSDK 文档), noncestr (随机字符串,由开发者随机生成),timestamp (由开发者生成的 ...
最新文章
- 通知:前blog文章全丢了..
- 华为云严选上新啦!高效准确的数据同步方案来了
- Android 功耗(10)---电流波形图(power monitor)
- Python 爬下的必胜客数据背后,藏着什么样的信息?
- Linux 内核调优
- 300本计算机编程的经典书籍下载
- excel导出文本格式设置为数值(easypoi)
- 家长进课堂 计算机ppt,【家长进朴园】探秘计算机—5.7中队家长进课堂活动
- 内核block层IO调度器—bfq算法深入探索3
- 修心三不:不生气不计较不抱怨
- CentOs下安装pip3
- 微信官方发红包DEMO
- 设计一个Dog类,包含名字,年龄,颜色三个属性
- 自主实现sleep函数(代码实现)
- 某星级酒店警卫队定岗定编项目纪实 ——完善定岗定编,转向人性化管理
- 并购狂魔Oracle到底在做什么战略布局
- 指令系统(一)数据传送指令
- ARM嵌入式开发总结
- linux下MaKefile编写
- win10系统dnf安装不上服务器失败,win10 1903系统dnf图表系统组建失败的修复方法