标题必须带? 实际目前已解决
官方文档 https://developers.weixin.qq.com/doc/service/api/usermanage/changeopenid/api_changeopenid.html
目前状态: 旧服务号A,新服务号B。已发起迁移到现在1周左右,肯定是在微信侧都迁移完了,A服务号已被冻结。B服务号openid待获取并落库
按文档试着调用了一下,返回值遇到了大家很常见的两个问题:
1. {\"errcode\":63178,\"errmsg\":\"appid wrong rid: xxx\"}
2. {\"errcode\":0,\"errmsg\":\"ok\",\"result_list\":[{\"ori_openid\":\"[\\\"xxx\\\"]\",\"err_msg\":\"ori_openid error\"}]}
在这里不得不提一下微信的官网接口文档真的一言难尽
首先,文档里提到入参的from_appid "原账号的原始id,不是appid", 示例还是gh开头的原始id。但实际上应该用原账号(对应我前面的场景就是服务号A)的appid。否则你就永远 63178 吧
再者,文档里请求体 openid_list 类型是 array, 但下面的代码示例是
{
"from_appid": "gh_91ae50dfeb1c",
"openid_list": "[\"oEmYbwN-n24jxvk4Sox81qedINkQ\",\"oEmYbwH9uVd4RKJk7ZZg6S zL6tTo\"]"
}
很明显是对openid_list 做了 json marshal 处理,最终是以json化字符串传入的。
正确的方式是要以array的方式传入,举个例子
{
"from_appid": "wxaaaaaa",
"openid_list": [
"aaa"
]
}
当然看大家类似问题的时候,有的人用http协议要注意改成https
最终都排查完毕后成功返回结果:
{
"errcode": 0,
"errmsg": "ok",
"result_list": [
{
"ori_openid": "aaa",
"new_openid": "bbb",
"err_msg": "ok"
}
]
}
