公众号主体变更后,批量更新openid

news/2024/11/22 22:30:17/

简介

公众号主体变更迁移后,用户openid被改变了,通过这个方法来批量更新用户的openid

/*** 处理公众号转移后的新旧openid id转换*/public function change_openid(){//因为每次最多只能从微信接口换取100个openid,当用户量多的时候,通过自动刷新当前页面的方式来节省时间echo ('');//这个是取出没有更新过的openid用户的列表$residentsModel= new ResidentsModel();$list=$residentsModel->field('id,name,nick_name,openid')->where('openid','>',0)->where('is_change_openid','=',0)->page(1,100)->order('id','asc')->select();dump(count($list));//如果有需要更新的数据,则进行转换if(count($list)>0){dump($list[0]['id']);//使用easywechat组件$app = Factory::officialAccount($this->config);$accessToken = $app->access_token; // EasyWeChat\Core\AccessToken 实例$token = $accessToken->getToken(); // token 字符串
//        $token = $accessToken->getToken(true); // 强制重新从微信服务器获取 token.//通过easywechat拿到access_token 当然这个自己手动用官方接口去取也可以$access_token=$token['access_token'];
//        dump($access_token);这个是openid接口转换的地址$url='http://api.weixin.qq.com/cgi-bin/changeopenid?access_token='.$access_token;$openid_list=[];通过循环的方式来把需要转换的openid放到索引数组中foreach($list as $val){array_push($openid_list,$val['openid']);}//转换接口请求的数据格式$data=['from_appid'=>'wx0cf328c9fce4f555',//旧公众号的appid'openid_list'=>$openid_list];$res=http_request($url,json_encode($data));$res=json_decode($res,true);//如果请求成功,则进行数据库的更新if(isset($res['errcode']) && $res['errcode']==0){$result_list=$res['result_list'];foreach($result_list as $val){$data=['openid'=>$val['new_openid'],'is_change_openid'=>1];$residentsModel->where('openid','=',$val['ori_openid'])->data($data)->update();}}}}

https://kf.qq.com/faq/1901177NrqMr190117nqYJze.html

这个是微信的官方文档说明。我在开发者文档中没有找到,在qq客服中找到了这个。

内容直接摘录过来留存了

openid转换接口

账号迁移后,粉丝的openid会变化,微信用户关注不同的公众号,对应的openid是不一样的,迁移成功后,粉丝的openid以目标帐号(即新公众号)对应的OpenID为准。但开发者可以通过开发接口转换openid,开发文档可以参考:

提供一个openid转换的API接口,当帐号迁移后,可以通过该接口:

  1. 将原帐号粉丝的openid转换为新帐号的openid。
  2. 将有授权关系用户的openid转换为新帐号的openid。
  3. 将卡券关联用户的openid转换为新帐号的openid。

◆ 原帐号:准备要迁移的帐号,当审核完成且管理员确认后即被回收。
◆ 新帐号:用来接纳粉丝的帐号。新帐号在整个流程中均能正常使用。

一定要按照下面的步骤来操作。

  1. 一定要在原帐号被冻结之前,最好是准备提交审核前,获取原帐号的用户列表。如果没有原帐号的用户列表,用不了转换工具。如果原账号被回收,这时候也没办法调用接口获取用户列表。
    如何获取用户列表见这里:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140840

2. 转换openid的API接口如下,可在帐号迁移审核完成后开始调用,并最多保留15天。若帐号迁移没完成,调用时无返回结果或报错。帐号迁移15天后,该转换接口将会失效、无法拉取到数据。
◆ URL:http://api.weixin.qq.com/cgi-bin/changeopenid?access_token=xxxxx
此处token为新帐号的token
◆ 请求方式:post
◆ 请求数据:

{
"from_appid":"xxxxxxxx",//此处为原帐号的appid
"openid_list":["oEmYbwN-n24jxvk4Sox81qedINkQ","oEmYbwH9uVd4RKJk7ZZg6SzL6tTo"]
//需要转换的openid,即第1步中拉取的原帐号用户列表,这些必须是旧账号目前关注的才行,否则会出错;一次最多100个,不能多。
}

◆ 输出数据:

{  
"errcode": 0,  
"errmsg": "ok",  
"result_list": [  
{  
"ori_openid": "oEmYbwN-n24jxvk4Sox81qedINkQ",  
"new_openid": "o2FwqwI9xCsVadFah_HtpPfaR-X4",  
"err_msg": "ok"  
},  
{  
"ori_openid": "oEmYbwH9uVd4RKJk7ZZg6SzL6tTo",  
"err_msg": "ori_openid error"//这个openid目前没有关注旧公众号  
}  
]  
}  

◆ 错误码:
63178:from_appid参数错误,和调用的账号并没有迁移关系
Ori_openid error:openid目前没有关注旧公众号。或者是将from_appid搞错了,用成了新帐号的appid。

CRMEB v4 全开源电商系统,开发者首选,系统基于ThinkPhp6.0+uniapp 开发的客户管理加电商营销的新零售商城系统。能够真正帮助企业基于微信公众号H5、小程序、wap、pc、APP等,实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、预约、O2O、多店等各种业务需求。CRMEB的优势:快速积累客户、会员数据分析、智能转化客户、有效提高销售、会员维护;


http://www.ppmy.cn/news/75940.html

相关文章

【Linux】常用指令介绍

目录 Linux下基本指令01. ls指令02. pwd 指令03. cd 指令04. touch 指令05. mkdir 指令06. rmdir 指令07. rm 指令08. cp 指令09. mv 指令10. cat 指令11. more 指令12. less 指令13. head 指令14. tail 指令15. find 指令16. grep 指令17. zip/unzip 指令18. tar 指令18. man …

边沿检测电路

目录 同步信号的边沿检测 异步信号的边沿检测 所谓的边沿检测(幼教边沿提取),就是检测输入信号的上升沿和下降沿。在设计数字系统时,边沿检测是一种很重要的思想,实际编程时用的最多的时序电路应该就是边沿检测电路和…

二、数据字典开发

文章目录 二、数据字典开发1、搭建service-cmn模块1.1 搭建service-cmn模块1.2 修改配置1.3 启动类 2、数据字典列表2.1 数据字典列表接口2.1.1 model模块添加数据字典实体2.1.2 添加数据字典mapper2.1.4 添加数据字典controller 2.2 数据字典列表前端2.2.1 添加路由2.2.2 定义…

获取淘宝店铺所有商品API分享 店铺所有商品接口 店铺ID取商品 商品销量排序接口

获取淘宝店铺所有商品API,是一种可以帮助开发者快速获取淘宝店铺全部商品信息的方式。同时,还支持翻页显示、按价格销量排序等。本文将介绍如何API接口获取特定店铺的所有商品,以及需要注意的事项。 一、申请淘宝开放平台应用 在使用淘宝AP…

山西棒球产业的发展壮大·棒球5号位

一、历史背景及现状 山西省棒球运动始于上世纪80年代,但由于一些历史原因和地域局限性,长期处于低谷状态。 近年来,随着经济的快速发展和人们生活水平的提高,山西省棒球运动逐渐得到了恢复和发展。目前,山西省拥有数…

面试:web安全及防护

XSS攻击原理 XSS(Cross-Site Scripting,跨站脚本攻击)是一种代码注入攻击。攻击者在目标网站上注入恶意代码,当被攻击者登陆网站时就会执行这些恶意代码,这些脚本可以读取 cookie,session tokens,或者其它敏感的网站信…

利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)

利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法) 一、设备调配方案二、设备匹配算法三、代码实现(java) 最近在做一个项目设备调配系统,分享一些干货!!! 一、设备…

协程并发下数据汇总:除了互斥锁,还有其他方式吗?

1. 简介 本文介绍了在并发编程中数据汇总的问题,并探讨了在并发环境下使用互斥锁和通道两种方式来保证数据安全性的方法。 首先,通过一个实例,描述了一个并发拉取数据并汇总的案例,并使用互斥锁来确保线程安全。然后&#xff0c…