Codeigniter 3 优雅使用 EasyWeChat

EasyWeChat 是什么

EasyWeChat 是一个开源的 微信 非官方 SDK。

EasyWeChat 的安装非常简单,因为它是一个标准的 Composer 包,这意味着任何满足下列安装条件的 PHP 项目支持 Composer 都可以使用它。

GitHub 源码地址:https://github.com/overtrue/wechat

环境需求

  • PHP >= 5.5.9
  • openssl 拓展
  • fileinfo 拓展(素材管理模块需要用到)

示例代码地址

https://github.com/Yhif/Codeigniter-3-with...

进入正题,配置 Composer 路径

由于EasyWeChat是一个标准的 Composer 包,我们需要对 Codeigniter 3 增加对 Composer 支持。

首先在入口文件index.php中require_once BASEPATH.'core/CodeIgniter.php';之前添加

// COMPOSER DIRECTORY NAME
// $composer_path = 'vendor';

// if (($_composer_temp = realpath($composer_path)) !== FALSE)
// {
//  $composer_path = $_composer_temp.DIRECTORY_SEPARATOR;
// }

// Path to the composer directory
// define('COMPOSERPATH', $composer_path);

然后修改application/config/config.php文件中 Composer 自动加载路径为:

// $config['composer_autoload'] = COMPOSERPATH . 'autoload.php';

更新,感谢@binafor
然后修改application/config/config.php文件中 Composer 自动加载路径为:

$config['composer_autoload'] = FCPATH . 'vendor/autoload.php';

安装 EasyWeChat Composer 包

将原来的 composer.json 重命名 composer.json.bak, 执行 composer require "overtrue/wechat",等待安装完毕就可以优雅的使用 EasyWeChat 了。

验证服务器地址有效性

微信开发者中心配置就不说了,自己查看文档配置即可。

http://mp.weixin.qq.com/wiki/17/2d4265491f...

覆盖 application/controllers/Welcome.php 文件为:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use EasyWeChat\Foundation\Application;

class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->view('welcome_message');
    }

    public function server()
    {
        $options = [
            'debug'  => true,
            'app_id' => 'wxxxxxxxxxxxxxxxxxx',
            'secret' => 'f77xxxxxxxxxxxxxxxxxxxxx',
            'token'  => 'xxxxxxxx',
            'aes_key' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 可选
            'log' => [
                'level' => 'debug',
                'file'  => '/tmp/easywechat.log', // XXX: 绝对路径!!!!
            ]
        ];

        $app = new Application($options);
        // 从项目实例中得到服务端应用实例。
        $server = $app->server;
        $server->setMessageHandler(function ($message) {
            // $message->FromUserName // 用户的 openid
            // $message->MsgType // 消息类型:event, text....
            return "您好!欢迎关注我!";
        });
        $response = $server->serve();
        $response->send();
    }
}

更多功能使用请查看 EasyWeChat 官方文档

文档:https://easywechat.org/zh-cn/docs/

查看原文

https://yhif.github.io/2016/08/28/Codeigni...

本帖已被设为精华帖!
本帖由 Summer 于 7年前 加精
Cola
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7
ruolis

我也正在 CodeIgniter 里面使用 EasyWeChat 但是感觉你这样并不是十分的优雅!

7年前 评论
Cola

@ruooooooli 你怎么使用的?

7年前 评论
Cola

@binafor Codeigniter 默认 composer 目录不在根目录下,我只是设置一下自定义路径。

7年前 评论

@不舍得你 嗯,很坑爹,默认在 application 目录下,不过我的意思是感觉把路径定义在 index.php 里不是很好的作法,感觉使用自带的 FCPATH 常量可能稍微好一点,个人观点 :laughing:

7年前 评论
Cola

@binafor 确实,省的定义一个常量了。:+1:

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!