微信公众号迁移置换粉丝openid

2025-05-09 08:09:47

1、一、储存旧的<?phprequire_once './MySQLiDb.class.php';$res = $db->getAll("SELECT openid FROM `user` WHERE openid<>''");$newArr = [];foreach ($res as $k=>$v) { $newArr[] = $v['openid'];}$path = "./save_old_openid.php";$save_text = '<?php'."\n".'return $old_openids = '.var_export($newArr,true).';';if(fopen($path,'w')){ file_put_contents($path,$save_text); echo 'success';}else{ echo 'error';}

2、二、储存置换出来的<?phpdefine("APPID", "*********");defi荏鱿胫协ne("APPSECRET", "*********");//原来的APPIDdefine("OLDAPPID", "**********");require_once './save_old_openid.php';$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"];//用来储存转换后的数据$newArr = array();$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'] ); } }}$path = "./save_new_openid.php";$save_text = '<?php'."\n".'return $new_openids = '.var_export($newArr,true).';';if(fopen($path,'w')){ file_put_contents($path,$save_text); echo 'success';}else{ echo 'error';}function https_post($url, $data){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); if (curl_errno($curl)) { return 'Errno' . curl_error($curl); } curl_close($curl); return $result;}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢