关于开发微信红包遇到的问题

来源:互联网 发布:企业文化 知乎 编辑:程序博客网 时间:2024/05/16 06:49
1.在本地环境开发时,遇到"签名错误"


关于参数拼接以及sign的MD5生成,微信官方已经给出详细的案例,这里不作说明。(需要注意的是参数的排序以及为空的字段不参与md5加密)
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3


在此列出我遇到的问题:


1.1通过微信官方提供的校验页面,能确定sign生成没有问题,在请求参数中不包含中文的情况下可以发起。
这里的解决思路是:
将生成的xml字符串在发起请求时,做以下编码处理:
xmlStr = new String(xmlStr.getBytes(), "ISO8859-1");  


1.2做了以上修改后仍不生效,需要注意jvm的默认编码问题。
由于我使用tomcat进行部署,这里以tomcat作说明。
找到tomcat安装目录下的catalina.bat文件(linux环境下为catalina.sh)进行配置
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
设置完后可以在在程序中加上判断是否生效的检查代码:


如果能够正常设置为UTF-8则能正常发起带中文参数的微信红包


但我多次确认设置下一直显示GBK,遂另找方法,最后解决思路:
新增一个系统环境变量,变量名"JAVA_TOOL_OPTIONS",变量值"-Dfile.encoding=UTF-8"


2由于是从一个公众号给另一个公众号的粉丝发红包,涉及“appid and openid不匹配”的问题。
2.1在微信开放平台(https://open.weixin.qq.com)中将两个公众号绑定在同一个开发平台账号下。
2.2执行红包赠送时,将发送者openid更换成unionid。
(access_token获取方法:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183)
(unionid获取方法:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839)
原创粉丝点击