文档章节

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

熊猫88
 熊猫88
发布于 2016/01/27 10:07
字数 1204
阅读 1091
收藏 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
码字总数 65366
作品 0
程序员
私信 提问
营销APP开发(微商手机)

【业务需求】 一、功能需求 开发一系列微商宣传所需要的APP,通过这些APP,可以间接操作手机上的微信和陌陌。 可以使用多个微信号定时轮流登录微信; 可以自动发朋友圈文章; 可以自动通过微...

你好曙光
2017/03/08
2
0
Laravel 不权威导航

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

weixingo
2016/02/05
180
0
你是不是特别苦逼的到处找计算机资料?别愁了!学习笔记+视频教程+项目源码+配套工具免费送

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

在北方玩弹子球
08/17
0
0
读完这篇教程,你就比世界上99%的人更会用搜索引擎了!

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

在北方玩弹子球
08/10
0
0
我用过的几款云笔记软件,推荐给你

作为一个强迫症患者,在接触了各种效率工具之后,便总是喜欢尝试更好的应用,比如,云笔记,日程管理,电子书阅读,资讯浏览,播放器等等。可以说,市面上常见的各种类型的应用,我都使用过,...

有苦向瓜诉说
11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS官方钱包keosd

EOS官方钱包的名称是keosd,它负责管理你的私钥,并且帮你进行交易的签名。 不过不幸的是,keosd钱包对普通用户并不友好,它是一个命令行程序,目前还没有像以太坊的mist那样的图形化界面,而...

汇智网教程
今天
9
0
ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
今天
12
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
21
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
26
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部