支付宝生活号对接经验总结

1.代码集成到springboot时汉字会乱码,导致验签失败。

解决方案:解析request参数之前,先进行编码设置,代码如下。

 request.setCharacterEncoding("GBK");

 

2.demo中解析xml使用的是net.sf.json,项目使用的是cn.hutool.json

对于XML头部

<?xml version="1.0" encoding="GB2312"?>

的处理上

net.sf.json直接以第一个标签作为跟节点,而cn.hutool.json把XML当作跟节点。

JSONObject bizContentJson = (JSONObject) new XMLSerializer().read(bizContent);

需要修改为

JSONObject xmlContentJson = JSONUtil.xmlToJson(bizContent);
JSONObject bizContentJson = xmlContentJson.getJSONObject("XML");

 

3.密钥配置

网关

ALIPAY_PUBLIC_KEY 为支付宝开放平台的公钥

PUBLIC_KEY 是生活号自己的公钥,页面上查看不到,生成的时候记得保存一份

APP_ID 是生活号自己的APP_ID

PRIVATE_KEY 是生活号公钥对应的私钥,网页可以查看到。

接口调用

APP_ID 是生活号自己的APP_ID

privateKey 是生活号公钥对应的私钥,网页可以查看到。

publicKey  为支付宝开放平台的公钥

 

4.用户ID

FromUserId

用户OpenId。2016年1月1日起,支付宝用于唯一标识用户的OpenId(32位)由于业务原因计划于2016年9月份废弃,FromAlipayUserId将替代FromUserId作为用户唯一性标示

FromAlipayUserId

用户userid,用户唯一标识

推送模板消息时使用以上两个都能推送到用户手中。

 

5.消息模板配置

先选择的在下面,后编辑的在上面。

解决方案:根据自己想要的顺序倒序配置即可。

 

6.模板字段需要特殊处理

如果存在空串或者只有空格的字符串,接口报错:{"code":"40004","msg":"Business Failed","sub_code":"SYSTEM_ERROR","sub_msg":"系统繁忙"}

如果存在双引号,接口报错:{"code":"40004","msg":"Business Failed","sub_code":"ILLEGAL_ARGUMENT_PARAMS","sub_msg":"无效的参数"}

所以模板字段转json时需要进行特殊处理,空串和只有空格的字符串变成点,双引号进行转义。

//1.空串和纯空格之坑
String after = value.replace(" ", "");
if(after.isEmpty()) {
    value = ".";
}
//2.双引号大坑
value = value.replace("\"", "\\\"");

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值