文档章节

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

熊猫88
 熊猫88
发布于 2016/01/27 10:07
字数 1204
阅读 1052
收藏 4
点赞 1
评论 0

            
 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
博文 63
码字总数 65287
作品 0
程序员
Laravel 不权威导航

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

weixingo ⋅ 2016/02/05 ⋅ 0

有理想的鱼/ymate-payment-v2

YMP-Payment v2 基于YMP框架实现的第三方支付(包括支付宝、微信支付、银联支付、京东支付、百度钱包和QQ钱包等)接入模块,目前已实现: 名称 状态 支付宝 测试通过 微信支付 重构完成,待测试...

有理想的鱼 ⋅ 2017/06/15 ⋅ 0

小程序 大假期,技术猿国庆假期的正确打开方式…

明天(10月1日)就是国庆黄金7天假了。作为技术猿,除了美美的睡一觉好像也没啥别的事了。与其窝在家里玩手机刷朋友圈,不如做个小程序玩玩。 微信小程序开发正当时,没有内测资格不要紧。这...

凝小紫 ⋅ 2016/09/30 ⋅ 11

四大咨询公司那些顾问为什么能找到你找不到的资料?

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

数据胡 ⋅ 06/10 ⋅ 0

Anyers/WeChat-WeApp-Resources

title: 微信小程序资源整理 - 更新汇总 tags: 小程序,微信,更新,资源整理 grammar_cjkRuby: true 微信小程序相关的文档、教程、开源项目等资源的整理,以便于开发学习使用。 —— —— 收录仅...

Anyers ⋅ 2016/11/07 ⋅ 0

神秘的四大咨询公司内部文件(一)——整合资料方法

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

天善智能 ⋅ 06/14 ⋅ 0

Go语言学习资料整理

整理网上找到的Golang语言学习资料 基础 基础教程 书籍在线版 Go 指南-A Tour of Go Go语言圣经(中文版) Effective Go中文版 Go Web编程 build-web-application-with-golang Go入门指南 Th...

nothingfinal ⋅ 2017/11/28 ⋅ 0

微信订阅号开发笔记(二)

微信开发的流程其实很简单 o(∩_∩)o 哈哈!在微信网站的编辑操作 额,就不说了。虽然有人问过。下面是我的微信开发过程,简单记录下。 成为开发者 材料:1、自己的服务器资源,百度的BAE,新...

send2ocean ⋅ 2014/05/07 ⋅ 0

史上最牛JAVA思维导图学习笔记

我做过有道云笔记、印象笔记,也写过博客,几十篇文章之后,发现对笔记分类整理很麻烦,查询不容易,往往自己写的内容都不愿意看一眼,后来用了思维导图,很好用,结构清晰,一目了然,又灵机...

mudiss ⋅ 2017/04/20 ⋅ 0

ESP8266笔记汇总

一、前言 2015年开始,随着ESP8266的横空出现,WiFi SoC大幅降价,市场模组价格一下被拉到了10元档。WiFi由于可直接入网的,在智能家居等行业中成为了应用最广泛的物联网技术。本尊贵为物联网...

iotisan ⋅ 2017/02/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 35分钟前 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 42分钟前 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 49分钟前 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 59分钟前 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

容器之查看minikue的environment——minikube的环境信息

执行如下命令 mjduan@mjduandeMacBook-Pro:~/Docker % minikube docker-envexport DOCKER_TLS_VERIFY="1"export DOCKER_HOST="tcp://192.168.99.100:2376"export DOCKER_CERT_PATH="/U......

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

mysql远程连接不上

设置了root所有hosts远程登录,可是远程登录还是失败,原因可能如下: 登录本地数据库 mysql -uroot -p123456 查询用户表 mysql> select user,host,password from mysql.user; 删除密码为空的...

冰公子 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部