首先聊下迁移步骤:
1、从A公司的公众号 迁移到 B公司的公众号
2、登录A公司的的公众号,进入功能设置选择账户迁移(此时注意保存A公众号的APPID)
3、需要提交一份公证书或律师见证函,后者难度小点
4、审核后开始迁移程序,此时A公众号无法登录查看APPID,A公众号自动群发一条迁移提醒的通知
5、转换权限开启,开始转换openid
然后说下转换原理:
1、整理A公众号的openid
2、使用A公众号的APPID 还有B公众号的 APPID+APPSECRET
3、通过转换接口批量获取新的(即为B公众号的)openid(每次支持转换100个)
4、将数据库中A公众号的openid查询替换成B公众号的openid
5、测试,以免遗漏
最后提供下转换代码:
1、转换前的准备--格式化A的openid
<?php //如下格式 sql查询出来也应为此格式 $old_openids = array ( 0 => 'o3yncwAFHGJhqjuQXW3zz_HC5Mss', 1 => 'o3yncwAFHGJhqjuQXW3zz_HC5Mss', 2 => 'o3yncwAFHGJhqjuQXW3zz_HC5Mss', 3 => 'o3yncwAmcKTbkRUxZyqwg6oHup-k', 4 => 'o3yncwApO9uha1Yuh61BrwG47Ps0', ) ?>
2、转换前的准备--获取access_token
<?php //以下为B公众号信息 define("APPID", "*********"); define("APPSECRET", "*********"); $accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".APPID."&secret=".APPSECRET; $res = json_decode(file_get_contents($accessTokenUrl),true); $accessToken = $res["access_token"]; ?>
3、开始转换
<?php //用来储存转换后的数据 $newArr = array(); //每次请求100个,以100为单位分组 $arr100 = array_chunk($old_openids,100); $count = count($arr100); //循环请求接口,若粉丝量几万甚至几十万以上,不应用此方法 for ($i=0;$i<$count;$i++){ $requestData = array( //此处为原帐号的appid "from_appid" => OLDAPPID, //需要转换的openid,即第1步中拉取的原帐号用户列表,这些必须是旧账号目前关注的才行,否则会出错;一次最多100个,不能多。 "openid_list"=>$arr100[$i] ); $jsonOldOpenids = json_encode($requestData); $requestUrl = "http://api.weixin.qq.com/cgi-bin/changeopenid?access_token=".$accessToken; $result = json_decode(https_post($requestUrl,$jsonOldOpenids),true); $arr = isset($result["result_list"]) ? $result["result_list"] : array(); foreach ($arr as $k=>$v){ if (isset($v['err_msg']) && ($v['err_msg'] == 'ok')){ $newArr[] = array( 0 => $v['ori_openid'], 1 => $v['new_openid'] ); //新旧数据已拿到,可在此处进行sql替换 ?>
4、测试结果,如有问题,反复检查对比。