• 两个星期前,学校请了传智播客的老师给我们实训,讲了一个微信公众号开发,感觉挺有意思,在这里一下记录,以便以后复习. 一、了解微信公众平台 1. 什么是微信公众平台? 微信公众平台是腾讯为了让用户申请和管理...

    两个星期前,学校请了传智播客的老师给我们做实训,讲了一个微信公众号开发,感觉挺有意思,在这里做一下记录,以便以后复习.

    一、了解微信公众平台

    1. 什么是微信公众平台?

    微信公众平台是腾讯为了让用户申请和管理微信公众账号而推出的一个Web平台,而微信公众账号的操作管理在这个平台下进行.换句话说,凡是关注自己公众号的用户,在这个网站中都可以去管理他们. 平台地址: https://mp.weixin.qq.com/

    2. 微信的两种运行模式

    编辑模式与开发者模式,这两种模式是互斥的.

    编辑模式是平台内置的web系统,不需要专业的技术.

    开发者模式可以通过腾讯的API接口进行二次开发,需要专业的PHP技术.

    3. 首先要在平台地址中,创建一个订阅号.

    订阅号和服务号的区别: 订阅号是针对个人的,服务号针对有营业执照的商户.


    二、微信公众平台开发(开发者模式)

    0. 在讲下面的一些知识之前: 大家首先把这个网盘中的一些 要使用的的文件,下载下来,后面会使用到.

    网盘地址: 链接:https://pan.baidu.com/s/1qZzwLGC 密码:v9vk

    1. 开发者模式原理图


    根据上图,我们联想平时我们关注的微信公众号,当我们发消息给公众号,公众号都会自动回复我们一些东西. 

    还有一点,我们必须要有自己的服务器,在阿里云买一个服务器肯定需要钱啊,我们不想花钱怎么办?

    这里就要使用到 内网渗透 的技术,把我们自己的电脑充当服务器(拥有自己的域名).

    2、在开发之前,首先我们要下载并启动PhpStudy,做过php开发的,都应该了解什么是phpStudy.他是php的配置环境,具体参考链接中的PHP环境配置:

    http://blog.csdn.net/m0_37989980/article/details/78971478 

    3、NATAPP内网渗透技术.(将本机充当一个服务器)

    http://natapp.cn/ 使用手机号注册一个自己的账号.如下图所示


    此时我们需要下载一个natapp的客户端. 我在这里提供了网盘地址:  大家可以下载.

    1): 首先将下载好的natapp.exe 与 config.ini 同时赋值到 D盘的natapp目录下(这个natapp目录是自己创建的)

    2): 打开config.ini中的隧道密钥,改成我们自己的密钥.


    这个authtoken就是我们的密钥,把这个密钥复制到config.ini的这个位置


    4): 打开cmd窗口,将刚才D盘下natapp目录下的natapp.exe拖动到命令行中,如下图所示


    这样我们的服务器就已经创建好了,以后我们就可以通过 上面的 http:// 来访问自己的电脑了

    注意: 在运行过程中,cmd命令行不可以关闭/

    5): 下载腾讯提供的API接口, 叫api.php,也在刚才你所下载的网盘文件中.

    我们把api.php文件放到 我们安装的phpStudy的目录下的 PHPTutorial的WWW目录下;


    6): 把api.php放进去之后,打开这个文件, 查看这个文件中的 define("TOKEN","weixin") ,记住这个接口中的密钥是 weixin

    7): 打开我们注册过的微信公众平台,找到工具下 的基本配置


    提交成功后,并点击右侧的启动按钮,就启动成功了.(注意这里有一些注意点:如果提交不成功,多提交几次. 后面有写有哪些注意点)

    8): 此时做到这里就基本上完成了,然后我们可以用自己的微信关注自己所创的公众号.随便发送一条消息.会出现下面问题:


    4、手动开启自动回复(这里有个坑,一定要注意)

    我们使用sublime将www下的api.php 文件打开,做下面操作


    做了这些操作后,我们再向自己的公众号中发送消息,就可以正常回复了!

    三、微信的6大接收接口

    1. 我们想公众号发送文字消息,其就可以回复,发送图片,语音 就无法回复,这是为什么呢?

    只要设置就在api.php接口中.

    2. 微信如何接收消息的?

    在微信公众平台下,打开开发者工具-->消息管理--->接收普通消息下

    其中包括文本消息、图片,语音,图文等消息


    3. 我们来分析一下api.php文件(重点)

    首先 $msgType = "text"; 是表示接收的是什么类型的数据

    $ contentStr 用来返回给我们是什么样的数据.

    如果我们要使用 图片,图文等相关模板,需要将平台中的<XML>文件复制到api.php文件中.

    将我们的需要展示的内容填充进去,就可以了

    四、具体讲解图文消息接口

    1、文本回复接口(文本回复四步走)

    问题:微信公众平台是如何把数据发送给我们的APP的。

    文本回复一共分为这样的几个步骤:

    第一步:组装XML数据


    第二步:定义相关的变量$msgType$contentStr

    第三步:使用sprintf函数,格式化变量到%s的位置

    要用到的知识点:sprintf函数,在实际项目开发主要用于格式化字符串

    sprint(要格式化的字符串,变量1,变量2,变量3...)

    到底有多少个变量呢,就是要格式化的字符串中,有多少个%s就有多少个变量。

    第四步:使用echo输出返回XML数据到微信APP


    2、微信中的图文回复接口(重点中的重点)


    3、编写图文接口(四步走)

    第一步:组装XML数据(设置%s


    XML模板从哪里来,从微信的手册中获取:


    把以上代码复制放到$newsTpl代码中:


    放置完成后,不能立即停止,因为我们还没有放%s呢,必须放置%s


    记住:有几个%s,因为一会还要定义几个变量。

    第二步:设置相关的变量(有几个%s就要定义几个变量)

    我们需要定义6个变量,但是前3个变量,系统默认已经有了,$fromUserName$toUserName$time。所以咱们真正定义的只有3个变量。

    第三步:使用sprintf函数格式化第一步中的字符串

    第四步:使用echo把图文消息返回给微信的APP

    运行结果:

    4、如果微信开发时遇到故障,改如何调试呢?

    打开浏览器,输入http://域名/api.php,看一下语法是否有错误


    如果出现以上代码,代表微信接口没有问题,因为HTTP_RAW_POST_DATA没有经过腾讯服务器,只经过我们自己的服务器,所以报HTTP_RAW_POST_DATA.


    注意点:

    1. 在运行中我们不可以关闭命令行,否则就会出现错误

    2. 要开启phpStudy

    3. 当我们电脑重启后,将natapp.exe拖入到命令行后,会从新生成一个域名.

    3.1 首先先把vaild()方法给打开, 把responseMsg()方法关闭,然后在valid()方法中 添加ob_clean()方法,清除缓存,否则会验证token失败.

    public function valid()
        {
            $echoStr = $_GET["echostr"];
    
            //valid signature , option
            if($this->checkSignature()){
                ob_clean(); 
                echo $echoStr;
                exit;
            }
        }
    3.2 当启动成功后,一定要记住将api.php中的valid()方法注释掉,打开responseMsg()方法

    展开全文
  • 网页授权接口(类似于浏览器通过cookie|session标识客户 微信端通过openid标识) 接口类型(通过网页授权 获取openid) snsapi_base:基本类型 静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是...
    • 网页授权接口(类似于浏览器通过cookie|session标识客户 微信端通过openid标识)

    接口类型(通过网页授权 获取openid)

    1. snsapi_base:基本类型
      1. 静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面) 只获取openid
    2. snsapi_userinfo:详细类型
      1. 弹出窗口是否授权 需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息 (openid,昵称,头像,国籍,地理位置...)
      2. 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

     

    接口步骤

    1. 用户同意授权 获取code
    2. 通过code换取网页授权access_token
    3. 刷新access_token(如果需要 避免过期)
    4. 拉取用户信息(需scope为snsapi_userinfo) 通过网页授权access_token和openid获取用户基本信息(支持UnionID机制 UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。)

     

    关于网页授权access_token和普通access_token的区别(类似于雷锋和雷峰塔)

    1. 微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
    2. 其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用

     

    基本授权(获取openid)

    • 调用接口获取code

    $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=123#wechat_redirect" ;

    • 组装参数 appid|appsecret|code调用接口 获取openid

    $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code" ;

     

    详细授权

    • 调用接口获取code

    $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=123#wechat_redirect" ;

    • 组装参数 appid|appsecret|code调用接口 获取网页授权access_token openid

    $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code" ;

    • 组装参数  网页授权access_token openid 调用接口 拉取用户详细信息

    $url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN" ;

     

     

    /*
    		网页授权
    	*/
    	//获取用户openid
    	public function getBaseInfo() 
    	{
    		//获取code
    		$appid = "XXXXXXX" ;
    		/*
    		调用下面url之后  返回code到  此处的$redirect_uri
    		接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名 donglingjiu.top
    		*/
    		$redirect_uri = urlencode("http://donglingjiu.top/index/index/getUserOpenId");
    		$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=123#wechat_redirect" ;
    		/*
    			scope=snsapi_base 静默跳转 
    		*/
    		header('location:'.$url) ;
    		
    	}
    	public function getUserOpenId() 
    	{
    		//获取网页授权access_token
    
    		$appid = "XXXXXXX" ;
    		$appsecret = "XXXXXXXXX" ;
    		/*
    			scope=snsapi_base
    			静默跳转之后 传过来的code
    		*/
    		$code = $_GET['code'] ;
     		$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code" ;
    		//拉取用户openid
    		$res = $this->http_curl($url,'get') ;
    		dump($res) ;
    		/*
    			此处测试  
    			百度 草料二维码 
    			http://donglingjiu.top/index/index/getBaseInfo 
    			生成二维码之后 手机扫码
    		*/
    	}
    
    	/*
    		详细授权  获取用户 昵称 地理位置 籍贯 头像...
    	*/
    	public function getUserDetail() 
    	{
    		//获取code
    		$appid = "XXXXXXXXX" ;
    		/*
    		调用下面url之后  返回code到  此处的$redirect_uri
    		接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名 donglingjiu.top
    		*/
    		$redirect_uri = urlencode("http://donglingjiu.top/index/index/getUserInfo");
    		$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect" ;
    		/*
    			scope=snsapi_userinfo 手动授权 获取详细信息
    		*/
    		header('location:'.$url) ;
    	}
    	public function getUserInfo() 
    	{
    		//获取网页授权access_token
    
    		$appid = "XXXXXXXXX" ;
    		$appsecret = "XXXXXXXXX" ;
    		/*
    			scope=snsapi_userinfo
    			手动授权 跳转之后 传过来的code
    		*/
    		$code = $_GET['code'] ;
     		$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code" ;
    		$res = $this->http_curl($url,'get') ;
    		$access_token = $res['access_token'] ;
    		$openid = $res['openid'] ;
    		//拉取用户详细信息
    		$url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN" ;
    		$res = $this->http_curl($url1) ;
    		dump($res) ;
    		/*
    			此处测试  
    			百度 草料二维码 
    			http://donglingjiu.top/index/index/getUserDetail 
    			生成二维码之后 手机扫码
    		*/
    	}
    

     

    展开全文
  • 关键字:微信开发图书 微信公众平台开发书籍 微信图书 微信开发书籍 微信图书推荐 微信开发图书推荐  本文介绍了当前图书市场上最主要的微信公众平台开发类书籍,并对每本书的特色了简要点评,供有需要购买的...

    关键字:微信开发图书 微信公众平台开发书籍 微信图书 微信开发书籍 微信图书推荐 微信开发图书推荐 

    本文介绍了当前图书市场上最主要的微信公众平台开发类书籍,并对每本书的特色做了简要点评,供有需要购买的读者进行参考。

    下列书籍按使用顺序,分为PHP、Java、C#三类。

     

    -------------------以下是使用PHP做微信开发的图书推荐-------------------

    微信公众平台开发最佳实践(第2版)

    微信公众平台开发最佳实践(第2版) 作      者 方倍工作室 出 版 社 机械工业出版社
    出版时间 2015-05-01 版      次 2
    页      数 359 印刷时间 2015-05-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787111499756

    专家点评:最全面最深入案例最多的一本,微信开发必备。第一版出版半年就荣登京东2014年度计算机图书榜Top20。

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    微信公众平台搭建与开发揭秘(第2版)

    微信公众平台搭建与开发揭秘(第2版) 作      者 易伟 出 版 社 机械工业出版社
    出版时间 2015-04-01 版      次 2
    页      数 208 印刷时间 2015-04-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787111496403

    专家点评:简单易学,内容很基础,比较适合未搞过开发或者初学微信开发的人。

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    微信公众平台开发基础与实战

    微信公众平台开发基础与实战 作      者 闫小坤,周涛 出 版 社 机械工业出版社
    出版时间 2014-09-01 版      次 1
    页      数 276 印刷时间  
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787111478195

    专家点评:作者开发了开源的WeChatPHPSDK项目,在github上使用过该SDK的读者不妨一读。

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    微信公众平台应用开发实战(第2版)

    微信公众平台应用开发实战(第2版) 作      者 钟志勇,何威俊,冯煜博 出 版 社 机械工业出版社
    出版时间 2014-06-01 版      次 1
    页      数 360 印刷时间 2014-06-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787111464877

    专家点评:介绍了海量请求及高性能的处理方法,公众号用户达百万级别的开发人员值得参考。

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    微信公众平台搭建、开发与实践指南

    微信公众平台搭建、开发与实践指南 作      者 戴晟晖;荆波 出 版 社 中国铁道出版社
    出版时间 2014-10-01 版      次 1
    页      数 332 印刷时间 2014-09-01
    开      本 16开 纸      张  
    印      数 1 I S B N 9787113188634

    专家点评:对微信公众平台所用到的XML、JSON等知识有重点讲述。

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    企业微信公众平台开发实战

    企业微信公众平台开发实战 作      者 方倍工作室 出 版 社 机械工业出版社
    出版时间 2013-04-01 版      次 1
    页      数 166 印刷时间 2013-04-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787111496922

    专家点评:重点讲解了微网站、微信营销大转盘和微信小店开发方面的知识。也是唯一一本讲解微信小店开发的书籍。

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

     

    -------------------以下是PHP书籍推荐-------------------

     

    PHP和MySQL Web开发(原书第4版)

    PHP和MySQL Web开发(原书第4版) 作      者 [澳] Luke Welling,[澳] Luke Welling;武欣 等 译 出 版 社 机械工业出版社
    出版时间 2009-04-01 版      次 1
    页      数 714 印刷时间 2009-04-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787111262817

    专家点评:IT技术人员不得不读!荣获第13届Jolt生产效率大奖获奖图书

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    PHP+MySQL网站开发全程实例(第2版)

    PHP+MySQL网站开发全程实例(第2版) 作      者 于荷云 出 版 社 清华大学出版社
    出版时间 2015-05-01 版      次 2
    页      数 391 印刷时间 2015-05-01
    开      本 16开 纸      张 胶版纸
    印      数 2 I S B N 9787302399056

    专家点评:以全程实例教学为设计目标

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    PHP从入门到精通(第3版 附光盘)

    PHP从入门到精通(第3版 附光盘) 作      者 明日科技 出 版 社 清华大学出版社
    出版时间 2012-07-01 版      次 3
    页      数 540 印刷时间  
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787302288534

    专家点评:41小时视频,808个实例、15项面试真题、626项测试,全面资源库

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    细说PHP(第2版)(含DVD光盘1张)

    细说PHP(第2版)(含DVD光盘1张) 作      者 高洛峰;LAMP兄弟连 出 版 社 电子工业出版社
    出版时间 2012-10-01 版      次 2
    页      数 810 印刷时间 2012-10-01
    开      本 16开 纸      张 胶版纸
    印      数 6 I S B N 9787121185632

    专家点评:51CTO“受读者喜爱的原创IT技术图书”奖

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    -------------------以下是使用Java开发的微信图书-------------------

    微信公众平台应用开发:方法、技巧与案例

    微信公众平台应用开发:方法、技巧与案例 作      者 柳峰 出 版 社 机械工业出版社
    出版时间 2014-01-01 版      次 1
    页      数 319 印刷时间 2014-01-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787111453321

    专家点评:使用Java版讲解,也是唯一一本Java写的微信开发书籍。

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    --------------------以下是Java图书推荐----------------------

    Java编程思想(第4版)

    Java编程思想(第4版) 作      者 [美] Bruce Eckel;陈昊鹏 译 出 版 社 机械工业出版社
    出版时间 2007-06-01 版      次 4
    页      数 880 印刷时间 2007-06-01
    开      本 16开 纸      张 胶版纸
    印      数 4 I S B N 9787111213826

    专家点评:2002年度JOLT大奖获奖图书!荣获第9届Jolt生产效率大奖、第13届Jolt震撼大奖获奖图书

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    疯狂Java讲义(第3版 附光盘)

    疯狂Java讲义(第3版  附光盘) 作      者 李刚 出 版 社 电子工业出版社
    出版时间 2014-07-01 版      次 3
    页      数 868 印刷时间 2014-11-01
    开      本 16开 纸      张 胶版纸
    印      数 3 I S B N 9787121236693

    专家点评:Java经典全面升级,国内覆盖Java8全特性的书籍,赠送880分钟视频讲解、550多个实例及详实课件

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    Java语言程序设计基础篇(原书第8版)

    Java语言程序设计基础篇(原书第8版) 作      者 [美Y.Daniel Liang;李娜 译 出 版 社 机械工业出版社
    出版时间 2011-06-01 版      次 8
    页      数 582 印刷时间 2011-06-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787111340812

    专家点评:java语言的经典教材

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    -------------------以下是使用C#开发微信图书-------------------

    微信公众平台企业应用开发实战

    微信公众平台企业应用开发实战 作      者 刘捷 出 版 社 电子工业出版社
    出版时间 2015-01-01 版      次 1
    页      数 318 印刷时间 2015-01-01
    开      本 16开 纸      张 轻型纸
    印      数 1 I S B N 9787121250132

    专家点评:以C#语言讲解,适合C#的开发人员。唯一一本C#讲解微信开发的书。

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    --------------------以下是C#图书推荐----------------------

    C#入门经典(第6版)

    C#入门经典(第6版) 作      者 [美] Karli Watson,Jacob Vibe Hammer,Jon D Reid 等; 出 版 社 清华大学出版社
    出版时间 2014-01-01 版      次 6
    页      数 868 印刷时间 2014-01-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787302343394

    专家点评:Wrox经典红皮书,屡获殊荣的C#名著和超级畅销书,长期位居C#开发类零售榜首,引领无数新手走入C#殿堂,新版更新至C#2012和.NET4.5,2009、2011年度全行业畅销品种

    购买地址优惠通道1    优惠通道2    优惠通道3    

     

    C#从入门到精通(第3版)

    C#从入门到精通(第3版) 作      者 明日科技 出 版 社 清华大学出版社
    出版时间 2012-09-01 版      次 3
    页      数 556 印刷时间 2012-09-01
    开      本 16开 纸      张 胶版纸
    印      数 1 I S B N 9787302287513

    专家点评:40小时视频,686个实例、323项面试真题、636项测试,全面资源库

    购买地址优惠通道1    优惠通道2    优惠通道3    优惠通道4    

     

    ============================================

    展开全文
  • 微信公众平台PHP开发

    2013-07-12 09:51:55
    最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的~     今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程:     说的通俗一些,用户使用微信发送消息 -> 微信将数据...

    微信公众平台PHP开发


    2013.05.19 10:28CATEGORY:PHPVIEWS:2346COMMENTS:29

    微信公众平台PHP开发

    最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的~
     
    闽南师大小秘书
     
    今天来分享一下开发经验~
    微信公众平台提供的接口很简单,先看看消息交互流程:
     
    微信公众平台消息交互流程
     
    说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并返回数据至微信 -> 微信把返回数据发送给用户,期间数据交互通过XML完成,就这么简单。
     
    下面写个实例,开发微信智能聊天机器人:
     
    1. 注册微信公众平台账号

    微信公众平台:
    https://mp.weixin.qq.com/


    注: 目前一张身份证只能注册两个账号,账号名称关乎加V认证,请慎重注册。
     
    2. 申请服务器/虚拟主机
    没有服务器/虚拟主机的童鞋可以使用BAE和SAE,不多介绍。
     
    3. 开启开发者模式
    微信公众平台有两个模式,一个是编辑模式(傻瓜模式),简单但功能单一。另一个是开发者模式,可以通过开发实现复杂功能。两个模式互斥,显而易见,登录微信公众平台并通过“高级功能”菜单开启开发者模式。
     
    4. 填写接口配置信息
    同样是在“高级功能”菜单中配置,需要配置两项参数:
    URL: 开发者应用访问地址,目前仅支持80端口,以“http://www.1990c.com/weixin/index.php”为例。
    TOKEN: 随意填写,用于生成签名,以“1990c”为例。
    填写完把下面代码保存为index.php并上传至http://www.1990c.com/weixin/目录,最后点击“提交”完成验证。
    01 <?php
    02 define("TOKEN","1990c"); //TOKEN值
    03 $wechatObj = new wechat();
    04 $wechatObj->valid();
    05 class wechat {
    06     publicfunction valid() {
    07         $echoStr= $_GET["echostr"];
    08         if($this->checkSignature()){
    09             echo$echoStr;
    10             exit;
    11         }
    12     }
    13  
    14     privatefunction checkSignature() {
    15         $signature= $_GET["signature"];
    16         $timestamp= $_GET["timestamp"];
    17         $nonce= $_GET["nonce"];
    18         $token= TOKEN;
    19         $tmpArr= array($token,$timestamp, $nonce);
    20         sort($tmpArr);
    21         $tmpStr= implode( $tmpArr );
    22         $tmpStr= sha1( $tmpStr );
    23         if($tmpStr == $signature) {
    24             returntrue;
    25         } else {
    26             returnfalse;
    27         }
    28     }
    29 }
    30 ?>

    这玩意儿就是微信公众平台校验URL是否正确接入,研究代码没有实质性意义,验证完即可删除文件,就不详细说明了,有兴趣的童鞋可以查看官方文档。

    微信公众平台API文档:
    http://mp.weixin.qq.com/wiki/index.php



    5. 开发微信公众平台功能
    OK,上面提到了,微信公众平台与开发者之间的数据交互是通过XML完成的,既然用到XML,当然得遵循规范,所以在着手开发之前先看看官方接口文档提供的XML规范,以文本消息为例:
     
    当用户向微信公众账号发送消息时,微信服务器会POST给开发者一些数据:
    01 <xml>
    02 <!--开发者微信号-->
    03 <ToUserName><![CDATA[toUser]]></ToUserName>
    04 <!--发送方帐号(OpenID)-->
    05 <FromUserName><![CDATA[fromUser]]></FromUserName>
    06 <!--消息创建时间 (整型)-->
    07 <CreateTime>12345678</CreateTime>
    08 <!--消息类别 (text文本消息)-->
    09 <MsgType><![CDATA1]></MsgType>
    10 <!--消息内容-->
    11 <Content><![CDATA[content]]></Content>
    12 <!--消息ID (64位整型)-->
    13 <MsgId>1234567890123456</MsgId>
    14 </xml>

     
    开发者在处理完消息后需要返回数据给微信服务器:

    01 <xml>
    02 <!--接收方帐号(OpenID)-->
    03 <ToUserName><![CDATA[toUser]]></ToUserName>
    04 <!--开发者微信号-->
    05 <FromUserName><![CDATA[fromUser]]></FromUserName>
    06 <!--消息创建时间 (整型)-->
    07 <CreateTime>12345678</CreateTime>
    08 <!--消息类别 (text文本消息)-->
    09 <MsgType><![CDATA1]></MsgType>
    10 <!--回复消息内容-->
    11 <Content><![CDATA[content]]></Content>
    12 <!--星标操作(位0x0001被标志时 星标刚收到的消息)-->
    13 <FuncFlag>0</FuncFlag>
    14 </xml>

    除文本消息外,微信公众平台还支持用户发送图片消息、地理位置消息、链接消息、事件推送,而开发者还可以向微信公众平台回复音乐消息和图文消息,各类消息XML规范也可以参见官方文档。
     
    来看看官方提供的一个PHP示例,我做了一些精简:

    01 <?php
    02 $wechatObj = new wechat();
    03 $wechatObj->responseMsg();
    04 class wechat {
    05     publicfunction responseMsg() {
    06  
    07         //---------- 接 收 数 据 ---------- //
    08  
    09         $postStr= $GLOBALS["HTTP_RAW_POST_DATA"];//获取POST数据
    10  
    11         //用SimpleXML解析POST过来的XML数据
    12         $postObj= simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
    13  
    14         $fromUsername= $postObj->FromUserName;//获取发送方帐号(OpenID)
    15         $toUsername= $postObj->ToUserName;//获取接收方账号
    16         $keyword= trim($postObj->Content);//获取消息内容
    17         $time= time(); //获取当前时间戳
    18  
    19  
    20         //---------- 返 回 数 据 ---------- //
    21  
    22         //返回消息模板
    23         $textTpl= "<xml>
    24         <ToUserName><![CDATA[%s]]></ToUserName>
    25         <FromUserName><![CDATA[%s]]></FromUserName>
    26         <CreateTime>%s</CreateTime>
    27         <MsgType><![CDATA[%s]]></MsgType>
    28         <Content><![CDATA[%s]]></Content>
    29         <FuncFlag>0</FuncFlag>
    30         </xml>";
    31  
    32         $msgType= "text";//消息类型
    33         $contentStr= 'http://www.1990c.com'; //返回消息内容
    34  
    35         //格式化消息模板
    36         $resultStr= sprintf($textTpl,$fromUsername,$toUsername,
    37         $time,$msgType,$contentStr);
    38         echo$resultStr; //输出结果
    39     }
    40 }
    41 ?>

    把代码保存为index.php并上传至http://www.1990c.com/weixin/目录,如果刚才没删除该文件,则直接覆盖。
     
    现在用户通过微信公众平台发送任何消息公众账号均会返回一条内容为“http://www.1990c.com”的消息。


    现在用户通过微信公众平台发送任何消息公众账号均会返回一条内容为“http://www.1990c.com”的消息。
    接下来需要做的就是根据用户消息动态返回结果~
     
    SimSimi(小黄鸡)是目前比较火的聊天机器人,我用CURL开发了一个免费的SimSimi(小黄鸡)接口,传入关键词会返回文本回复,这部分不是本文重点,就不多说明,直接上代码:

    01 <?php
    02 function SimSimi($keyword) {
    03  
    04     //----------- 获取COOKIE ----------//
    05     $url = "http://www.simsimi.com/";
    06     $ch = curl_init($url);
    07     curl_setopt($ch, CURLOPT_HEADER,1);
    08     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    09     $content = curl_exec($ch);
    10     list($header, $body) = explode("\r\n\r\n", $content);
    11     preg_match("/set\-cookie:([^\r\n]*);/iU", $header, $matches);
    12     $cookie = $matches[1];
    13     curl_close($ch);
    14  
    15     //----------- 抓 取 回 复 ----------//
    16     $url = "http://www.simsimi.com/func/req?lc=ch&msg=$keyword";
    17     $ch = curl_init($url);
    18     curl_setopt($ch, CURLOPT_REFERER, "http://www.simsimi.com/talk.htm?lc=ch");
    19     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    20     curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    21     $content = json_decode(curl_exec($ch),1);
    22     curl_close($ch);
    23  
    24     if($content['result']=='100') {
    25         $content['response'];
    26         return $content['response'];
    27     } else {
    28         return '我还不会回答这个问题...';
    29     }
    30 }
    31 ?>

    把上面两段代码整合在一起就大功告成了,需要说明一点,微信服务器在5秒内收不到响应会断掉连接,通过此接口有可能会超时,且SimSimi已经屏蔽了BAE和SAE上的抓取请求,推荐使用SimSimi官方收费API,速度比较快~
     
    最后附上微信公众平台智能聊天机器人源码:

    微信公众平台智能聊天机器人源码下载:
    http://www.1990c.com/wp-content/uploads/2013/05/40.rar



    转载地址:http://www.1990c.com/?p=932

    展开全文
  • PHP实现微信公众平台开发---基础篇一、准备工作i. 有一定的PHP+mysql基础(前提)ii. 要有独立的服务器或者空间(必须)二、微信公众账号介绍和申请流程i. 微信公众帐号---自媒体角色 ii. 微信应用 ---平台 iii. ...

    PHP实现微信公众平台开发---基础篇

    一、准备工作

    i. 有一定的PHP+mysql基础(前提)

    ii. 要有独立的服务器或者空间(必须)

    二、微信公众账号介绍和申请流程

    i. 微信公众帐号---自媒体角色

    ii. 微信应用 ---平台

    iii. 微信用户--普通用户

    iv. 关系

    1. 微信应用给 微信公众帐号 微信用户提供信息交互 获取资讯的平台

    2. 微信用户通过 微信应用这个平台 订阅自己感兴趣的公众账号获取相关资讯

    3. 公众号通过 应用平台推送信息给微信用户

    v. 认证与否的区别:api功能的调用

     

     

     


    三、接入API

    i. 启用开发者模式

    ii. 基本配置

     

    URL:自己的服务器  接受微信服务器发过来的请求

    Token:微信服务器与自己的服务器交互的口令 验证第三方服务器身份的合法性

    微信只支持80端口

    iii. 验证服务器地址的有效性 加密/校验流程

    1. 参考开发者工具->开发者文档->开始开发->接入指南

     

     

    <?php

    /*

    微信公众平台 基本配置需要自己的服务器验证消息是否来自于微信服务器

    微信服务器将发送GET请求到填写的服务器地址URL上,

    GET请求携带参数如下表所示:

     

    参数 描述

    signature 微信加密签名,

    signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

    timestamp 时间戳

    nonce 随机数

    echostr 随机字符串

     

    开发者通过检验signature对请求进行校验(下面有校验方式)。

    若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,

    则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

     

    1)将tokentimestampnonce三个参数进行字典序排序

    2)将三个参数字符串拼接成一个字符串进行sha1加密

    3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

    */

    $signature = $_GET['signature'] ;

    $timestamp = $_GET['timestamp'] ;

    $nonce = $_GET['nonce'] ;

    $echostr = $_GET['echostr'] ;

     

    //基本配置里面填写的token

    $token = 'dongling13' ;

    //排序

    $arr = array($token,$timestamp,$nonce) ;

    sort($arr) ;

    //拼串  sha1加密 返回串

    $str = implode($arr);

    $str = sha1($str) ;

    //signature比较  相同则返回echostr

    if($str == $signature) {

    echo $echostr ;

    }

     

     

     

    iv. 提交即可 若是报错token验证失败  确保服务器代码没问题 可多提交几次

     

     

    展开全文
  • 微信开发之素材管理是子恒老师《微信公众平台开发》视频教程的第三部。详细讲解了用php开发微信,对微信公众平台中的素材管理开发。内容包含微信临时素材,永久素材的上传,删除,获取素材的media_id等等。欢迎反馈...
  • 微信开发之入门教程

    2016-01-12 10:55:26
    微信开发也是有了一定的认识。在此,小宝鸽再次无私地分享给大家啦。其实微信开发跟web开发没有多大的区别,只是经过了微信,然后再由浏览器打开。因为经过微信,因此你的web会附加一些微信平台所提供的一些功能,...
  • 微信公众平台开发微信用户开发管理是子恒老师《微信公众平台开发》视频教程的第7部。详细讲解了用php开发微信,对微信公众平台中的粉丝用户管理开发。内容包含微信公众平台用户分组,获取微信用户列表,查询用户...
  • 微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频...
  • 微信公众号开发5-自定义菜单-微信开发php讲师介绍: 秦子恒,CEO/董事长/总经理,大秦电商创始人,专注网络技术的电商应用。已经出品《1小时快速建站》《微博营销实战》《PHP采集》《网络招商系统》课程介绍: ...
  • 微信公众平台开发微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等...
  • 微信开发之JSSDK调用

    2016-11-22 17:03:13
    所以对PHP微信开发只能看懂思路。更有的是,网上一些微信开发视频,也是和PHP有关的,关于用Java开发的甚少。 无奈之下,我只好苦啃微信开发文档。大家都知道,微信官方给的开发文档真的有点那个啥,
  • 微信群发多图文消息开发是子恒老师《子恒说微信开发》视频教程的第16部。详细讲解了用php开发微信群发图文消息。内容包含图文消息前端页面,一个页面插入多个百度UEditor,群发多图文,查询和删除图文消息等等。欢迎...
  • 自己开发一套微信支付接口(SDK)是子恒老师《子恒说微信开发》视频教程的第15部。详细讲解了用php开发一套自己的微信支付接口。内容包含微信支付开发思路,基础类开发,微信支付接口应用,公众号发红包,企业付款等等...
  • 微信开发必备工具 微信开发必备工具下载地址: http://download.csdn.net/detail/wyx100/8801941 工具: xmlmarker_1_1_setup sqldeveloper portecle-1.7 Notepad_6.7.9 KeyTool_GUI_1.6 工具和教程 jad v1.5.8g ...
  • 微信开发api文档

    2018-09-07 01:15:51
    微信JS-SDK说明文档 https://mp.weixin.qq.com/wiki?action=doc&amp;amp;amp;id=mp1421141115&amp;amp;amp;t=0.40348856472497907#11 微信JS-SDK接口 ...
  • 随着腾讯微信公众平台号的开放,围绕着微信的各种开发和营销如火如荼。很多商家也开始在微信文章,想充分利用微信平台4亿多的粉丝群体来进行各种营销和推广。这直接带来了很多公司开始做微信第3方营销平台,而...
  • 微信开发之难点解析

    2015-12-13 21:57:03
    微信开发就是调用接口。这个难点就是调用接口时需要验证,必须按照微信要求的验证规则验证成功后才能调用接口。那么以我开发的微信小项目总结一下微信开发的难点。 1.微信开发属于web开发,要选合适的语言 尽管web...
  • 本人最近微信支付开发,是第一次接触.其中走了很多弯路,遇到的问题也很多.为了让和我一样的新人不再遇到类似的问题,我把我的开发步骤和问题写出来,以供参考. 开发时间是2016/8/2,所以微信支付的版本也是对应此时...
  • 微信公众平台开发微信编辑器开发是子恒老师《微信公众平台开发》视频教程的第11部。详细讲解了用php进行微信编辑器的开发。内容包含微信公众号编辑器开发思路,编辑器前端页面,功能实现,添加新样式等等。欢迎...
1 2 3 4 5 ... 20
收藏数 40,986
精华内容 16,394
热门标签
关键字:

php做微信开发