收藏
回答

记一下服务号转换openid排查问题,目前已解决?

标题必须带? 实际目前已解决


官方文档 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"

        }

    ]

}


回答关注问题邀请回答
收藏

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    05-06
    有用
登录 后发表内容