文档章节

微信开发文档笔记整理(二)

熊猫88
 熊猫88
发布于 2016/01/27 10:07
字数 1204
阅读 1069
收藏 4

            
 1.由于微信在读取信息的时候
 通过https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET拿到了对应的
 成功后拿到{"access_token":"XXX","expires_in":7200}
 失败后拿到的信息是{"errcode":40013,"errmsg":"invalid appid hint: [kKQzLa0945vr23]"}
 json解析一般是json_encode($str,true)
 2.获取微信端的信息(微信的链接都是https类型,这点在请求的时候,file_get_contents请求的不是很理想,特别是请求过多的时候,用这个方法是没法请求到的,在weiphp) 下面是一个封装的post的数据方法
//接口间互相json格式的交互封装
function post_data($url, $param, $is_file = false, $return_array = true) {
  //将需要发送的对应的数据到数组,对数组进行格式json编码,同时兼容出post文件
    if (! $is_file && is_array ( $param )) {
        $param = json_encode( $param );
    }
    if ($is_file) {
        $header [] = "content-type: multipart/form-data; charset=UTF-8";
    } else {
        $header [] = "content-type: application/json; charset=UTF-8";
    }
    
    $ch = curl_init ();
    curl_setopt ( $ch, CURLOPT_URL, $url );
    //请求的方式是post
    curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
    // 禁用后cURL将终止从服务端进行验证
    curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
    //不检查证书
    curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
    //发送头部字段
    curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );
    //告诉对方 自己的浏览器型号
    curl_setopt ( $ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)' );
    //即表示自动进行跳转抓取(如果URL发生了302重定向)继续抓取
    curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
    //自动重定向开启
    curl_setopt ( $ch, CURLOPT_AUTOREFERER, 1 );
    //发送的post参数
    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $param );
    //得到的结果不显示在屏幕上,作为变量结果储存
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
    $res = curl_exec ( $ch );
    //如果运行错误,返回一个错误号
    $flat = curl_errno ( $ch );
    if ($flat) {
        $data = curl_error ( $ch );
    }    
    curl_close ( $ch );
    //拿到了返回结果后json格式转化为可以使用的数组格式
    $return_array && $res = json_decode ( $res, true );    
    return $res;
}
3.获取自己对应公众号openid(这个仅仅可以获取到用户openid——用户的openid是用户微信号和公众号加密后的唯一结果)
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
通过post_data可以获取前10000个用户(一般当前的测试开发,关注数量在10000以内)
{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
PS:获取到所有用户的openid后 需要一张用户数据表储存当前的用户openid。然后可以根据openid读取到对应的openid信息
正常情况下需要保存一个当前公众号还有一个openid与其进行对应。(这样每次可以用当前数据库和线上进行对比的时候,有着非常大的
便利,当会员超过1W后,进行定期更新即可)

4.根据对应的openid 拉去到对应的用户信息(这里是详细信息)
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
单个的读取用户信息得到用户公共信息包:(授权的时候,和这个很相似)
{
    "subscribe": 1,
    "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
    "nickname": "Band",
    "sex": 1,
    "language": "zh_CN",
    "city": "广州",
    "province": "广东",
    "country": "中国",
     "headimgurl":     "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",  
   "subscribe_time": 1382694957,
   "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
   "remark": "",
   "groupid": 0
}
5.https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN(另外的批量拉取的接口,支持一次性拉到100条信息)
  批量获取会员信息的数据格式
    $data = $list['data']['openid'];
          foreach($data as $val) {
              $vo['user_list'][] = array(
                  'openid'=>$val,
                  'lang' => 'zh-CN'                
              );             
          }
      然后调用post_data方法就可以拿到一个二维数组
      array("user_info_list"=>array()) 这种格式

PS:本次主要整理了微信会员用户的批量读取与批量更新逻辑信息逻辑。(用户的批量拉取和处理是最基础的功能,也是公众号管理平台最重要的功能之一)
逻 辑思路:根据当前所在的微信公众号ID,读取微信公众号的appID和appserect,生成一个token缓存在某个文件内(当然少量的微信号的时 候,可以直接存入到数据库),先去请求微信读取其所有会员openid,(暂时开发的会员数量是1W以下的公众号)根据获取到的批量会员openid,去 读取对应的会员信息(批量获取接口),将批量获取到的会员数据接口写入平台的user表,根据返回的user表的uid写入一张公众号ID和 openid,uid的映射表(这样的好处是,这张表主要处理会员数据与微信服务器端的数据同步问题,否则会员表数据量太大,进行同步校验的时候数据表压 力比较大) 另外加个status字段(这样可以记录跟本地会员的整合情况,同步的记录已经同步,其他的会员记录是从其他渠道导入过来的)


© 著作权归作者所有

共有 人打赏支持
熊猫88
粉丝 18
博文 76
码字总数 65287
作品 0
程序员
你是不是特别苦逼的到处找计算机资料?别愁了!学习笔记+视频教程+项目源码+配套工具免费送

学了4、5年的计算机,有一些资源和笔记可以和大家一起分享,希望对新手能有一点帮助。 这些资源主要是我的一些学习笔记还有一些开源的代码、视频教程以及配套的开发工具等,感兴趣的可以看一...

在北方玩弹子球
08/17
0
0
Laravel 不权威导航

Laravel不权威导航 Hi 这里是Roy整理的Laravel相关索引,希望能帮到大家 ,目前只是一小部分,正在努力整理中... Laravel 文档 Laravel 官方文档 —— 英文 Laravel 中文文档 —— laravel-...

weixingo
2016/02/05
180
0
读完这篇教程,你就比世界上99%的人更会用搜索引擎了!

“人生中80%的问题,早就被人回答过,你只要搜索就好。剩下的20%,你才需要研究。”今天跟大家聊一聊朱丹老师的《超级搜索术》。你以为我是来给你安利课程的?才不是!我是给你送福利的。有的...

在北方玩弹子球
08/10
0
0
四大咨询公司那些顾问为什么能找到你找不到的资料?

一、 资料的渠道:己、人、网、书 1. 己。 自己过往的经验、资料库。 优点:速度快,节省精力。 缺点:资料来源有局限性。 补充说明 l 这里说的资料库不仅仅是自己的资料库,还包括自己全县范...

数据胡
06/10
0
0
神秘的四大咨询公司内部文件(一)——整合资料方法

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴...

天善智能
06/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

no such module 'pop'问题

在github上 clone 了一个 swift 项目,编译时提示"no such module 'POP'"错误,查了一下居然是因为podfile中指定的最低版本是iOS 11.0,大于我测试手机的iOS版本10.3.3,将Podfile中的最低版...

yoyoso
今天
1
0
redis 系列一 -- 简介及安装

1.简介 redis -- remote dictionary server 远程字典服务 使用 C 语言编写; 高性能的 key-value数据库; 内存数据库,支持数据持久化。 Redis 是一个开源(BSD许可)的,内存中的数据结构存...

imbiao
今天
3
0
nginx log记录请求响应时间

有时为了方便分析接口性能等,需要记录请求的时长,通过修改nginx的日志格式可以做到,如 添加一个新的log_format log_format timed_combined '$remote_addr - $remote_user [$time_local] "...

swingcoder
今天
4
0
Spring MVC之RequestMappingHandlerMapping匹配

对于RequestMappingHandlerMapping,使用Spring的同学基本都不会陌生,该类的作用有两个: 通过request查找对应的HandlerMethod,即当前request具体是由Controller中的哪个方法进行处理; 查...

爱宝贝丶
今天
5
0
Java Web--增删改查之二界面后台java代码(转载参考)

/** *  *//** * @author Administrator * */package dao; import java.sql.*;public class DBConn {/** * 链接数据库 * @return */  ...

小橙子的曼曼
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部