PHPackages                             leeprince/laravel-wechat - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. leeprince/laravel-wechat

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

leeprince/laravel-wechat
========================

This is laravel WeChat composer

v1.2.2(5y ago)117MITPHP

Since Jul 14Pushed 5y ago1 watchersCompare

[ Source](https://github.com/leeprince/laravel-wechat)[ Packagist](https://packagist.org/packages/leeprince/laravel-wechat)[ RSS](/packages/leeprince-laravel-wechat/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (4)Used By (0)

基于 laravel 开发微信公众号 composer 扩展包(20200322–\_20200325)
----------------------------------------------------

[](#基于-laravel-开发微信公众号-composer-扩展包20200322_20200325)

1. 开通微信公众号：订阅号
--------------

[](#1-开通微信公众号订阅号)

1. 到[微信公众号开通个人订阅号](https://mp.weixin.qq.com/)，并查看[相关开发文档](https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html)，并了解[消息管理中的被动回复用户信息](https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html)。

2. 实现对接微信公众号功能
--------------

[](#2-实现对接微信公众号功能)

1.对接代码

```
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce     = $_GET["nonce"];
$echostr   = $_GET["echostr"];

$token  = 'leeprinceSubscription';
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);

if ($tmpStr == $signature) {
    // 微信服务器在验证业务服务器地址的有效性时，包含 echostr 参数，之后微信服务器与业务服务器的交互不再包含此参数。
    if (empty($echostr)) {
        /**
         * 开始处理业务
         */
        return true;
    } else {
        // 若确认此次GET请求来自微信服务器，请原样返回echostr参数内容. 此处只能使用 echo，使用 return 失败。
        echo $echostr;
    }
} else {
    return false;
}
```

2.在 **「微信公众号-&gt;开发-&gt;基本配置-&gt;服务器配置」** 中配置信息，其中服务器地址（URL）要能被外网访问，第一次配置会传入 echostr 参数进行服务器地址的有效校验，之后微信服务器与业务服务器的交互不再包含此参数。可以正确提交即检验成功，之后启动该服务配置。后面可以在「管理-&gt;消息管理」中查看用户给公众号发的消息。

> 项目的服务器地址的路由地址为：/wechat/subscription

> 补充：基于内网开发的可以使用 [ngrok](https://ngrok.com/) 进行内网穿透。ngrok 会分配 http 和 https 的临时链接供你使用的。（mac使用：/Applications/ngrok http 80）其中 「Web Interface」的本地链接  是 web 页面用于查看 ngrok 转发的信息

```
ngrok by @inconshreveable                                       (Ctrl+C to quit)

Session Status                online
Session Expires               7 hours, 59 minutes
Version                       2.3.35
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://6a33d7ab.ngrok.io -> http://localhost:80
Forwarding                    https://6a33d7ab.ngrok.io -> http://localhost:80

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

```

3. 构建微信公众号对接功能到 composer 扩展包中
-----------------------------

[](#3-构建微信公众号对接功能到-composer-扩展包中)

1.在项目（我的本地项目路径是：xxx/www/composer/laravel-wechat 此处为了更好在下文说明）中执行 **composer init**。本地没有 [composer](https://docs.phpcomposer.com/) 的自行去官网下载吧。

```
> composer init
Package name (/) [leeprince/laravel-wechat]:
Description []: This is laravel WeChat composer
Author [leeprince , n to skip]:
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
License []: MIT

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]?
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:

{
    "name": "leeprince/laravel-wechat",
    "description": "This is laravel WeChat composer",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "leeprince",
            "email": "leeprince@foxmail.com"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]?
Would you like the vendor directory added to your .gitignore [yes]?

```

2.在 composer.json 文件中添加自动加载配置

```
    "autoload": {
        "psr-4": {
            "LeePrince\\WeChat\\": "./src/"
        }
    }

```

3.执行 **composer update** 更新获取依赖的最新版本

4. laravel 项目集成本地基于微信公众号开发 composer 组件包
---------------------------------------

[](#4-laravel-项目集成本地基于微信公众号开发-composer-组件包)

1.在已经下载好的 laravel 项目（我的本地路径是：xxx/www/laravel69）中配置 composer laravel-wechat 扩展的本地仓库的相对路径或者绝对路径

```
composer config repositories.leeprince path ../composer/laravel-wechat

```

2.增加新的依赖包到当前项目的 ./vendor/ 中

```
composer require leeprince/laravel-wechat:dev-master

```

5. 编写服务提供者，并注册到 laravel 的服务提供者中
-------------------------------

[](#5-编写服务提供者并注册到-laravel-的服务提供者中)

这是将该 composer leeprince/laravel-wechat 扩展包集成到 laravel 的第一步 1.在 laravel-wechat 项目的 ./src 路径下 编写服务提供者 WeChatServiceProvider 并继承 laravel 的服务提供者。注意命名空间为：namespace LeePrince\\WeChat; 该服务提供者用于加载自定义组件中的所有服务

```
