Token和Access_token
Token:用来验证发送给公众账号服务器的信息是否来自微信后台
Access_token:通过凭证接口获取到的凭证,保障微信后台接到的消息来自合法的公众账号服务器
接口配置和用户消息处理
*使用同一个URL来做用户消息处理和接口配置。
接口配置:
用户消息处理:
获取POST数据
[1:]$postData=$HTTP_RAW_POST_DATA
*$HTTP_RAW_POST_DATA 包含 POST 提交原始数据的预定义变量
PHP函数中不能访问全局变量,如把代码中获取POST数据语句封装成函数,需要使用以下方式获取:
A:global $HTTP_RAW_POST_DATA//global关键字声明全局变量
B:$GLOBALS[‘HTTP_RAW_POST_DATA’] //使用$GLOBALS [超全局变量数组]
[2:]$postData=file_get_contents(“php://input”);
*php://input:可以访问请求原始数据的只读流,不依赖特定php.ini,enctype="multipart/form-data" 的时候 php://input 无效
消息输出
//输出消息XML模版
$retTmp="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
//对消息模版中通配符进行替换 %s表示string类型
$resultStr=sprintf($retTmp,$val1,$val2,time(),$val3);
使用CURL发送请求
定义:CURL是一个强大的开源库,支持多种协议,包括HTTP,FTP,TELNET等;支持HTTPS;使用CURL发送HTTP请求时,可以通过选项灵活设置不同的HTTP协议参数。
步骤:
1)初始化连接句柄;
2)设置CURL选项;
3)执行并获取结果;
4)释放CURL连接句柄。
常用函数:
[1:]Curl_init([string $url=NULL]):初始化一个新会话,返回一个cURL句柄,供curl_setopt()、curl_exec()和curl_close()函数使用。提供url参数时,CURLOPT_URL选项将会被设置成这个值,也可以使用curl_setopt()函数手动设置。
[2:]curl_setopt(resource $ch,int $option,mixed $value):通过设定CURL函数库定义的选项来定制HTTP请求。
选项示例:
CURLOPT_URL:指定请求的URL
CURLOPT_RETURNTRANSFER:设置为1表示稍后执行的curl_exec()函数返回结果是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE。
CURLOPT_HEADER:设置为0表示不返回HTTP头部信息。
CURLOPT_TIMEOUT:设置超时限制,防止死循环
CURLOPT_USERAGENT:在HTTP请求中包含一个“User-Agent”头的字符串
CURLOPT_FOLLOWLOCATION:自动跳转
CURLOPT_AUTOREFERER:当根据location重定向时自动设置header中referer信息
CURLOPT_COOKIEFILE:读取存储的cookie信息
CURLOPT_SSL_VERIFYPEER:检查认证证书来源
CURLOPT_SSL_VERIFYHOST:检查证书中SSL加密算法是否存在
CURLOPT_HTTPGET:发送一个常规get请求
CURLOPT_POST:发送一个常规post请求
CURLOPT_POSTFIELDS:post提交的数据包
[3:]curl_exec(resource $ch):执行CURL请求。返回值是对应URL返回的数据,以字符串表示,如发生错误,返回FALSE(===)。
[4:]curl_getinfo($opt):获取CURL请求输出的相关信息
$opt设置后返回参数指定的信息[适用只需关注某些传输信息时]
[5:]curl_close(resource $ch):关闭CURL连接
*获取HTTP请求中的GET和POST参数的场景是公众账号服务器为被调用方