WeChat SDK w7corp/easywechat을 기반으로 하는 Laravel용 EasyWeChat
Lumen은 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
작곡가는 overtrue/laravel-wechat:^7.2를 요구합니다.
구성 파일을 생성합니다:
php artisan Vendor:publish --provider="OvertrueLaravelWeChatServiceProvider"
선택사항, 별칭 추가
'별칭' => [// ...'EasyWeChat' => OvertrueLaravelWeChatEasyWeChat::class, ],
각 모듈은 기본적으로 여러 계정을 지원하며 기본값은 default
입니다.
미들웨어 AppHttpMiddlewareVerifyCsrfToken
에서 다음과 같은 WeChat 관련 경로를 제외합니다.
보호된 $제외 = [// ...'위챗', ];
Laravel 11.x의 경우 bootstrap/app.php
에서 $middleware->validateCsrfTokens
메소드를 사용할 수 있습니다:
->withMiddleware(function (미들웨어 $middleware) {$middleware->validateCsrfTokens(제외: [// ...'wechat', ]); })
일반적인 메시지 수신을 예로 들어보겠습니다.
라우팅:
경로::any('/wechat', 'WeChatController@serve');
참고: WeChat 서버는 인증 시
GET
사용하고 사용자 메시지 수신 시POST
사용하므로Route::any
여야 합니다!
그런 다음 WeChatController
컨트롤러를 만듭니다.
<?phpnamespace AppHttpControllers;use Log;class WeChatController는 컨트롤러를 확장합니다. {공용 함수 서브() { Log::info('요청이 도착했습니다.'); $server = app('easywechat.official_account')->getServer();$server->with(function($message){return "overtrue를 팔로우하신 것을 환영합니다!"; });return $server->serve(); } }
미들웨어를 사용할 때 app/config/easywechat.php
의 oauth.callback
아무렇게나 입력하세요(더 이상 필요하지 않기 때문입니다).
app/Http/Kernel.php
에 라우팅 미들웨어를 추가합니다.
protected $routeMiddleware = [// ...'easywechat.oauth' => OvertrueLaravelWeChatMiddlewareOAuthAuthenticate::class, ];
경로에 미들웨어를 추가합니다.
//...Route::group(['middleware' => ['web', 'easywechat.oauth']], function () { Route::get('/user', function () {$user = session('easywechat.oauth_user.default'); // 승인된 사용자 정보 가져오기 dd($user); }); });
미들웨어는 'easywechat.oauth:default'
라는 구성 이름 지정을 지원합니다. 물론 미들웨어 매개변수에서 현재 scopes
지정할 수도 있습니다.
Route::group(['middleware' => ['easywechat.oauth:snsapi_userinfo']], function () { // ...});// 또는 계정 및 범위를 지정합니다:Route::group([ ' 미들웨어' => ['easywechat.oauth:default,snsapi_userinfo']], function () { // ...});
위 경로는 /user
WeChat 인증을 요구한다고 정의하므로 이 경로의 콜백이나 컨트롤러의 해당 메소드에서 session('easywechat.oauth_user.default')
에서 인증된 사용자 정보를 얻을 수 있습니다.
때로는 로컬 개발이 완료된 후 실제로 WeChat 인증 프로세스를 온라인으로 진행하고 싶을 때도 있습니다. 이렇게 하면 개발 비용이 절감됩니다. 그런 다음 다음 두 단계를 수행해야 합니다.
시뮬레이션 인증 정보 준비:
IlluminateSupportArr 사용; OvertrueSocialiteUser를 SocialiteUser로 사용;$user = new SocialiteUser(['id' => 'mock-openid','name' => 'overtrue','nickname' => 'overtrue','avatar' => ' http://example.com/avatars/overtrue.png','email' => null,'original' => [],'provider' => '위챗', ]);
범위가
snsapi_userinfo
인 경우 위 필드를 최대한 완벽하게 구성해야 합니다. 물론 모드가snsapi_base
인 경우openid
만 필요합니다.
세션에 데이터 쓰기:
참고: OAuth 미들웨어를 호출하기 전에 작성해야 합니다. 예를 들어 이를 수행하기 위해 전역 미들웨어를 생성하고 개발 환경에서만 활성화할 수 있습니다.
session(['easywechat.oauth_user.default' => $user]); // 마찬가지로 'default'는 귀하의 설정에 해당하는 다른 구성 이름으로 대체될 수 있습니다.
해당 이벤트를 수신하고 이벤트 발생 후 해당 작업을 수행할 수 있습니다.
OAuth 웹 인증: OvertrueLaravelWeChatEventsWeChatUserAuthorized
// 이 이벤트에는 다음과 같은 속성이 있습니다. $event->user; // session('easywechat.oauth_user.default')과 동일 $event->isNewSession; // 새 세션인지(해당 세션이 생성된 경우 true) 첫 번째) $event->account; //현재 미들웨어가 사용하는 계정으로, 구성 파일의 구성 항목 이름에 해당합니다.
내장된 OvertrueLaravelWeChatTraitsHandleOpenPlatformServerEvents
사용하여 개방형 플랫폼의 서버 측 검증을 신속하게 완료할 수 있습니다.
경로/web.php:
Route::any('/open-platform/server', OpenPlatformController::class);
앱/Http/컨트롤러/OpenPlatformController.php:
<?phpnamespace AppHttpControllers;use OvertrueLaravelWeChatTraitsHandleOpenPlatformServerEvents;class OpenPlatformController는 컨트롤러를 확장합니다. {HandleOpenPlatformServerEvents 사용; 공용 함수 __invoke(Application $application): PsrHttpMessageResponseInterface{$app = app('easywechat.open_platform') return $this->handleServerEvents($app); } }
팁: 기본적으로 WeChat 오픈 플랫폼의 푸시 콘텐츠를 기반으로 다음 이벤트가 트리거됩니다. 해당 이벤트를 듣고 처리할 수 있습니다.
승인자가 성공적으로 승인되었습니다: OvertrueLaravelWeChatEventsOpenPlatformAuthorized
승인자 업데이트 승인: OvertrueLaravelWeChatEventsOpenPlatformAuthorizeUpdated
승인 당사자가 승인을 취소함: OvertrueLaravelWeChatEventsOpenPlatformUnauthorized
개방형 플랫폼은 verifyTicket을 푸시합니다: OvertrueLaravelWeChatEventsOpenPlatformVerifyTicketRefreshed
// 이벤트에는 다음 속성이 있습니다. $message = $event->payload // 플랫폼 이벤트 알림 콘텐츠 열기
구성 후 http://example.com/open-platform/server
오픈 플랫폼 타사 애플리케이션에서 설정한 인증 이벤트 수신 URL입니다.
SDK에 대한 자세한 사용법은 https://www.easywechat.com을 참조하세요.
내 프로젝트가 마음에 들고 지원하고 싶다면 여기를 클릭하세요.
이 프로젝트와 기타 오픈 소스 프로젝트에 참여할 수 있도록 친절하게 라이선스를 제공해 주신 Jetbrains에 진심으로 감사드립니다.
처음부터 PHP 확장 패키지를 구축하는 방법이 궁금하십니까?
확장 개발 경험을 공유할 실습 과정인 "PHP Extension Pack Practical Tutorial - 시작하기부터 릴리스까지"에 주목하시기 바랍니다.
MIT