日期:2011-07-17  浏览次数:20529 次

这个扩展实现了SP和微信公众平台的对接,1.0版暂时只实现了最简单的功能:绑定,收信息,回复信息。 

扩展配置方法: 

$spConfig = array( 
    'mode' => 'debug' 
    //扩展配置 
    , 'ext' => array( 
        //微信扩展设置 
        'spWeiXin' => array( 
            'TOKEN' => 'weixin' //微信通信密钥,后台设置 
        ) 
    ) 
);
 
 然后在controll的方法里面执行: 
$wx = spClass('spWeiXin'); 
        $msg = $wx->run();

    就行了,如果是绑定那么会直接输出微信指定显示的echostr,程序中止执行。如果是收到信息,那么$msg就是收到的信息的数组,键名对照微信官方文档就成。

 

<?php
 
/**
 * <b>SpeedPHP微信接口扩展</b>
 * <p>2013年8月15日 08:51:23</p>
 * @author Lee(leeldy[AT]163.com)
 * @version 1.0
 */
class spWeiXin {
 
    //微信通信密钥
    private $token;
    //微信公众帐号ID
    private $publicuserid;
    //信息接受者
    private $touserid;
 
    public function __construct() {
        $params = spExt('spWeiXin');
        //获取配置参数
        if (empty($params['TOKEN'])) {
            spError('微信公众帐号通信密钥未设置!');
        }
        $this->token = $params['TOKEN'];
    }
 
    /**
     * 绑定微信接口
     * @return stringfalse
     */
    public function bind() {
 
        //随机字符串
        $echoStr = $_GET["echostr"];
        //微信加密签名
        $signature = $_GET["signature"];
        //签名时间戳
        $timestamp = $_GET["timestamp"];
        //加密随机数
        $nonce = $_GET["nonce"];
 
        /*
         * 加密/校验流程:
          1. 将token、timestamp、nonce三个参数进行字典序排序
          2. 将三个参数字符串拼接成一个字符串进行sha1加密
          3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
         */
        $tmpArr = array($this->token, $timestamp, $nonce);
        sort($tmpArr);
    &n