SDK WeChat EasyWeChat pour Laravel, basé sur w7corp/easywechat
Lumen n'est plus pris en charge par défaut à partir de 7.x.
overtrue/laravel-wechat : ^ 7.0 -> Laravel >= 8.0
overtrue/laravel-wechat :^6.0 -> Laravel/Lumen >= 7.0
overtrue/laravel-wechat : ^ 5.1 -> Laravel/Lumen >= 5.1
le compositeur nécessite overtrue/laravel-wechat : ^ 7.2
Créez le fichier de configuration :
Vendeur artisanal php :publish --provider="OvertrueLaravelWeChatServiceProvider"
Facultatif, ajoutez un alias
'aliases' => [// ...'EasyWeChat' => OvertrueLaravelWeChatEasyWeChat::class, ],
Chaque module prend essentiellement en charge plusieurs comptes, et la valeur par défaut est default
.
Excluez les routes liées à WeChat dans le middleware AppHttpMiddlewareVerifyCsrfToken
, telles que :
protégé $sauf = [// ...'wechat', ];
Pour Laravel 11.x, vous pouvez utiliser la méthode $middleware->validateCsrfTokens
dans bootstrap/app.php
:
->withMiddleware(function (Middleware $middleware) {$middleware->validateCsrfTokens(sauf : [// ...'wechat', ]); })
Écrivons un exemple en utilisant la réception de messages ordinaires comme exemple.
routage :
Route::any('/wechat', 'WeChatController@serve');
Remarque : Il doit s'agir
Route::any
, car le serveur WeChat utiliseGET
lors de l'authentification etPOST
lors de la réception des messages utilisateur !
Créez ensuite le contrôleur WeChatController
:
<?phpnamespace AppHttpControllers;use Log;class WeChatController étend le contrôleur {fonction publique servir() { Log::info('demande arrivée.'); $server = app('easywechat.official_account')->getServer();$server->with(function($message){return "Bienvenue pour suivre overtrue !"; });return $server->serve(); } }
Lorsque vous utilisez un middleware, remplissez simplement oauth.callback
dans app/config/easywechat.php
avec désinvolture (car il n'est plus nécessaire).
Ajoutez un middleware de routage dans app/Http/Kernel.php
:
protected $routeMiddleware = [// ...'easywechat.oauth' => OvertrueLaravelWeChatMiddlewareOAuthAuthenticate::class, ];
Ajoutez un middleware à la route :
//...Route::group(['middleware' => ['web', 'easywechat.oauth']], function () { Route::get('/user', function () {$user = session('easywechat.oauth_user.default'); // Obtenir les informations sur l'utilisateur autorisé dd($user); }); });
Le middleware prend en charge la spécification du nom de configuration : 'easywechat.oauth:default'
. Bien entendu, vous pouvez également spécifier les scopes
actuelles dans les paramètres du middleware :
Route::group(['middleware' => ['easywechat.oauth:snsapi_userinfo']], function () { // ...});// Ou spécifiez le compte et les scopes:Route::group([ ' middleware' => ['easywechat.oauth:default,snsapi_userinfo']], function () { // ...});
La route ci-dessus définit que /user
nécessite une autorisation WeChat, donc dans le rappel de cette route ou la méthode correspondante du contrôleur , vous pouvez obtenir les informations sur l'utilisateur autorisé à partir de session('easywechat.oauth_user.default')
.
Parfois, nous souhaitons passer par le processus d'autorisation WeChat en ligne une fois le développement local terminé. Cela réduira nos coûts de développement. Vous devez ensuite suivre les deux étapes suivantes :
Préparez les informations d’autorisation de simulation :
utilisez IlluminateSupportArr; utilisez OvertrueSocialiteUser comme SocialiteUser;$user = new SocialiteUser(['id' => 'mock-openid','name' => 'overtrue','nickname' => 'overtrue','avatar' => ' http://example.com/avatars/overtrue.png','email' => null,'original' => [],'provider' => 'WeChat', ]);
Les champs ci-dessus doivent être configurés aussi complètement que possible lorsque la portée est
snsapi_userinfo
. Bien sûr, si votre mode est uniquementsnsapi_base
, vous n'avez besoin queopenid
.
Écrire des données dans la session :
Remarque : veillez à écrire avant d'appeler le middleware OAuth. Par exemple, vous pouvez créer un middleware global pour ce faire et l'activer uniquement dans l'environnement de développement.
session(['easywechat.oauth_user.default' => $user]); // De même, `default` peut être remplacé par d'autres noms de configuration correspondant au vôtre
Vous pouvez écouter les événements correspondants et effectuer les opérations correspondantes une fois les événements survenus.
Autorisation Web OAuth : OvertrueLaravelWeChatEventsWeChatUserAuthorized
// Cet événement a les attributs suivants $event->user; // Identique à session('easywechat.oauth_user.default') $event->isNewSession; // Est-ce une nouvelle session (vrai lorsque la session est créée pour le première fois) $event->account; //Le compte actuellement utilisé par le middleware, correspondant au nom de l'élément de configuration dans le fichier de configuration
Vous pouvez utiliser l' OvertrueLaravelWeChatTraitsHandleOpenPlatformServerEvents
intégré pour terminer rapidement la vérification côté serveur de la plate-forme ouverte :
routes/web.php :
Route::any('/open-platform/server', OpenPlatformController::class);
app/Http/Controllers/OpenPlatformController.php :
<?phpnamespace AppHttpControllers ; utiliser OvertrueLaravelWeChatTraitsHandleOpenPlatformServerEvents ; la classe OpenPlatformController étend le contrôleur {utilisez HandleOpenPlatformServerEvents ; public function __invoke(Application $application) : PsrHttpMessageResponseInterface{$app = app('easywechat.open_platform'); return $this->handleServerEvents($app); } }
Conseils : Par défaut, les événements suivants seront déclenchés en fonction du contenu push de la plateforme ouverte WeChat. Vous pouvez écouter les événements correspondants et les traiter :
L'autorisateur a autorisé avec succès : OvertrueLaravelWeChatEventsOpenPlatformAuthorized
Autorisation de mise à jour de l'autorisateur : OvertrueLaravelWeChatEventsOpenPlatformAuthorizeUpdated
La partie autorisant annule l’autorisation : OvertrueLaravelWeChatEventsOpenPlatformUnauthorized
La plateforme ouverte pousse VerifyTicket : OvertrueLaravelWeChatEventsOpenPlatformVerifyTicketRefreshed
// L'événement a les attributs suivants $message = $event->payload; // Contenu de notification d'événement de plateforme ouverte
Après la configuration, http://example.com/open-platform/server
est l'URL de réception de l'événement d'autorisation définie par l'application tierce de la plateforme ouverte.
Pour une utilisation plus détaillée du SDK, veuillez vous référer à : https://www.easywechat.com
Si vous aimez mon projet et souhaitez le soutenir, cliquez ici
Un grand merci à Jetbrains pour m'avoir aimablement fourni une licence pour travailler sur ce projet et sur d'autres projets open source.
Vous vous demandez comment créer un package d’extension PHP à partir de zéro ?
Veuillez prêter attention à mon cours pratique, dans lequel je partagerai une expérience de développement d'extensions - "Tutoriel pratique du pack d'extensions PHP - Du démarrage à la sortie"
MIT