为了账号安全,请及时绑定邮箱和手机立即绑定

微信支付body乱码问题 --排坑日记(1)

标签:
Java

涉及到的工具类:

1. 微信开发文档: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
2. HttpUtil : 微信H5w网页支付http请求工具类
3. WxPayConfig : 微信支付商户配置类
4. MaryunHttpUtils : 微信APP支付http请求工具类
5. OrderGeneratedUtils :  微信订单生成工具类。
6. WxPayUtils : 微信自带的工具类(包括 随机字符串、xml与map数据转换、MD5加密、获取时间戳(秒、毫秒))
7. WxRamdomNumberUtils : 微信订单总金额格式化8. XiaomiGoodsInfoUtil : XML文档读取工具类。

一、场景重现

我们的业务场景为从xml文档中加载商品信息,如下图。
图片描述
商品名 body 即为文档中的notice字段的值。具体实例为下图中的片段
图片描述

异常情况为:
一、body未转换编码时
图片描述
二、 body进行编码转换时
图片描述
二、解决思路
就编码问题而言,有俩种解决办法:
一、body = new String(body.getBytes("ISO-8859-1"),"UTF-8"); 通过字节码转换编码格式
二、RequestEntity requestEntity = new StringRequestEntity(argJson,"application/json","UTF-8"); HttpClient在在字节流读取流的时候转换编码。

三、解决方案

1.对body未单独进行编码转换,而是在向httpClient发送post请求时对字节流进行编码强转。
2.添加一个请求头 theaderList.add(new UHeader("Content-Type", "application/x-www-form-urlencoded"));
图片描述

  1. 由于之前使用的H5网页支付的HttpUtil工具类,所以bug重现不止,后来改用 MaryunHttpUtils。

四、源码地址

源码地址: https://github.com/noseparte/paymentServer

点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消