ترقية وتخفيض الاشتراكات باستخدام Laravel و stripe-php
ترقية وتخفيض الاشتراكات هي ميزة شائعة في التطبيقات التي تقدم خدمات قائمة على الاشتراك. في هذا الدليل، سنتعلم كيفية تنفيذ هذه الوظيفة في تطبيق Laravel باستخدام Stripe PHP SDK.
يفترض هذا الدليل أن لديك فهماً أساسياً لـ Laravel ولديك حساب Stripe معد. إذا كنت جديداً على Stripe، فكر في مراجعة وثائق Stripe الرسمية قبل المتابعة.
المتطلبات الأساسية
- Laravel مثبت على نظامك.
- حساب Stripe مع مفاتيح API للاختبار.
- حزمة
stripe-phpمثبتة عبر Composer.
إعداد Stripe في Laravel
أولاً، ثبّت مكتبة Stripe PHP باستخدام Composer:
composer require stripe/stripe-phpبعد ذلك، هيّئ مفاتيح Stripe API الخاصة بك. يمكنك تعيينها في ملف .env:
STRIPE_KEY=your_stripe_publishable_key
STRIPE_SECRET=your_stripe_secret_keyثم أضفها إلى ملف config/services.php:
'stripe' => [
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
],استرداد الاشتراك والعناصر
لترقية أو تخفيض اشتراك، تحتاج أولاً إلى استرداد الاشتراك وعناصره:
\Stripe\Stripe::setApiKey(config('services.stripe.secret'));
$subscriptionId = 'sub_XXXXXXXXXXXX';
$subscription = \Stripe\Subscription::retrieve($subscriptionId);
$subscriptionItemId = $subscription->items->data[0]->id;ترقية أو تخفيض الاشتراك
يمكنك تحديث الاشتراك عن طريق تغيير السعر المرتبط بعنصر الاشتراك. تأكد من تحديد id عنصر الاشتراك و price_id الجديد:
$newPriceId = 'price_YYYYYYYYYYYYYY';
$updatedSubscription = \Stripe\Subscription::update($subscriptionId, [
'items' => [
[
'id' => $subscriptionItemId,
'price' => $newPriceId,
],
],
]);هذا يستبدل السعر الحالي بالسعر الجديد. إذا لم تحدد id عنصر الاشتراك، سيضيف Stripe السعر الجديد كعنصر إضافي، مما يؤدي إلى تفعيل كلا السعرين.
التعامل مع الكميات
إذا كان اشتراكك يستخدم كميات، تحتاج إلى الحفاظ على الكمية الموجودة عند التحديث:
$quantity = $subscription->items->data[0]->quantity;
$updatedSubscription = \Stripe\Subscription::update($subscriptionId, [
'items' => [
[
'id' => $subscriptionItemId,
'price' => $newPriceId,
'quantity' => $quantity,
],
],
]);التناسب والفوترة
بشكل افتراضي، يطبق Stripe التناسبات عندما تغير اشتراك العميل. إذا كنت تريد تعطيل التناسبات، يمكنك تعيين معامل proration_behavior إلى none:
$updatedSubscription = \Stripe\Subscription::update($subscriptionId, [
'items' => [
[
'id' => $subscriptionItemId,
'price' => $newPriceId,
],
],
'proration_behavior' => 'none',
]);بدلاً من ذلك، لمعاينة الفاتورة القادمة، يمكنك استخدام:
$upcomingInvoice = \Stripe\Invoice::upcoming([
'customer' => $subscription->customer,
'subscription' => $subscriptionId,
'subscription_items' => [
[
'id' => $subscriptionItemId,
'price' => $newPriceId,
],
],
]);الخلاصة
في هذا الدليل، تعلمنا كيفية ترقية وتخفيض الاشتراكات في تطبيق Laravel باستخدام Stripe PHP SDK. تذكر دائماً اختبار تغييراتك في بيئة اختبار قبل النشر في الإنتاج.
لمزيد من المعلومات، راجع وثائق اشتراكات Stripe.
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.
مقالات ذات صلة

البدء مع Laravel 11: التثبيت والتكوين وهيكل المجلدات
البدء مع Laravel 11: التثبيت والتكوين وهيكل المجلدات

6 أساسيات Laravel 11: الطلبات
تعلم أساسيات التعامل مع طلبات HTTP في Laravel 11. يغطي هذا البرنامج التعليمي طرق وخصائص مختلفة للتفاعل مع الطلبات واسترجاع البيانات منها.

7 أساسيات Laravel 11: الاستجابات
تعلم أساسيات التعامل مع استجابات HTTP في Laravel 11. يغطي هذا البرنامج التعليمي طرق وخصائص مختلفة لإنشاء وإدارة الاستجابات بفعالية.