mistcheng / sowechat
基于Laravel PHP框架的微信网页版Api架构 & 基于Laravel PHP框架的微信(WeiXin) Web Api
v1.1
2016-10-14 07:51 UTC
Requires
- php: >=5.6.4
- barryvdh/laravel-ide-helper: ~2.2
- guzzlehttp/guzzle: ~6.0
- laravel/framework: 5.3.*
- predis/predis: ~1.0
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.0
- symfony/css-selector: 3.1.*
- symfony/dom-crawler: 3.1.*
This package is not auto-updated.
Last update: 2024-09-14 21:03:35 UTC
README
功能
7*24
小时不间断运行,- 易于使用,支持发送/接收多种消息
- 优雅的系统架构,支持
跨平台
开发和灵活的自定义扩展
- 支持
Restful Api
,异步消息处理
和消息事件广播
- 基于
Php
,世界上最棒的语言! :)
系统架构
- 本系统由3个独立组件组成
中间
组件是系统的核心,负责二维码扫描和消息监听;我为此做了大量工作以确保其健壮性。同时,作为连接器,它支持向左侧
组件发送消息的能力,并将简单格式的消息推送到右侧
组件。运行php artisan wechat:listen
命令使其工作。左侧
组件用于发送消息,用户可以向其代码中的任何朋友发送消息。类App\Console\Commands\WechatSend
是一个示例,运行php artisan wechat:send
命令使其工作。右侧
组件用于处理消息,用户可以对即将到来的消息做任何处理。作业App\Jobs\ProcessWechatMessage
将每条消息处理成更规范的消息(文本、分享、图片、语音、文件等)。然后,它触发App\Events\WechatMessageEvent
事件到订阅者,他们可以对消息做一些自定义操作。类App\Listeners\SaveWechatMessageListener
是一个示例,它将消息保存到数据库中。优势
:这三个组件是3个独立的进程。这可以保证中间
部分的持续运行,同时,用户可以在左侧
和右侧
部分进行任何扩展,而不会干扰到中间
部分。
先决条件
- php 5.6或更高版本
- php composer
- redis(可选)
- mysql(可选)
用法
1. 安装
git clone https://github.com/mistcheng/sowechat.git
cd sowechat
composer install
2. 配置
2.1 config/wechat.php
是微信配置文件
<?php return [ 'debug' => env('WECHAT_DEBUG', false), // debug mode 'web_api' => [ 'connect_timeout' => 30, // http request timeout 'max_attempts' => 10, // max request attempts in half minutes ], 'job' => [ 'connection' => env('QUEUE_DRIVER', 'database'), // wehcat message queu engine, recommend database|redis 'queue' => env('JOB_QUEUE', 'default'), // queue name ], ];
2.2 队列配置(推荐数据库或redis,切勿使用异步)
在
2.1
部分,选项wechat.job.connection
应在文件config/database.php
中进行配置。
2.2.1 如果将wechat.job.connection
设置为database
,则必须在文件config/database.php
中正确配置选项database.connections.mysql
'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ],
2.2.2 如果将wechat.job.connection
设置为redis
,则必须正确配置选项database.redis
。
'redis' => [ 'cluster' => false, 'default' => [ 'host' => env('REDIS_HOST', 'localhost'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ],
2.3 运行
2.3.1 首次运行,初始化数据库脚本
cd sowechat
php artisan migrate
2.3.2 运行新的中间
组件
php artisan wechat:listen --new
在
storage/app/wechat
文件夹中将出现一个新的二维码,使用您的微信扫描它进行登录。
2.3.3 不重新登录运行中间
组件
php artisan wechat:listen
运行命令时不要传递参数--new
2.3.4 处理微信消息
php artisan queue:work
有关详细信息,请参阅作业
App\Jobs\ProcessWechatMessage
和示例类App\Listeners\SaveWechatMessageListener
。
2.3.5 通过控制台发送微信消息
php artisan wechat:send
有关详细信息,请参阅类
App\Console\Commands\WechatSend
。
2.3.6 通过Web Api发送微信消息
php artisan wechat:serve --port=your_port
当您调用API时,必须启动Web服务器。最简单的方法是使用上述命令启动一个迷你服务器。您还可以使用
Apache
、Nginx
等部署您的代码。
这里有一些示例,这将返回一个JSON响应 {'ret':0, 'message':'xxx'}
,如果 ret
等于0则为成功
# send text, POST request, need params `to` and `content` curl -H 'Accept:application/json' --data "to=$to_user_name&content=$your_content" https://:$your_port/api/wechat/messages/text
# send image, POST request, need params `to` and `path` curl -H 'Accept:application/json' --data "to=$to_user_name&path=$image_path" https://:$your_port/api/wechat/messages/image
# send emotion, POST request, need params `to` and `path` curl -H 'Accept:application/json' --data "to=$to_user_name&path=$emotion_path" https://:$your_port/api/wechat/messages/emotion
# send file, POST request, need params `to` and `path` curl -H 'Accept:application/json' --data "to=$to_user_name&path=$file_path" https://:$your_port/api/wechat/messages/file
开源
声明
本软件不得仅用于商业目的