场景:客户迁移公众号操作,然后旧的公众号注销掉了,公众号迁移完成之后,对于openId需要做转换处理,转换到新的公众号,调用openId转换接口http://api.weixin.qq.com/cgi-bin/changeopenid?access_token=xxxxx
在post请求过去之后直接返回 code=500, msg=com.riversoft.weixin.common.exception.WxRuntimeException: Moved Permanently
查看openId转换接口,需要的参数是旧公众号的appId
现在的问题是:是否是因为旧公众号被注销的问题,导致openId转换接口调用异常呢?
客户参考的迁移方式
你好,请参考文档:
https://kf.qq.com/faq/170112VzUNBN170112N7rMZn.html。
(
[errcode] => 0
[errmsg] => ok
[result_list] => Array
(
[0] => Array
(
[ori_openid] => ["oR5lb1d-B2w7FfQ_GtjE_OweMKZo","oR5lb1cG4xbeJR1LkjMVtb_sSESE"]
[err_msg] => ori_openid error
)
)
)
这个是我们开发自己的微信openid 做迁移openid转换,提示没有关注旧的公众号
自己给自己结个帖子。也给后面遇到的朋友们可以借鉴下;
遇到的问题
1,一开始一直提示301错误,Moved Permanently,发现是官网上的URL是http的,需要改成https才能够正常调用。
2,请求的时候,一直提示"errcode":63178,"errmsg":"appid wrong rid: 605c4ce1-1279f77e-3a826739",需要排查的点,请求参数是不是跟官网的不一样。
{
"from_appid":"xxxxxxxx",//此处为原帐号的appid
"openid_list":["oEmYbwN-n24jxvk4Sox81qedINkQ","oEmYbwH9uVd4RKJk7ZZg6S
zL6tTo"]//需要转换的openid,即第1步中拉取的原帐号用户列表,这些必须是旧账号目前关注的才行,否则会出错;一次最多100个,不能多。
}
楼主因为少了字符串和多了转义符,就是"form_appid":xxxx 少了字符串,"openid_list":[\"oEmYbwN-n24jxvk4Sox81qedINkQ"\] 多了转义符。
这里楼主遇到一个{"errcode":47001,"errmsg":"data format error rid: xxx }和 {"errcode":63178,"errmsg":"appid wrong rid},格式转换错误和appid失效。这里就很是奇葩。
格式转换错误提示是没问题的,能够很清楚的分辨出是参数传递错误了;但是,有问题的是 {"errcode":63178,"errmsg":"appid wrong rid}
看了官网,63178的注释是说:from_appid参数错误,和调用的账号并没有迁移关系,所以误导了楼主的思路,一直以为参数没有问题了,总结:官网可信但是要报有怀疑态度,不然就会跟楼主一样给误导了好久。
要注意:63178应该不止官网说的那一层意思,有可能参数写错也会报。而47001就是你传递的参数不是微信那边能够转换的,所以就会提示data format error。
总结下来:http要换成https;请求参数要仔细仔细再仔细看看是不是跟官网一样,不要少字符串多转义符这种跟楼主犯的错误一样。