小程序深度对接
优质
小牛编辑
131浏览
2023-12-01
1. 上报用户信息
小程序基础对接时,客服看到了用户名如同 oyr0h0c4PBRJ....-h9Eq3tfEgmk
的openid
做用户名或直接显示unknown。如需要支持以微信用户名称显示到客户端,需要开发实现如下功能。
1.1 小程序中上报用户信息
接口地址:http://`{$hosts}`/thirdparty/smallprogram
请求方式:POST
数据格式:XML
请求参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
ToUserName | String | 是 | 小程序原始ID |
JsCode | String | 是 | 用户登录凭证(有效期五分钟),在小程序中调用wx.login 返回内容,参见文档 |
EncryptedData | String | 是 | 包括敏感数据在内的完整用户信息的加密数据,数据来自 wx.getUserInfo 返回内容,参见文档 |
IV | String | 是 | 加密算法的初始向量,数据来自 wx.getUserInfo 返回内容,参见文档 |
FromUserName | String | 是 | 发送方昵称(此时发送方是小程序昵称) |
CreateTime | int | 是 | 消息创建时间 (整型),时间戳 |
MsgType | String | 是 | 消息类型,固定字符串:userinfo |
MsgId | String | 是 | 任意不重复数组 |
Content | String | 否 | 消息内容,传空即可 |
请求样例:
<xml>
<ToUserName><![CDATA[gb_**********]]></ToUserName>
<JsCode><![CDATA[071rsFQ*********P60tmEQ60rsFQm]]></JsCode>
<EncryptedData><![CDATA[KXn6qLS1v***************8lJcvz/aGpPd98qH3v0GOEmjLf/UKDbuFO5V2HnMTs08Y3ieCLtyVcMsXUWAZwE/MQccUvatmRHEcWfS985SBNLX9IqQBVKN+C38KR****TmMsGE4SZEcXHy7OFjWB2/h9rDxWu9EDLO/****fWmRfa8NrIMQAvBjFEXQbM84br7d0mPdZNkUkLIdFPPrpD3DpKJzzljTkPlkJfXfY0b+HO/xVzDEdzYGSKMZdT/f0IwTjADEUlmo7ZUHn2MYU******rc1gIXeP4pqklnLAyHBNm/+lXsjjjWtzJfWqFMVw4AIyGVlAhOvXpLqbWjcuGFcq8AVC7CV72iQY2Gq+njnVLsdqysUJaizk7LmWOYzt/0JAY7si8ct5F2pKavtQuA51VrnSDSXB1NQyA8PJh4HJQ==]]></EncryptedData>
<FromUserName><![CDATA[访客id]]></FromUserName>
<CreateTime>1530669642</CreateTime>
<Content><![CDATA[]]></Content>
<MsgId>6574176053822961800</MsgId>
<MsgType><![CDATA[userinfo]]></MsgType>
<IV><![CDATA[RoMQ30UM****+Ja918G6aQ==]]></IV>
</xml>
1.2 微信小程序显示用户信息实现方式
App({
onLaunch: function () {
this.getUserInfo();
},
getUserInfo: function () {
var originalID = 'gh_******042d25e';
var jsCode = '';
//调用登录接口
wx.login({
success: function (res) {
if (res.code) {
jsCode = res.code;
// 登录成功
console.info('登录成功, 返回信息 jsCode:', jsCode)
// 获取用户信息
wx.getUserInfo({
success: function (res) {
console.log('用户信息 encryptedData:', res.encryptedData);
console.log('用户信息 IV', res.iv);
var arrData = ['<xml>'];
arrData.push('<ToUserName><![CDATA[',originalID,']]></ToUserName>');
arrData.push('<JsCode><![CDATA[', jsCode,']]></JsCode>');
arrData.push('<EncryptedData><![CDATA[', res.encryptedData,']]></EncryptedData>');
arrData.push('<IV><![CDATA[', res.iv,']]></IV>');
arrData.push('</xml>');
// 上报用户信息
wx.request({
url: 'http://${host}/thirdparty/smallprogram',
method: 'POST',
data: arrData.join(''),
header: {
'content-type': 'application/xml'
},
success: function (response) {
if( response.statusCode == 200 ){
console.info('提交用户数据成功!', response);
}
else{
console.error('提交用户数据失败!', response);
}
}
});
}
});
} else {
// 登录失败
console.info('login fail');
}
} // end login success
}); // end getUserInfo
}
});