微信随笔

验证服务器

准备

首先要有一个服务器,可以是租用也可以用免费空间.比如一个免费国外空间freevar.建个test.php,写上echo $_GET["echostr"];//这是微信服务器发来的随机数,能返回就证明这服务器能用.要验证的话可以加密然后和微信发过来的随机字符串匹配

然后在公众号后台的服务器配置里填上空间url(xxx.com/test.php),填上token(如'weixin').

EncodingAESKey随机生成

要安全就安全模式,不要安全要速度就明文

提交


过程

参数                  描述

signature         微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参                                                    数、nonce参数。

timestamp         时间戳

nonce                随机数

echostr              随机字符串

首先微信服务器会用token+timestamp+nonce经过加密计算得出一个结果signature,然后把时间戳,随机数,加密结果加上一个随机字符串echostr用get发过来,然后你可以在公众号服务器中用这个加密过程计算一次看能不能和signature对上.能对上就证明在微信服务器上的token和公众号服务器上的token是一致的,这个是微信发过来的信息没有错了.然后你可以把微信发过来的随机数也发过去,微信也知道这个公众号服务器的确是你的服务器了.

连接完成


提交URL后微信第一次调用一次服务器的php文件创建一个文件里的类,静态的话应该还在服务器保留有(?).之后应该每一次有消息都会调用一次服务器配置的php文件,


/**
 * "拿post上的数据"
 * 基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来  *接收, 比如 text/xml 或者 soap 等等。
 * 另外还有一项 php://input 也可以实现此这个功能
 * php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。
 * php://input 不能用于 enctype="multipart/form-data"。
 */

post方法代码:

<?php
/**
 想用post方法传递数据
*/

$data='
<xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName> 
 <CreateTime>1348831860</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[this is a test]]></Content>
 <MsgId>1234567890123456</MsgId>
 </xml>
';


$url="localhost/b.php";
$header[]="Content-type:text/xml";//************


$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);//**********
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);


curl_exec($curl);
curl_close($curl);
?>


get方法传递代码:
<?php
/**
 *用cURL通过get方法传递参数
 */
$url="localhost/b.php?abc=123&ddd=sdfsef";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);

curl_exec($curl);
curl_close($curl);
?>

<?php
$requst=$_REQUEST;
$requst=implode($requst);

$file1=fopen("test.txt","w");
fwrite($file1,$requst);
fclose($file1);
?>


阅读更多
文章标签: 微信
个人分类: PHP 微信
想对作者说点什么? 我来说一句

oracle 数据仓库随笔

2011年06月29日 547KB 下载

培根随笔集 英语原文

2009年04月06日 150KB 下载

没有更多推荐了,返回首页

不良信息举报

微信随笔

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭