丰桥下单接口代码_微信统一下单支付中关于Body不支持中文编码的解决方法

因工作需要对接微信的扫码支付,这里用到的统一下单支付接口。开始一切正常。可是当传递参数body为中文的时候,返回错误提示:body不是utf8编码。看字面意思是编码不是utf-8,经常做java的朋友都对这类问题见怪不怪了(心中早有了解决方法),可是这次没有想像的那么简单,试过了N种方法,结果要么是:签名不对,要么是:body不是utf8编码。看来这次没有那么简单,毕竟要对接人家的接口,所幸到网上搜索一下,遇到此问题的还真不少,照着别人的解决方法也不好使,所有方法都不行的情况下,只好回头来耐心研究了。还好费了点工夫总算解决,下面说一下解决的方法吧。保证切实可用!

首先有说对中文进行unicode编码,结果试了是不可以的,见下图:

4ba1d791c60b40ea38113da65ca60e8d.png

再就是有说进行urlencode编码,试了结果也是不行的:

36f2376580038f261389e5ef6cc8ead4.png

下面分析一下提单环节用到中文编码的几个地方:

1、xml的内容中中文要使用utf-8

2、对参数签名的加密方法无论用MD5还是SHA256,均需要指定utf-8

3、数据post到签名下单接口时要指定utf-8编码

4、读取微信返回参数时使用utf-8编码(虽然这个不影响业务逻辑,不过指定好可以正确获取微信的中文信息)

然后针对上面的每个环节看一下我的代码:

一、构造map

HashMap map=new HashMap();

String body=RequestUtil.getSafeStr(request, "body");

map.put("appid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值