Mirpay to'lov tizimi uchun Laravel integratsiyasi.

Installs: 23

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/turgunboyevuz/mirpay

v1.0.3 2025-07-05 18:24 UTC

This package is not auto-updated.

Last update: 2026-01-03 21:43:26 UTC


README

Laravel uchun Mirpay to‘lov tizimini qulay integratsiya qiluvchi SDK.

Packagist Version License Laravel

📦 O‘rnatish

composer require turgunboyevuz/mirpay

Paketni to‘liq o‘rnatish uchun quyidagi artisan komandani ishga tushiring:

php artisan mirpay:install

Bu quyidagilarni avtomatik bajaraydi:

  • routes/mirpay.php faylini yaratadi
  • config/mirpay.php faylini yaratadi
  • app/Payment/after_success.php va after_fail.php fayllarni yaratadi

Mirpay Tranzaksiyalari uchun tableni yarating

php artisan migrate

⚙️ Konfiguratsiya

.env faylingizga quyidagilarni yozing:

MIRPAY_MERCHANT_ID=your-merchant-id
MIRPAY_SECRET_KEY=your-secret-key

config/mirpay.php fayli quyidagicha ko‘rinadi:

return [
    'merchant_id' => env('MIRPAY_MERCHANT_ID', ''),
    'secret_key'  => env('MIRPAY_SECRET_KEY', ''),

    'transaction_model' => TurgunboyevUz\Mirpay\Models\Transaction::class,

    // Agar true bo‘lsa, paketdagi routes/mirpay.php fayli avtomatik ulanadi
    'routes' => true,
];

🧾 Marshrutlar (routes)

Agar routes konfiguratsiyasi true bo‘lsa, routes/mirpay.php fayli avtomatik yuklanadi.

Siz bu faylga Mirpay webhook routelarini joylashtirishingiz mumkin:

⚠️ Diqqat bilan o'qing

Mirpay to'lov tizimidan foydalanishning 2 ta turi bor:

  • Webhook (Mirpay to'lov statusini sizga yuboradi)
  • Long polling (Mirpaydan to'lov statusini so'rab olasiz).

Ushbu paketdan foydalanishda yuqoridagilardan faqat bittasidan foydalaning, aks holda to'lovni qabul qilish jarayonida turli xatolar kelib chiqishi mumkin.

use Illuminate\Support\Facades\Route;
use TurgunboyevUz\Mirpay\Controllers\MirpayController;

// webhook usuli
// quyidagi linklarni Mirpay Kassangizda ro'yxatdan o'tkazing
// https://localhost/api/mirpay/success
// https://localhost/api/mirpay/fail

Route::post('/mirpay/success', [MirpayController::class, 'success']);

Route::post('/mirpay/fail', [MirpayController::class, 'fail']);

💳 Foydalanish

Trait orqali modelga Mirpay to‘lovlarini ulash:

use TurgunboyevUz\Mirpay\Traits\HasMirpayTransactions;

class User extends Model
{
    use HasMirpayTransactions;
}

➕ To‘lov yaratish

$user = auth()->user();

$transaction = $user->createMirpayTransaction(25000, 'Pro subscription');

return redirect($transaction->redirect_url);

✅ To‘lovni tekshirish (Polling)

use TurgunboyevUz\Mirpay\Enums\MirpayState;

$user = auth()->user();
$status = $user->checkoutMirpayTransaction();

if ($status === MirpayState::PENDING) {
    // jarayonda
}

if ($status === MirpayState::SUCCESS) {
    // muvaffaqiyatli to‘lov
    // status "muvaffaqiyatli" bo'lsa avtomatik after_success.php chaqiriladi
}

if ($status === MirpayState::FAILED) {
    // bekor qilingan
    // status "bekor qilingan" bo'lsa avtomatik after_fail.php chaqiriladi
}

📁 Callback fayllar

Paket o‘rnatilgach, quyidagi fayllar yaratiladi:

  • app/Payment/after_success.php
  • app/Payment/after_fail.php

Ushbu fayllar $model nomli o‘zgaruvchiga ega bo‘lib, siz xohlagancha kod yozishingiz mumkin:

<?php
/** @var TurgunboyevUz\Mirpay\Models\MirpayTransaction $transaction */

// after_success.php
// to'lov bajarilgandan keyin model bilan bajariladigan ishlar

// Tranzaksiya ichidagi ma'lumotlar $transaction o'zgaruvchisida keladi

$model->update(['paid' => true]);
\Log::info("To‘lov muvaffaqiyatli: User #{$model->id}");
<?php
/** @var TurgunboyevUz\Mirpay\Models\MirpayTransaction $transaction */

// after_fail.php
// to'lov bekor qilingandan keyin model bilan bajariladigan ishlar

// Tranzaksiya ichidagi ma'lumotlar $transaction o'zgaruvchisida keladi

\Log::warning("To‘lov bekor qilindi: User #{$model->id}");

⚙️ Model overriding (MirpayTransaction)

Siz mirpay_transactions tableini o'zgartirishingiz mumkin (faqat default columnlarga tegmagan holatda):

Schema::create('mirpay_transactions', function (Blueprint $table) {
    $table->id();
    $table->nullableMorphs('payable'); // tegilmaydi
    $table->string('transaction_id'); // tegilmaydi
    $table->bigInteger('amount'); // tegilmaydi
    $table->integer('state'); // tegilmaydi

    $table->foreignId('user')->constrained();
    $table->timestamps();
});

Shuningdek o'z logikangizni yaratish uchun MirpayTransaction modelini qayta yozishingiz mumkin:

<?php
// app/Models/Transaction.php
namespace App\Models;

use TurgunboyevUz\Mirpay\Models\MirpayTransaction;

class Transaction extends MirpayTransaction
{
    public function user()
    {
        $this->belongsTo(User::class);
    }
}

Barcha o'zgarishlarni amalga oshirib bo'lgach config/mirpay.php faylida yangi modelni ko'rsatib o'ting:

<?php

return [
    //...
    'transaction_model' => App\Users\Transaction::class
];

🔐 Minimal talablar

PHP Laravel
^8.1 ^10.0, ^11.0, ^12.0

✅ Qo‘llab-quvvatlanadigan Laravel versiyalari

Laravel Qo‘llab-quvvatlanadi
10.x
11.x
12.x

📚 Muallif

📄 Litsenziya

MIT — LICENSE fayliga qarang.