WeChat SDK EasyWeChat for 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"
اختياري، قم بإضافة اسم مستعار
'الأسماء المستعارة' => [// ...'EasyWeChat' => OvertrueLaravelWeChatEasyWeChat::class, ]،
تدعم كل وحدة بشكل أساسي حسابات متعددة، والإعداد الافتراضي هو default
.
استبعاد المسارات المتعلقة بـ WeChat في البرنامج الوسيط AppHttpMiddlewareVerifyCsrfToken
، مثل:
محمي $باستثناء = [// ..."wechat"، ];
بالنسبة إلى Laravel 11.x، يمكنك استخدام التابع $middleware->validateCsrfTokens
في bootstrap/app.php
:
->withMiddleware(function (Middleware $middleware) {$middleware->validateCsrfTokens(except: [// ...'wechat', ]); })
لنكتب مثالاً باستخدام تلقي الرسائل العادية كمثال.
التوجيه:
الطريق::any('/wechat', 'WeChatController@serve');
ملحوظة: يجب أن يكون
Route::any
، لأن خادم WeChat يستخدمGET
عند المصادقة، وPOST
عند تلقي رسائل المستخدم!
ثم قم بإنشاء وحدة التحكم WeChatController
:
<?phpnamespace AppHttpControllers;use Log;class WeChatController يوسع وحدة التحكم {تخدم الوظيفة العامة () { Log::info('وصل الطلب.'); $server = app('easywechat.official_account')->getServer();$server->with(function($message){return "مرحبًا بك في المتابعة!"; });return $server->serve(); } }
عند استخدام البرامج الوسيطة، ما عليك سوى ملء oauth.callback
في app/config/easywechat.php
بشكل عرضي (لأنه لم تعد هناك حاجة إليه).
أضف البرامج الوسيطة للتوجيه في 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; // نفس الجلسة('easywechat.oauth_user.default') $event->isNewSession; أول مرة) $event->account; // الحساب المستخدم حاليًا بواسطة البرنامج الوسيط، المطابق لاسم عنصر التكوين في ملف التكوين
يمكنك استخدام OvertrueLaravelWeChatTraitsHandleOpenPlatformServerEvents
المدمج لإكمال عملية التحقق من جانب الخادم للنظام الأساسي المفتوح بسرعة:
الطرق/web.php:
Route::any('/open-platform/server', OpenPlatformController::class);
التطبيق/http/Controllers/OpenPlatformController.php:
<?phpnamespace AppHttpControllers;استخدام OvertrueLaravelWeChatTraitsHandleOpenPlatformServerEvents;فئة OpenPlatformController توسع وحدة التحكم {استخدام HandleOpenPlatformServerEvents؛ الوظيفة العامة __invoc(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 - من البداية إلى الإصدار"
معهد ماساتشوستس للتكنولوجيا