php微信公众平台开发类实例

 ThinkWechat.php类文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142

<?php
class Wechat {
/**
* 微信推送过来的数据或响应数据
* @var array
*/
private $data = array();
/**
* 构造方法,用于实例化微信SDK
* @param string $token 微信开放平台设置的TOKEN
*/
public function __construct($token) {
$this->auth($token) || exit;
if(!empty($_GET['echostr'])){
exit($_GET['echostr']);
} else {
try
{
$xml = file_get_contents("php://input");
$xml = new SimpleXMLElement($xml);
$xml || exit;
foreach ($xml as $key => $value) {
$this->data[$key] = strval($value);
}
}catch(Exception $e){
}
}
}
/**
* 获取微信推送的数据
* @return array 转换为数组后的数据
*/
public function request(){
return $this->data;
}
/**
* * 响应微信发送的信息(自动回复)
* @param string $to 接收用户名
* @param string $from 发送者用户名
* @param array $content 回复信息,文本信息为string类型
* @param string $type 消息类型
* @param string $flag 是否新标刚接受到的信息
* @return string XML字符串
*/
public function response($content, $type = 'text', $flag = 0){
/* 基础数据 */
$this->data = array(
'ToUserName' => $this->data['FromUserName'],
'FromUserName' => $this->data['ToUserName'],
'CreateTime' => time(),
'MsgType' => $type,
);
/* 添加类型数据 */
$this->$type($content);
/* 添加状态 */
$this->data['FuncFlag'] = $flag;
/* 转换数据为XML */
$xml = new SimpleXMLElement('<xml></xml>');
$this->data2xml($xml, $this->data);
exit($xml->asXML());
}
/**
* 回复文本信息
* @param string $content 要回复的信息
*/
private function text($content){
$this->data['Content'] = $content;
}
/**
* 回复音乐信息
* @param string $content 要回复的音乐
*/
private function music($music){
list(
$music['Title'],
$music['Description'],
$music['MusicUrl'],
$music['HQMusicUrl']
) = $music;
$this->data['Music'] = $music;
}
/**
* 回复图文信息
* @param string $news 要回复的图文内容
*/
private function news($news){
$articles = array();
foreach ($news as $key => $value) {
list(
$articles[$key]['Title'],
$articles[$key]['Description'],
$articles[$key]['PicUrl'],
$articles[$key]['Url']
) = $value;
if($key >= 9) { break; } //最多只允许10调新闻
}
$this->data['ArticleCount'] = count($articles);
$this->data['Articles'] = $articles;
}
/**
* 数据XML编码
* @param object $xml XML对象
* @param mixed $data 数据
* @param string $item 数字索引时的节点名称
* @return string
*/
private function data2xml($xml, $data, $item = 'item') {
foreach ($data as $key => $value) {
/* 指定默认的数字key */
is_numeric($key) && $key = $item;
/* 添加子元素 */
if(is_array($value) || is_object($value)){
$child = $xml->addChild($key);
$this->data2xml($child, $value, $item);
} else {
if(is_numeric($value)){
$child = $xml->addChild($key, $value);
} else {
$child = $xml->addChild($key);
$node = dom_import_simplexml($child);
$node->appendChild($node->ownerDocument->createCDATASection($value));
}
}
}
}
/**
* 对数据进行签名认证,确保是微信发送的数据
* @param string $token 微信开放平台设置的TOKEN
* @return boolean true-签名正确,false-签名错误
*/
private function auth($token){
if(empty($_GET['signature'])) return;
/* 获取数据 */
$data = array($_GET['timestamp'], $_GET['nonce'], $token);
$sign = $_GET['signature'];
/* 对数据进行字典排序 */
sort($data,SORT_STRING);
/* 生成签名 */
$signature = sha1(implode($data));
return $signature === $sign;
}
}

时间: 2024-10-25 05:23:00

php微信公众平台开发类实例的相关文章

php微信公众平台开发类实例_php技巧

本文实例讲述了php微信公众平台开发类.分享给大家供大家参考.具体分析如下: ThinkWechat.php类文件如下: <?php class Wechat { /** * 微信推送过来的数据或响应数据 * @var array */ private $data = array(); /** * 构造方法,用于实例化微信SDK * @param string $token 微信开放平台设置的TOKEN */ public function __construct($token) { $this

基于php的微信公众平台开发入门实例_php实例

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

微信公众平台开发书籍推荐

关键字:微信开发图书 微信公众平台开发书籍 微信图书 微信开发书籍 微信图书推荐 微信开发图书推荐  本文介绍了当前图书市场上最主要的微信公众平台开发类书籍,并对每本书的特色做了简要点评,供有需要购买的读者进行参考. 下列书籍按使用顺序,分为PHP.Java.C#三类.   -------------------以下是使用PHP做微信开发的图书推荐------------------- 微信公众平台开发(又名微信公众平台开发最佳实践第3版) 作      者 方倍工作室 出 版 方 方倍工作室

微信公众平台开发 JS-SDK开发(图像接口实例)

本文并非是对微信JS-SDK说明文档的复制,而是通过一个简单的例子来更深入的了解使用微信JS-SDK,具体文档请参考官方说明文档<微信JS-SDK说明文档>.微信公众平台面向开发者开放微信内网页开发工具包(微信JS-SDK),通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页上使用微信本身的拍照.选图.语音.位置等基本能力,还可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 微信JS-SDK提供的11类接口(分享接口.图像接口.音频接口.智能

微信公众平台开发实现2048游戏的方法_php实例

本文实例讲述了微信公众平台开发实现2048游戏的方法.分享给大家供大家参考.具体如下: 一.2048游戏概述 <2048>是比较流行的一款数字游戏.原版2048首先在github上发布,原作者是Gabriele Cirulli.它是基于<1024>和<小3传奇>的玩法开发而成的新型数字游戏 . 随后2048便出现各种版本,走各大平台.由Ketchapp公司移植到IOS的版本最为火热,现在约有1000万下载,其名字跟原版一模一样.衍生版中最出名的是<2048六边形&

php版微信公众平台开发之验证步骤实例详解_php实例

本文实例讲述了php版微信公众平台开发之验证步骤.分享给大家供大家参考,具体如下: 微信公众平台开发我们现在做得比较多了,这里给各位介绍的是一个入门级别的微信公众平台验证基础知识了,有兴趣的和小编来看看. 开发微信的时候 需要验证一下,在官方开发者中心哪里有可以下源代码,登录到 公众帐号后 看到左边的最下角有一个开发者中心点击,然后填写上你相对应的 Token 和 url 然后就可以验证成功的话就可以开发了. 下载微信php验证源代码在 开发者中心 - 开发者文档 - 接口消息 - 验证消息真实

php微信公众平台开发之微信群发信息_php实例

1.目的 完成在微信公众号中群发消息.这里只是完成简单的文字发送.也可以发送语音图片等,只是发送数据格式不同而已,下面有链接,可以查询数据类型的数据发送格式. 2.群发短信的流程 获取测试公众账号(有账号的可以不用测试账号,不过正式的账号限制比较多)用户关注上面的公众账号通过appid和appsecret获取我们的access_token通过access_token群发短信 3.获取测试公众账号 + 关注公众号 1).公众测试账号获取 访问上面的连接,选择"接口测试号申请"获得直接打开

php 微信公众平台开发模式实现多客服的实例代码_php实例

其实微信公众平台的多客服功能已经出来好久了,并且一出来的时候我就已经为自己的公众号实现了,原本以为大家都已经会了,但是今天还是有人问起这个多客服功能怎么使用,我找了下网上也没什么好的教程,今天我就给大家发一篇比较简单易懂的教程吧 在这篇微信公众平台开发教程中,我们将介绍如何使用开发模式实现多客服系统. 一.回复多客服消息 在新的微信协议中,开发模式也可以接入客服系统. 开发者如果需要让用户使用客服系统,需要在接收到用户发送的消息时,返回一个MsgType为transfer_customer_se

php微信公众平台开发(四)回复功能开发_php实例

一.简介 微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性.下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发. 二.思路分析 用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现. 关键代码如下: if($keyword=="你好"){ $contentStr = "hello"; }elseif($keyword=="苏州&q