WeChat SDK EasyWeChat สำหรับ Laravel อิงจาก w7corp/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: เผยแพร่ --provider = "OvertrueLaravelWeChatServiceProvider"
ไม่บังคับ ให้เพิ่มนามแฝง
'aliases' => [// ...'EasyWeChat' => OvertrueLaravelWeChatEasyWeChat::class, -
โดยพื้นฐานแล้วแต่ละโมดูลรองรับหลายบัญชี และค่าเริ่มต้นคือ default
ไม่รวมเส้นทางที่เกี่ยวข้องกับ WeChat ในมิดเดิลแวร์ AppHttpMiddlewareVerifyCsrfToken
เช่น:
ป้องกัน $ยกเว้น = [// ...'wechat', -
สำหรับ Laravel 11.x คุณสามารถใช้เมธอด $middleware->validateCsrfTokens
ใน bootstrap/app.php
:
->withMiddleware(ฟังก์ชั่น (มิดเดิลแวร์ $มิดเดิลแวร์) {$middleware->validateCsrfTokens(ยกเว้น: [// ...'wechat', - -
เรามาเขียนตัวอย่างโดยใช้การรับข้อความธรรมดาเป็นตัวอย่าง
เส้นทาง:
เส้นทาง::any('/wechat', 'WeChatController@serve');
หมายเหตุ: จะต้องเป็น
Route::any
เนื่องจากเซิร์ฟเวอร์ WeChat ใช้GET
เมื่อตรวจสอบสิทธิ์ และPOST
เมื่อได้รับข้อความผู้ใช้!
จากนั้นสร้างคอนโทรลเลอร์ WeChatController
:
<?phpnamespace AppHttpControllers;ใช้ Log;คลาส WeChatController ขยายตัวควบคุม {บริการฟังก์ชั่นสาธารณะ() - Log::info('request arrival.'); $server = app('easywechat.official_account')->getServer();$server->with(function($message){return "ยินดีต้อนรับสู่การติดตามเกินความจริง!"; }); return $server->serve(); - -
เมื่อใช้มิดเดิลแวร์ เพียงกรอก oauth.callback
ใน app/config/easywechat.php
แบบสบายๆ (เพราะไม่จำเป็นอีกต่อไป)
เพิ่มมิดเดิลแวร์การกำหนดเส้นทางใน app/Http/Kernel.php
:
ป้องกัน $routeMiddleware = [// ...'easywechat.oauth' => OvertrueLaravelWeChatMiddlewareOAuthAuthenticate::class, -
เพิ่มมิดเดิลแวร์ให้กับเส้นทาง:
//...เส้นทาง::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' => [],'ผู้ให้บริการ' => 'วีแชท', -
ช่องด้านบนควรได้รับการกำหนดค่าให้ครบถ้วนที่สุดเมื่อขอบเขตเป็น
snsapi_userinfo
แน่นอนว่าหากโหมดของคุณเป็นเพียงsnsapi_base
คุณจะต้องใช้openid
เท่านั้น
เขียนข้อมูลไปยังเซสชัน:
หมายเหตุ: อย่าลืมเขียนก่อนที่จะเรียกใช้มิดเดิลแวร์ OAuth ตัวอย่างเช่น คุณสามารถสร้างมิดเดิลแวร์ส่วนกลางเพื่อทำสิ่งนี้ให้สำเร็จและเปิดใช้งานได้เฉพาะในสภาพแวดล้อมการพัฒนาเท่านั้น
session(['easywechat.oauth_user.default' => $user]); // ในทำนองเดียวกัน `default` สามารถแทนที่ด้วยชื่อการกำหนดค่าอื่นที่ตรงกับของคุณได้
คุณสามารถฟังเหตุการณ์ที่เกี่ยวข้องและดำเนินการที่เกี่ยวข้องหลังจากเหตุการณ์เกิดขึ้นได้
การอนุญาตเว็บ OAuth: OvertrueLaravelWeChatEventsWeChatUserAuthorized
// เหตุการณ์นี้มีคุณลักษณะดังต่อไปนี้ $event->user; // เหมือนกับ session('easywechat.oauth_user.default') $event->isNewSession; // เป็นเซสชันใหม่ (จริงหรือไม่เมื่อสร้างเซสชันสำหรับ ครั้งแรก) $event->account; //บัญชีที่ใช้โดยมิดเดิลแวร์ซึ่งสอดคล้องกับชื่อรายการการกำหนดค่าในไฟล์การกำหนดค่า
คุณสามารถใช้ OvertrueLaravelWeChatTraitsHandleOpenPlatformServerEvents
ในตัวเพื่อทำการตรวจสอบฝั่งเซิร์ฟเวอร์ของแพลตฟอร์มแบบเปิดได้อย่างรวดเร็ว:
เส้นทาง/web.php:
เส้นทาง::any('/open-platform/server', OpenPlatformController::class);
แอพ/Http/คอนโทรลเลอร์/OpenPlatformController.php:
<?phpnamespace AppHttpControllers; ใช้ OvertrueLaravelWeChatTraitsHandleOpenPlatformServerEvents; คลาส OpenPlatformController ขยายคอนโทรลเลอร์ {use HandleOpenPlatformServerEvents; public function __inrigg(Application $application): PsrHttpMessageResponseInterface{$app = app('easywechat.open_platform'); ส่งคืน $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 - ตั้งแต่เริ่มต้นจนถึงเผยแพร่"
เอ็มไอที