微信开发第一篇:实现接入流程

一、申请公众号测试号地址
http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

官方接入文档:
http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html

TOKEN_001

TOKEN_002

TOKEN_003

成功输出,就代表配置成功!

在接口配置信息信息处,提交url和Token值

TOKEN_0004

TOKEN_0005

TOKEN_0006

代码:仅供学习测试用途

Select Code
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
<?php
namespace Home\Controller;
use Think\Controller;

define("TOKEN", "ceshi");

class IndexController extends Controller {

// 采用微信官方提供的验证方法
public function index(){
	$echoStr = $_GET["echostr"];

    // 验证通过以后,会走else区间
	if($this->checkSignature() && isset($echoStr)){
		echo $echoStr;
		exit;
	} else{
		$this->responseMsg();
	}
}

// 发送者的消息会传送到自己的服务器
public function responseMsg()
{
	//get post data, May be due to the different environments
	$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

	$str = json_encode($postStr);
	
	$data['xml'] = $str;

	D('tmp')->add($data);
	
}

// 官方提供的验证
private function checkSignature()
{
    // you must define TOKEN by yourself
    if (!defined("TOKEN")) {
        throw new Exception('TOKEN is not defined!');
    }
    
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    		
	$token = TOKEN;
	$tmpArr = array($token, $timestamp, $nonce);
    // use SORT_STRING rule
	sort($tmpArr, SORT_STRING);
	$tmpStr = implode( $tmpArr );
	$tmpStr = sha1( $tmpStr );
	
	if( $tmpStr == $signature ){
		return true;
	}else{
		return false;
	}
}
}

见官方文档说明:
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。
http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html