suunnn / wechatlib
Wechat SDK for PHP
1.0.0
2022-10-24 07:05 UTC
Requires
- ext-openssl: *
- nyholm/psr7: ^1.5
- nyholm/psr7-server: ^1.0
- symfony/http-client: ^5.4
- symfony/psr-http-message-bridge: ^2.1
This package is auto-updated.
Last update: 2025-03-24 13:01:38 UTC
README
说明
基于 easywechat 二次开发(easywechat PHP >= 8.0.2)
必要
- php >= 7.0
- composer
安装
$ composer require suunnn/wechatlib
用法
Laravel
- 配置微信账号
config/wechat.php
<?php return [ // .env 文件中定义变量 'miniapp' => [ 'app_id' => env('WECHAT_MINIAPP_ID'), 'secret' => env('WECHAT_MINIAPP_SECRET'), 'token' => env('WECHAT_MINIAPP_TOKEN'), 'aes_key' => env('WECHAT_MINIAPP_AESKEY') ], 'official_account' => [ ] ];
- 定义 provider
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use WeChatLib\MiniApp\AccessToken; // use WeChatLib\OfficialAccount\AccessToken; use WeChatLib\MiniApp\Application; // use WeChatLib\OfficialAccount\Application; class WeChatMiniAppProvider extends ServiceProvider { /** * Register services. * * @return void */ public function register() { $this->app->singleton('WeChatMiniApp', function () { $app = new Application(config('wechat.miniapp')); // 实例化一个小程序应用对象 // $app = new \WeChatLib\OfficialAccount\Application(config('wechat.official_account')); // 实例化一个公众号应用对象 //============== 可以设置已有的小程序或公众号 access token ==============/ // $token = "ACCESS_TOKEN"; // $accessToken = new AccessToken($app->getAccount()->getAppId(), $app->getAccount()->getSecret()); // 实例化 AccessToken 对象 // $accessToken->setToken($token); // 传入 access token 的值 // $app->setAccessToken($accessToken); // 给应用对象传入实例化的 AccessToken 对象 //=================================================================/ return $app; }); } /** * Bootstrap services. * * @return void */ public function boot() { // } public function provides() { return ['WeChatMiniApp']; } }
- 定义 Facade
<?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class WeChatMiniApp extends Facade { protected static function getFacadeAccessor() { return 'WeChatMiniApp'; } }
- 框架配置
app/config.php
'providers' => [ /* * Package Service Providers... */ App\Providers\WeChatMiniAppProvider::class, ],
'aliases' => [ ... 'WeChatMiniApp' => App\Facades\WeChatMiniApp::class, ],
- 使用
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use WeChatMiniApp; use Illuminate\Routing\Controller; class UserController extends Controller { public function store(Request $request) { // 上传图片 $response = WeChatMiniApp::getClient()->request( 'POST', // method 方式 'https://api.weixin.qq.com/shop/img/upload', // 微信小程序 api 接口 // 请求 options 详见 vendor/symfony/http-client-contracts/HttpClientInterface.php // 提交微信的数据主要为 body 或 json 等 [ 'body' => [ 'resp_type' => 1, 'upload_type' => 1, 'img_url' => "https://xxx", ] ] )->toArray(); // // 验证场景值 // $response = WeChatMiniApp::getClient()->request('POST', 'https://api.weixin.qq.com/shop/scene/check', [ // 'json' => [ // 'scene' => $scene // ] // ])->toArray(); } }
通用
<?php use WeChatLib\MiniApp\AccessToken; // use WeChatLib\OfficialAccount\AccessToken; use WeChatLib\MiniApp\Application; // use WeChatLib\OfficialAccount\Application; class UserController { public function store() { $app = new Application(config('wechat.miniapp')); // 实例化一个小程序应用对象 // $app = new \WeChatLib\OfficialAccount\Application(config('wechat.official_account')); // 实例化一个公众号应用对象 //============== 可以设置已有的小程序或公众号 access token ==============/ // $token = "ACCESS_TOKEN"; // $accessToken = new AccessToken($app->getAccount()->getAppId(), $app->getAccount()->getSecret()); // 实例化 AccessToken 对象 // $accessToken->setToken($token); // 传入 access token 的值 // $app->setAccessToken($accessToken); // 给应用对象传入实例化的 AccessToken 对象 //=================================================================/ $response = $app->getClient()->request( 'POST', // method 方式 'https://api.weixin.qq.com/shop/img/upload', // 微信小程序 api 接口 // 请求 options 详见 vendor/symfony/http-client-contracts/HttpClientInterface.php // 提交微信的数据主要为 body 或 json 等 [ 'body' => [ 'resp_type' => 1, 'upload_type' => 1, 'img_url' => "https://xxx", ] ] )->toArray(); // // 验证场景值 // $response = WeChatMiniApp::getClient()->request('POST', 'https://api.weixin.qq.com/shop/scene/check', [ // 'json' => [ // 'scene' => $scene // ] // ])->toArray(); } }
License
MIT