easywechat--在thinkPHP5中的使用

1. 安装

1.1 v-4.0 版本要求 PHP版本在7.0以上

1.2 在项目目录下运行以下命令

若未安装composer,则先安装composer -> http://docs.phpcomposer.com/00-intro.html

windows 环境下安装报 openssl extension is missing, 则修改php.ini文件,开启extension=php_openssl.dll

 composer安装完成后可以在命令行中执行:composer config -g repo.packagist composer https://packagist.phpcomposer.com 改写Packagist 镜像至国内镜像可以加快下载速度。

2. 调用

use EasyWeChat\Factory;

class yourClass {
    // ......

    // 开始操作
    public function wechatAction() {
        $app = Factory::officialAccount(config('wechat_config'));
        // ...
    }
}
'wechat_config' => [
        /**
         * Debug 模式,bool 值:true/false
         *
         * 当值为 false 时,所有的日志都不会记录
         */
        'debug'  => true,
        /**
         * 账号基本信息,请从微信公众平台/开放平台获取
         */
        'app_id'  => '',         // AppID
        'secret'  => '',     // AppSecret
        'token'   => '',          // Token
        'aes_key' => '',                    // EncodingAESKey,安全模式下请一定要填写!!!
        /**
         * 日志配置
         *
         * level: 日志级别, 可选为:
         *         debug/info/notice/warning/error/critical/alert/emergency
         * permission:日志文件权限(可选),默认为null(若为null值,monolog会取0644)
         * file:日志文件位置(绝对路径!!!),要求可写权限
         */
        'log' => [
            'level'      => 'debug',
            'permission' =>  0777,
            'file'       =>  LOG_PATH.'easywechat.log',
        ],
        /**
         * OAuth 配置
         *
         * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
         * callback:OAuth授权完成后的回调页地址
         */
        'oauth' => [
            'scopes'   => ['snsapi_userinfo'],
            'callback' => 'home/oauthallback',
        ],
        /**
         * 微信支付
         */
        'payment' => [
            'merchant_id'        => '', // 商户号
            'key'                => '',
            'cert_path'          => '', // XXX: 绝对路径!!!!
            'key_path'           => '',      // XXX: 绝对路径!!!!
            // 'device_info'     => '013467007045764',
            // 'sub_app_id'      => '',
            // 'sub_merchant_id' => '',
            // ...
        ],
        /**
         * Guzzle 全局设置
         *
         * 更多请参考: http://docs.guzzlephp.org/en/latest/request-options.html
         */
        'guzzle' => [
            'timeout' => 3.0, // 超时时间(秒)
            'verify' => true, // 关掉 SSL 认证(强烈不建议!!!)
        ]
    ]

使用之前,要先配置好各个参数, 具体移步至 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

例如 token的获取:

<?php
namespace app\home\controller;

class Access extends Home {
    public $token = 'yourToken';
    public function index()
    {
        $echoStr = input('param.echostr');
        if( $this->checkSignature() ){
            echo $echoStr;
            exit;
        }
    }

    public function responseMsg()
    {
        //get post data, May be due to the different environments
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

        //extract post data
        if (!empty($postStr)){
            /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
               the best way is to check the validity of xml by yourself */
            libxml_disable_entity_loader(true);
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;
            $toUsername = $postObj->ToUserName;
            $keyword = trim($postObj->Content);
            $time = time();
            $textTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
                            </xml>";
            if(!empty( $keyword ))
            {
                $msgType = "text";
                $contentStr = "Welcome to wechat world!";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            }else{
                echo "Input something...";
            }

        }else {
            echo "test,,,,";
            exit;
        }
    }

    private function checkSignature()
    {

        $param = input('param.');

        $signature = $param["signature"];
        $timestamp = $param["timestamp"];
        $nonce = $param["nonce"];

        $tmpArr = array( $this->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;
        }
    }

}

 

========================= 全部配置好后就可以愉快的玩耍了 ========================

 

posted @ 2018-02-28 17:03  会飞的猿  阅读(8845)  评论(0编辑  收藏  举报