مارک پلاس

تکنولوژی نوین اینترنتی

Laravel Cashier پرداخت‌های آنلاین

دسته‌بندی‌ها

Laravel Cashier پرداخت‌های آنلاین
Laravel Cashier پرداخت‌های آنلاین

Laravel Cashier یک بسته لاراول است که برای مدیریت پرداخت‌های آنلاین و اشتراک‌های ماهانه یا سالانه طراحی شده است. این بسته به‌طور خاص برای استفاده از درگاه‌های پرداخت Stripe و Paddle ساخته شده است و ابزارهای قدرتمندی را برای مدیریت اشتراک‌ها، پرداخت‌های یک‌باره، فاکتورها، و توکن‌های پرداخت فراهم می‌کند.

در این مقاله، نحوه استفاده از Laravel Cashier برای پیاده‌سازی پرداخت‌های آنلاین و مدیریت اشتراک‌ها را بررسی خواهیم کرد.


فصل 1: نصب Laravel Cashier

  1. نصب Cashier با Composer: ابتدا باید بسته Laravel Cashier را نصب کنید. برای این کار، از دستور Composer زیر استفاده کنید:

    bash
    composer require laravel/cashier
  2. انتشار فایل تنظیمات Cashier: پس از نصب، شما می‌توانید فایل‌های تنظیمات Cashier را منتشر کنید:

    bash
    php artisan vendor:publish --provider="Laravel\Cashier\CashierServiceProvider"
  3. تنظیمات پایگاه داده: Cashier برای ذخیره اطلاعات پرداخت و اشتراک‌ها به جداول خاصی نیاز دارد. شما باید مایگریشنی را اجرا کنید تا این جداول در پایگاه داده ایجاد شوند:

    bash
    php artisan migrate

فصل 2: تنظیم Stripe در لاراول

برای استفاده از Stripe (که در اکثر موارد برای پردازش پرداخت‌های آنلاین انتخاب می‌شود)، باید تنظیمات مربوط به آن را انجام دهید.

  1. دریافت کلیدهای API از Stripe: برای استفاده از Stripe، شما باید یک حساب Stripe ایجاد کرده و از داشبورد آن، کلیدهای عمومی و خصوصی خود را دریافت کنید. برای دریافت کلیدها، به Dashboard Stripe رفته و در بخش Developers > API keys آن‌ها را پیدا کنید.

  2. تنظیمات Stripe در .env: سپس باید کلیدهای API خود را در فایل .env اضافه کنید:

    env
    STRIPE_KEY=your_public_key STRIPE_SECRET=your_secret_key
  3. به‌روزرسانی فایل config/cashier.php: فایل تنظیمات Cashier به‌طور خودکار از .env شما برای تنظیم کلیدها استفاده می‌کند. اگر نیاز به تنظیمات خاص دیگری دارید، می‌توانید این فایل را ویرایش کنید.


فصل 3: اضافه کردن ویژگی‌های پرداخت به مدل User

برای اینکه Cashier بتواند پرداخت‌ها و اشتراک‌ها را مدیریت کند، باید مدل User شما از Billable استفاده کند. این ویژگی به شما این امکان را می‌دهد که اطلاعات مربوط به اشتراک‌ها و پرداخت‌ها را برای هر کاربر ذخیره کنید.

  1. استفاده از Billable در مدل User:

    در مدل User خود (که معمولاً در مسیر app/Models/User.php قرار دارد)، باید از Billable استفاده کنید:

    php
    use Laravel\Cashier\Billable; class User extends Authenticatable { use Billable; }

فصل 4: ایجاد اشتراک و پرداخت‌های آنلاین

برای پردازش پرداخت‌ها و مدیریت اشتراک‌ها، شما باید از متدهای مختلف Cashier در کنترلرها و روت‌ها استفاده کنید.

  1. ایجاد اشتراک (Subscription):

    شما می‌توانید یک اشتراک را برای یک کاربر ثبت کنید. به عنوان مثال، در کنترلر SubscriptionController، متدی برای شروع یک اشتراک ایجاد کنید:

    php
    use Illuminate\Http\Request; use App\Models\User; class SubscriptionController extends Controller { public function create(Request $request) { $user = $request->user(); // اعتبارسنجی داده‌های ورودی $request->validate([ 'payment_method' => 'required', ]); // اضافه کردن روش پرداخت به کاربر $user->createOrUpdateStripeCustomer(); // تغییر به اشتراک مشخص (مثلاً "monthly") $user->newSubscription('default', 'price_id')->create($request->payment_method); return response()->json(['message' => 'Subscription created successfully']); } }

    در اینجا:

    • createOrUpdateStripeCustomer روش پرداخت را به کاربر اضافه می‌کند.

    • newSubscription اشتراکی جدید را ایجاد می‌کند و اشتراک را به پلن مورد نظر (مانند price_id) متصل می‌کند.

  2. پرداخت برای محصول یک‌باره (One-time Payment):

    علاوه بر اشتراک‌های ماهانه یا سالانه، شما می‌توانید پرداخت‌های یک‌باره را نیز مدیریت کنید. برای این کار، از متد charge استفاده کنید:

    php
    $user->charge(1000, $paymentMethod); // 1000 به معنای 10.00 دلار است
  3. ایجاد فاکتور:

    برای مشاهده فاکتورها و پرداخت‌ها، می‌توانید از متد invoices استفاده کنید:

    php
    $user->invoices();

    این متد فاکتورها را برای کاربر بازمی‌گرداند.


فصل 5: مدیریت اشتراک‌ها

  1. لیست کردن اشتراک‌های کاربر:

    برای نمایش اشتراک‌های فعال یک کاربر، می‌توانید از متد subscriptions استفاده کنید:

    php
    $subscriptions = $user->subscriptions;
  2. لغو اشتراک:

    برای لغو اشتراک، از متد cancelSubscription استفاده کنید:

    php
    $user->subscription('default')->cancel();
  3. تجدید اشتراک:

    برای تجدید اشتراک یک کاربر، می‌توانید از متد resume استفاده کنید:

    php
    $user->subscription('default')->resume();
  4. ارتقاء یا کاهش سطح اشتراک:

    برای ارتقاء یا کاهش سطح اشتراک، می‌توانید از متد swap استفاده کنید:

    php
    $user->subscription('default')->swap('new_plan_id');

فصل 6: دریافت وب‌هوک‌ها (Webhooks)

وب‌هوک‌ها به شما این امکان را می‌دهند که به تغییرات در وضعیت اشتراک‌ها، پرداخت‌ها، و تراکنش‌ها در Stripe یا Paddle واکنش نشان دهید.

  1. تنظیم وب‌هوک در Stripe:

    برای دریافت وب‌هوک‌ها از Stripe، باید یک روت در برنامه لاراول خود ایجاد کنید تا Stripe تغییرات مربوط به پرداخت‌ها را به آن ارسال کند.

    در فایل routes/web.php یک روت جدید برای دریافت وب‌هوک‌ها اضافه کنید:

    php
    Route::post('/webhook/stripe', 'WebhookController@handleStripe');
  2. کنترلر برای پردازش وب‌هوک‌ها:

    سپس باید در کنترلر WebhookController متدی برای پردازش وب‌هوک‌ها اضافه کنید:

    php
    use Stripe\Stripe; use Stripe\Webhook; use Illuminate\Http\Request; class WebhookController extends Controller { public function handleStripe(Request $request) { $payload = $request->getContent(); $sigHeader = $request->header('Stripe-Signature'); $endpointSecret = 'your_stripe_endpoint_secret'; try { $event = Webhook::constructEvent($payload, $sigHeader, $endpointSecret); // پردازش رویدادها } catch (\Exception $e) { return response()->json(['error' => 'Webhook signature verification failed'], 400); } // پاسخ موفقیت‌آمیز به Stripe return response()->json(['status' => 'success']); } }

نتیجه‌گیری

با استفاده از Laravel Cashier، شما می‌توانید به راحتی سیستم پرداخت آنلاین و مدیریت اشتراک‌ها را در برنامه خود پیاده‌سازی کنید. این بسته ابزارهای قدرتمندی برای مدیریت اشتراک‌ها، فاکتورها، پرداخت‌های یک‌باره و وب‌هوک‌ها فراهم می‌کند و می‌تواند به شما کمک کند که فرآیندهای پرداخت را به‌صورت ساده و مؤثر در پروژه‌های لاراول خود پیاده‌سازی کنید.

محتوای مرتبط

پست‌های مرتبط