UzPay πŸ‡ΊπŸ‡Ώ πŸ’³

UzPay bu O'zbekistonda faoliyat olib boradigan to'lov tizimlari orqali OSON to'lov qilish imkonini beradigan Flutter paketidir.

Taqdimot

uzpay_banner

Xususiyatlari

  • To'lovlarni ichki va tashqi brauzer orqali ochish

  • Ichki brauzer "header" qismidagi yozuv va rangni sizning ilovangizga moslashtirish

  • Tashqi brauzerga shaxsiy menyu bo'limini qo'shish

  • πŸ†• QR kod yaratish - To'lov havolalarini QR kod sifatida yaratish

  • πŸ†• Logo bilan QR kod - QR kod markaziga logo qo'shish imkoniyati

  • πŸ†• Logo fon rangi va padding - Logo uchun kvadrat fon va bo'shliq sozlamalari

  • πŸ†• To'lov havolalarini olish - Maxsus UI yoki veb integratsiya uchun

  • Hozirda mavjud to'lov tizimlari:

    • Click - (CLICK BUTTON - orqali) - DOCS
    • Payme - (GET - so'rovida chek yuborish orqali) - DOCS
  • Qo'shilishi re'jada turganlari:

    • Uzcard
    • Oson
    • Paynet
    • Upay

Boshlash

Flutter loyihangizga paket nomini qo'shing:

dependencies:
  uzpay: ^x.y.z

Ushbu komandani yurgizing:

flutter pub get

Batafsil, bu yerda o'qing dokumentatsiya.

Ishlatish namunasi

Dart kodingizga paketni import qiling:

import 'package:uzpay/uzpay.dart';

Asosiy UzPay klasimizda uchta statik metod bor:

UzPay.doPayment(...);           // Brauzer orqali to'lov
UzPay.generatePaymentQR(...);   // QR kod yaratish
UzPay.generatePaymentLink(...); // To'lov havolasini olish

Uning ishlatilish tartibi quyidagicha:

///Avvaliga parametrlarni belgilab olamiz
var paymentParams = Params(
    paymeParams: PaymeParams(
    transactionParam: TRANS_ID,
    merchantId: PAYME_MERCHANT_ID,

     // Quyidagilar ixtiyoriy parametrlar
     accountObject: 'userId', // Agar o'zgargan bo'lsa
     headerColor: Colors.indigo, // Header rangi
     headerTitle: "Payme tizimi orqali to'lash"), // Header yozuvi
     
     clickParams: ClickParams(
     transactionParam: TRANS_ID,
     merchantId: CLICK_MERCHANT_ID,
     serviceId: CLICK_SERVICE_ID,
     merchantUserId: CLICK_MERCHANT_USER_ID,
     
     // Quyidagilar ixtiyoriy parametrlar
     headerColor: Colors.blue, // Header rangi
     headerTitle: "Click tizimi orqali to'lash"), // Header yozuvi
     );
     
/// Tashqi brauzer orqali to'lov chekini ochish
 UzPay.doPayment(context,
     amount: 5000, // To'lov summasi
     paymentSystem: PaymentSystem.Payme,
     paymentParams: paymentParams,
     browserType: BrowserType.External,
     
     ///browserType: BrowserType.ExternalOrDeepLink (For deeplink)

     // Quyida ixtiyoriy parametr
     externalBrowserMenuItem: ChromeSafariBrowserMenuItem(
         id: 1,
         label: 'Dasturchi haqida',
         action: (url, title) {
         launchCustomUrl('https://flutterdev.uz/men-haqimda/'); }));

Yangi metodlar: QR kod va havola yaratish πŸ†•

QR kod yaratish

QR kod yaratish uchun generatePaymentQR metodidan foydalaning:

import 'dart:typed_data';

// Click uchun QR kod yaratish
final clickParams = ClickParams(
  serviceId: 'YOUR_SERVICE_ID',
  merchantId: 'YOUR_MERCHANT_ID',
  merchantUserId: 'YOUR_MERCHANT_USER_ID',
  transactionParam: 'ORDER_123456',
);

final params = Params(clickParams: clickParams);

try {
  final Uint8List qrBytes = await UzPay.generatePaymentQR(
    amount: 50000.0, // 50,000 so'm
    paymentSystem: PaymentSystem.Click,
    paymentParams: params,
  );

  // QR kodni UI da ko'rsatish
  Image.memory(qrBytes);
} catch (e) {
  print('QR kod yaratishda xatolik: $e');
}

Logo bilan QR kod yaratish πŸ†•

QR kod markaziga logo qo'shish uchun logoImage parametridan foydalaning:

// Logo rasmini yuklash (PNG, JPG formatida)
final Uint8List logoBytes = await rootBundle.load('assets/logo.png')
    .then((data) => data.buffer.asUint8List());

// Logo bilan QR kod yaratish
final Uint8List qrBytes = await UzPay.generatePaymentQR(
  amount: 50000.0,
  paymentSystem: PaymentSystem.Click,
  paymentParams: params,
  logoImage: logoBytes,              // Logo rasmi (ixtiyoriy)
  logoSize: 80.0,                   // Logo o'lchami (ixtiyoriy, standart: 60.0)
  logoBackgroundColor: Colors.white, // Logo fon rangi (ixtiyoriy)
  logoPadding: 12.0,                // Logo atrofidagi bo'shliq (ixtiyoriy, standart: 8.0)
);

Logo parametrlari:

  • logoImage: Logo rasmi (Uint8List formatida, PNG/JPG)
  • logoSize: Logo o'lchami (standart: 60.0)
  • logoBackgroundColor: Logo uchun fon rangi (ixtiyoriy)
  • logoPadding: Logo atrofidagi bo'shliq (standart: 8.0)
  • logoBackgroundRadius: Logo fon burchaklarini yumaloqlash (standart: 0.0 - kvadrat)

Logo fon rangi va padding misollari:

// Yumaloq burchakli oq fonli logo (yuqori sifat)
final qrBytes = await UzPay.generatePaymentQR(
  // ... boshqa parametrlar
  logoImage: logoBytes,
  logoSize: 80.0,
  logoBackgroundColor: Colors.white,
  logoPadding: 16.0,
  logoBackgroundRadius: 12.0, // Yumaloq burchaklar
);

// Kvadrat fonli logo
final qrBytes = await UzPay.generatePaymentQR(
  // ... boshqa parametrlar
  logoImage: logoBytes,
  logoSize: 80.0,
  logoBackgroundColor: Colors.white,
  logoPadding: 16.0,
  logoBackgroundRadius: 0.0, // Kvadrat (standart)
);

// Fonsiz logo (faqat padding bilan)
final qrBytes = await UzPay.generatePaymentQR(
  // ... boshqa parametrlar
  logoImage: logoBytes,
  logoSize: 80.0,
  logoPadding: 12.0, // Fon rangi berilmagan, faqat padding
);

// Oddiy logo (fon va padding yo'q)
final qrBytes = await UzPay.generatePaymentQR(
  // ... boshqa parametrlar
  logoImage: logoBytes,
  logoSize: 80.0,
);

Yuqori sifatli logo uchun tavsiyalar:

  • Yuqori piksellik rasm ishlatish (kamida 200x200 piksel)
  • PNG format ishlatish (shaffoflik uchun)
  • Oddiy dizayn (QR kod o'qilishini ta'minlash uchun)
  • Yetarli kontrast (fon rangi bilan)
  • Yumaloq burchaklar (zamonaviy ko'rinish uchun)

To'lov havolasini olish

To'lov havolasini olish uchun generatePaymentLink metodidan foydalaning:

// Payme uchun havola yaratish
final paymeParams = PaymeParams(
  merchantId: 'YOUR_PAYME_MERCHANT_ID',
  transactionParam: 'ORDER_123456',
);

final params = Params(paymeParams: paymeParams);

try {
  final String paymentUrl = await UzPay.generatePaymentLink(
    amount: 25000.0, // 25,000 so'm
    paymentSystem: PaymentSystem.Payme,
    paymentParams: params,
  );

  print('To\'lov havolasi: $paymentUrl');
  // Havolani ulashish yoki boshqa maqsadlarda ishlatish
} catch (e) {
  print('Havola yaratishda xatolik: $e');
}

Foydalanish holatlari

1. Maxsus UI yaratish:

// QR kod yaratib, maxsus dialog da ko'rsatish
final qrBytes = await UzPay.generatePaymentQR(/* parametrlar */);
showDialog(
  context: context,
  builder: (context) => AlertDialog(
    title: Text('To\'lov uchun skanerlang'),
    content: Image.memory(qrBytes),
  ),
);

2. QR kodni ulashish:

// QR kodni fayl sifatida saqlash yoki ulashish
final qrBytes = await UzPay.generatePaymentQR(/* parametrlar */);
// Platform-specific ulashish mexanizmlari orqali ulashish

3. Veb integratsiya:

// To'lov havolasini veb ilovalar uchun yaratish
final paymentUrl = await UzPay.generatePaymentLink(/* parametrlar */);
// Veb ilovalar yoki deep linking da ishlatish

Enumlar:

enum PaymentSystem { Click, Payme, PaymeTest }
enum BrowserType { External, Internal, ExternalOrDeepLink, InternalOrDeeplink }

Eslatma: Agar to'lov summasi Payme kabi tiyinlar bilan kiritilsa, jarayon hisobga olingan, faqat aktual summani kiritasiz, masalan 5000 so'm => amount: 5000

Savol va takliflar bo'lsa, tortinmang: https://allmylinks.com/mamasodikov