微信公众号迁移openid转换解决方案

首先聊下迁移步骤:

  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、测试结果,如有问题,反复检查对比。

猜你喜欢

转载自www.cnblogs.com/chartjs/p/9159072.html