博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信支付 body不是UTF-8编码以及中文签名错误的问题
阅读量:5980 次
发布时间:2019-06-20

本文共 1353 字,大约阅读时间需要 4 分钟。

hot3.png

/** * MD5编码 * @param origin 原始字符串 * @return 经过MD5加密之后的结果 */ public static String MD5Encode(String origin) { String resultString = null; try { resultString = origin; MessageDigest md = MessageDigest.getInstance("MD5"); // resultString = byteArrayToHexString(md.digest(resultString.getBytes()));//原文件内容,可能原因是:win2003时系统缺省编码为GBK,win7为utf-8 resultString = byteArrayToHexString(md.digest(resultString.getBytes("utf-8")));//正确的写法 } catch (Exception e) { e.printStackTrace(); } return resultString; } private static String byteArrayToHexString(byte[] digest) {

StringBuffer hexValue = new StringBuffer();	for (int i = 0; i < digest.length; i++) {		int val = ((int) digest[i]) & 0xff;		if (val < 16)			hexValue.append("0");		hexValue.append(Integer.toHexString(val));	}	return hexValue.toString();}	String sign = MD5Encode(parbuffer.toString());	data.setSign(sign);	HttpRequest httpRequest = HttpRequest.post("https://api.mch.weixin.qq.com/pay/unifiedorder");	String x = xstream.toXML(data);	httpRequest.body( StringUtil.convertCharset(x, "UTF-8", "ISO-8859-1"));	HttpResponse response = httpRequest.send();	String body = response.body();	body = StringUtil.convertCharset(body, "ISO-8859-1", "UTF-8");

这样就把问题解决了 注意一下:给微信提交数据的时候需要是ISO-8859-1编码

httpRequest.body( StringUtil.convertCharset(x, "UTF-8", "ISO-8859-1"));

转载于:https://my.oschina.net/cng1985/blog/681415

你可能感兴趣的文章
javascript数学运算符
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
交互设计[3]--点石成金
查看>>
SCCM TP4部署Office2013
查看>>
redis主从配置<转>
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>
利用console控制台调试php代码
查看>>
讲解sed用法入门帖子
查看>>
Linux 内核已支持苹果
查看>>
shell脚本逻辑判断,文件目录属性判断,if,case用法
查看>>
【二叉树系列】二叉树课程大作业
查看>>
ASP.NET Core 2 学习笔记(三)中间件
查看>>
hbase region split源码分析
查看>>
MySQL备份之分库分表备份脚本
查看>>
Java 与 Netty 实现高性能高并发
查看>>
SurfControl人工智能新突破 领跑反垃圾邮件
查看>>
一个动态ACL的案例
查看>>
openstack 之 windows server 2008镜像制作
查看>>
VI快捷键攻略
查看>>
漫谈几种反编译对抗技术
查看>>