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 utiliseGETlors de l'authentification etPOSTlors 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