pluspay_a2a 0.7.0 copy "pluspay_a2a: ^0.7.0" to clipboard
pluspay_a2a: ^0.7.0 copied to clipboard

PlatformAndroid

PlusPay A2A (app-to-app) payment plugin for Android POS devices — start payments, EOD, refunds and transaction queries.

pluspay_a2a #

POS+ (Pluspay) Android uygulaması ile App-to-App (A2A) iletişim kurmak için geliştirilmiş Flutter eklentisi. Bu paket, Flutter uygulamanızdan POS+ uygulamasını başlatarak ödeme, iptal, EFT işlemleri, sipariş ödemeleri, gün sonu raporları ve parametre güncellemeleri yapmanızı sağlar.

Not: Bu paket yalnızca Android platformunu desteklemektedir. iOS desteği bulunmamaktadır.

Kurulum #

Aşağıdaki komutu çalıştırın:

flutter pub add pluspay_a2a

Veya pubspec.yaml dosyanıza elle ekleyip flutter pub get çalıştırın:

dependencies:
  pluspay_a2a: ^0.7.0

Not: Mevcut versiyonları pub.flutter-io.cn/packages/pluspay_a2a sayfasından görebilirsiniz.

Hızlı Başlangıç #

import 'package:pluspay_a2a/pluspay_a2a.dart';

// 1. İstemciyi oluşturun ve başlatın
final pluspay = PPA2AClient();
await pluspay.initialize();

// 2. Ödeme başlatın
try {
  final result = await pluspay.startPayment(
    PPStartPaymentRequestModel.toRequest(
      clientToken: 'YOUR-CLIENT-TOKEN',
      orderCode: 'ORD-001',
      totalAmount: 150.0,
      paymentType: PPPaymentType.POS,
      paymentMethod: PPPaymentMethod.CC,
    ),
  );
  print('Ödeme başarılı: ${result.id}');
} on PPA2AException catch (e) {
  print('Ödeme başarısız: ${e.errorCode} - ${e.message}');
}

// 3. İşiniz bittiğinde kaynakları temizleyin
await pluspay.dispose();

İstemci Metodları #

Tüm metodlar PPA2AClient sınıfı üzerindedir. Her metod başarılı durumda tipli bir response modeli döner, hata durumunda PPA2AException fırlatır.

Metod İstek Modeli Yanıt Modeli Açıklama
startPayment PPStartPaymentRequestModel PPStartPaymentResponseModel Ödeme başlat
cancelPayment PPCancelPaymentRequestModel PPStartPaymentResponseModel Ödeme iptal et
startEftPayment PPEftPaymentRequestModel PPStartPaymentResponseModel EFT POS ödemesi başlat
cancelEftPayment PPEftCancelRequestModel PPStartPaymentResponseModel EFT POS ödemesini iptal et
startOrderPayment PPOrderPaymentRequestModel PPOrderPaymentResponseModel Sipariş ödemesi başlat
startMultiPayment PPMultiPaymentRequest PPMultiPaymentResponseModel Çoklu ödeme başlat
createOrder PPOrderCreateRequest PPOrderCreateResponseModel Ödeme başlatmadan sipariş oluştur
triggerEod PPEodRequestModel PPEodResponseModel Gün sonu tetikle
triggerParameters PPParameterRequestModel PPParametersResponseModel Parametre güncellemesi tetikle
getAvailablePaymentMethods PPAvailablePaymentMethodsRequestModel PPAvailablePaymentMethodsResponseModel Aktif/kullanılabilir ödeme yöntemlerini sorgula

İstek Modelleri #

Her istek modeli, düz ve kullanışlı bir API sunan toRequest factory constructor'ına sahiptir. İlgili alanları doğrudan geçirirsiniz; model dahili header + data yapısını sizin için oluşturur.

Ödeme Başlat #

PPStartPaymentRequestModel.toRequest(
  clientToken: 'YOUR-CLIENT-TOKEN',
  orderCode: 'ORD-001',
  totalAmount: 100.0,
  paymentType: PPPaymentType.POS,
  paymentMethod: PPPaymentMethod.CC,
  installment: 3,               // opsiyonel
  isPartial: false,              // opsiyonel, varsayılan: false
  partialType: null,             // opsiyonel
  products: [],                  // opsiyonel
  billingInformation: null,      // opsiyonel
);

Ödeme İptal #

PPCancelPaymentRequestModel.toRequest(
  clientToken: 'YOUR-CLIENT-TOKEN',
  orderCode: 'ORD-001',
  transactionId: 'TX-123',
  note: 'Müşteri iptali talep etti', // opsiyonel
);

EFT Ödeme #

PPEftPaymentRequestModel.toRequest(
  clientToken: 'YOUR-CLIENT-TOKEN',
  totalAmount: 250.0,
  paymentType: PPPaymentType.POS,
  paymentMethod: PPPaymentMethod.CC,
  transactionId: 'EFT-001',
  taxRate: 18,
  installment: null, // opsiyonel
);

EFT İptal #

PPEftCancelRequestModel.toRequest(
  clientToken: 'YOUR-CLIENT-TOKEN',
  transactionId: 'EFT-001',
  totalAmount: 250.0,
);

Sipariş Ödemesi #

PPOrderPaymentRequestModel.toRequest(
  clientToken: 'YOUR-CLIENT-TOKEN',
  orderCode: 'ORD-001',
);

Gün Sonu (EOD) #

PPEodRequestModel.toRequest(
  clientToken: 'YOUR-CLIENT-TOKEN',
  isAll: false,
  types: [PPEodType.POS, PPEodType.MULTINET],
);

Parametre Yükleme #

PPParameterRequestModel.toRequest(
  clientToken: 'YOUR-CLIENT-TOKEN',
  isAll: true,
  types: null,
);

Mevcut Ödeme Yöntemleri #

POS+ üzerinde o an aktif/kullanılabilir ödeme tiplerini ve yöntemlerini sorgular. Ekstra parametre gerektirmez.

PPAvailablePaymentMethodsRequestModel.toRequest();

Sipariş Oluşturma (Order Create) #

Ödeme başlatmadan yalnızca sipariş oluşturur. Oluşturulan sipariş daha sonra aynı orderCode ile startOrderPayment üzerinden tahsil edilebilir. orderCode POS+ üzerinde zaten kayıtlıysa sipariş güncellenir.

PPOrderCreateRequest.toRequest(
  orderCode: 'ORD-001',
  orderDate: DateTime.now(),
  products: [
    ProductModel(
      id: 1,
      sku: 'SKU-001',
      title: 'Ürün 1',
      price: 100.0,
      quantity: 1,
      taxRate: 10,
      unit: PPQtyEnums.ADET,
      vatInclude: true,
      productType: PPProductTypeEnum.PHYSICALLY,
      discountValue: 0,
    ),
  ],
  currency: PPCurrencyType.TRY,                // opsiyonel, varsayılan: TRY
  deliveryType: PPDeliveryTypeEnum.CASH_ORDER, // opsiyonel, varsayılan: CASH_ORDER
  discountAmount: 0,                           // opsiyonel, varsayılan: 0
  billingInformation: null,                    // opsiyonel
  installment: null,                           // opsiyonel
  groupCode: null,                             // opsiyonel
  note: null,                                  // opsiyonel
);

Yanıt PPOrderCreateResponseModel (PPMultiPaymentResponseModel ile aynı sipariş detayı yapısı) döner.

Çoklu Ödeme (Multi Payment) #

PPMultiPaymentRequest.toRequest(
  orderCode: 'ORD-001',
  orderDate: DateTime.now(),
  changePaymentStatus: true,
  products: [
    ProductModel(
      id: 1,
      sku: 'SKU-001',
      title: 'Ürün 1',
      price: 100.0,
      quantity: 1,
      taxRate: 10,
      unit: PPQtyEnums.ADET,
      vatInclude: true,
      productType: PPProductTypeEnum.PHYSICALLY,
      discountValue: 0,
      otvOrani: 0,             // opsiyonel, varsayılan: 0
      konaklamaOrani: 0,       // opsiyonel, varsayılan: 0
    ),
  ],
  transactions: [
    TransactionModel(
      paymentType: PPPaymentType.POS,
      totalAmount: 100.0,
      paymentMethod: PPPaymentMethod.CC,
    ),
  ],
  currency: PPCurrencyType.TRY,           // opsiyonel, varsayılan: TRY
  deliveryType: PPDeliveryTypeEnum.CASH_ORDER, // opsiyonel, varsayılan: CASH_ORDER
  discountAmount: 0,                       // opsiyonel, varsayılan: 0
  billingInformation: null,                // opsiyonel
  installment: null,                       // opsiyonel
  groupCode: null,                         // opsiyonel
  note: null,                              // opsiyonel
  canTryAgain: true,                       // opsiyonel, varsayılan: true
);

Yanıt Modelleri #

PPStartPaymentResponseModel #

startPayment, cancelPayment, startEftPayment ve cancelEftPayment metodları tarafından döndürülür.

Alan Tip Açıklama
id String İşlem ID
orderCode String Sipariş kodu
paymentType PPPaymentType Kullanılan ödeme tipi
paymentMethod PPPaymentMethod Kullanılan ödeme yöntemi
totalAmount double Toplam tutar
totalPaid double? Ödenen tutar
amountDue double? Kalan tutar
isPartial bool Parçalı ödeme olup olmadığı
partialType PPPartialPaymentType? Parçalı ödeme tipi
source String? Kaynak bilgisi
status String? Durum metni
actionStatus bool? İşlem başarı durumu
invoice PPInvoiceModel? Fatura detayları
payment PPPaymentModel? Ödeme detayları (RRN, maskelenmiş kart, slip)
delivery PPDeliveryModel? Teslimat detayları

PPOrderPaymentResponseModel #

startOrderPayment metodu tarafından döndürülür.

Alan Tip Açıklama
grandTotal double Genel toplam
status PPOrderStatusEnum Sipariş durumu
orderCode String Sipariş kodu
totalAmount double Toplam tutar
totalPaid double Ödenen tutar
amountDue double Kalan tutar
results List<PPOrderTransactionResult> İşlem sonuçları

PPEodResponseModel #

triggerEod metodu tarafından döndürülür.

Alan Tip Açıklama
results List<PPEodResponseItem> Tip bazında gün sonu sonuçları

Her PPEodResponseItem; eodType (PPEodType), success (bool) ve opsiyonel errorMessage alanlarını içerir.

PPParametersResponseModel #

triggerParameters metodu tarafından döndürülür.

Alan Tip Açıklama
results List<PPParameterResultModel> Parametre güncelleme sonuçları

Her PPParameterResultModel; type (PPParameterTypes), completed (bool) ve opsiyonel errorMessage alanlarını içerir.

PPAvailablePaymentMethodsResponseModel #

getAvailablePaymentMethods metodu tarafından döndürülür. Liste, oturumun profil/cihaz filtrelerinden geçmiş hâliyle döner — yani "şu an gerçekten yapılabilecek" ödeme yöntemleridir.

Alan Tip Açıklama
paymentTypes List<PPPaymentTypeMethodsModel> Aktif ödeme tipleri

Her PPPaymentTypeMethodsModel:

Alan Tip Açıklama
code PPPaymentType Ödeme tipi
methods List<PPPaymentMethod> O tip için kullanılabilir yöntemler
title String? Görünen ad (opsiyonel)
final res = await pluspay.getAvailablePaymentMethods(
  PPAvailablePaymentMethodsRequestModel.toRequest(),
);
for (final type in res.paymentTypes) {
  print('${type.code} -> ${type.methods}');
}

PPMultiPaymentResponseModel #

startMultiPayment metodu tarafından döndürülür.

Alan Tip Açıklama
id String İşlem ID
orderCode String Sipariş kodu
products List<PPMultiPaymentProduct> Ürün detayları
transactions List<PPMultiPaymentTransaction> İşlem detayları
paymentType PPPaymentType Ödeme tipi
paymentMethod PPPaymentMethod Ödeme yöntemi
status PPOrderStatusEnum Sipariş durumu
totalAmount double Toplam tutar
discountAmount double İndirim tutarı
subTotal double Ara toplam
taxAmount double Vergi tutarı
grandTotal double Genel toplam
totalPaid double Ödenen tutar
amountDue double Kalan tutar
preTotal PPMultiPaymentPreTotal Ön toplam bilgileri
deliveryType PPDeliveryTypeEnum Teslimat tipi
customer PPMultiPaymentCustomer? Müşteri bilgileri

Enum'lar #

PPPaymentType #

POS+ tarafından desteklenen ödeme tipleri.

POS, PAYCELL, HEPSIPAY, ISTANBULCARD, CASH, ONLINE, BANK_TRANSFER, GASTROPAY, CIO_CARD, IWALLET, PAYE, MULTINET, METROPOL, FASTPAY, TICKET, EDENRED, SETCARD, SODEXO, GETIRPAY, TOKENFLEX, YEMEKMATIK, ON_CREDIT, VIRTUAL_POS, CUZDANPLUS

PPPaymentMethod #

POS+ tarafından desteklenen ödeme yöntemleri.

CC, CASH, QR, QR_R, NFC, QUICKCODE, MOBILE, SWIPE, NONE, ONLINE, TRENDYOL, GETIR, YEMEKSEPETI, MIGROSYEMEK

PPEodType #

Gün sonu rapor tipleri.

POS, CASH, BANK_TRANSFER, ONLINE, OTHER, MULTINET, SODEXO, SETCARD, TICKET, METROPOL, PAYE, TOKENFLEX, EDENRED, CUZDANPLUS, IWALLET

PPParameterTypes #

Parametre güncelleme tipleri.

bank, multinet, metropol, paye, iwallet

PPPartialPaymentType #

AMOUNT, PRODUCT

PPOrderStatusEnum #

CANCEL, NOT_RESPONSE, WAITING, SUCCESS

PPDeliveryStatusEnum #

WAITING, PREPREING, READY, ONWAY, COMPLETE, CANCEL

PPDeliveryTypeEnum #

CASH_ORDER, PACKAGE_ORDER, TABLE_ORDER, TAKE_AWAY, TAKE_CLOSE

PPCurrencyType #

TRY, USD, EUR, GBP

PPProductTypeEnum #

PHYSICALLY, VIRTUAL, INFO, MD, DSN, QP, KFO, COMMISSION, HGS

PPQtyEnums #

Miktar birimleri.

ADET, KG, GR, LT, MT, KOLI, PAKET, PORSIYON

PPDiscountTypeEnum #

PERCENTAGE, FIXED_AMOUNT

PPDocumentTypeEnum #

EFATURA, EARSIV, BILGIFISI

PPDocumentStatusEnum #

SUCCESS, CANCEL, FAIL, WAITING, NONE

PPTransactionStatusEnum #

SUCCESS, CANCEL, FAIL, NONE, WAITING, NOT_RESPONSE

PPTransactionTypeEnum #

START, SATIS, CANCEL, REFUND

PPOrderSourceEnum #

POS, WEB, KIOSK

Hata Yönetimi #

POS+ bir hata yanıtı döndürdüğünde (örn. yetersiz bakiye, kullanıcı iptali), istemci PPA2AException fırlatır:

try {
  final result = await pluspay.startPayment(request);
} on PPA2AException catch (e) {
  print(e.errorCode);  // örn. "PP-A2A-006"
  print(e.message);    // örn. "İşlem kullanıcı veya sistem tarafından iptal edildi!"
}

İstemci tarafındaki hatalar için de aynı exception fırlatılır:

Hata Kodu Açıklama
LAUNCH_INTENT_ERROR POS+ uygulaması başlatılamadı
PP-A2A-PARSE Yanıt JSON'ı ayrıştırılamadı
PP-A2A-* POS+ tarafından döndürülen hata kodları

Yaşam Döngüsü #

class _MyPageState extends State<MyPage> {
  final _pluspay = PPA2AClient();

  @override
  void initState() {
    super.initState();
    _pluspay.initialize();
  }

  @override
  void dispose() {
    _pluspay.dispose();
    super.dispose();
  }
}

initialize() diğer tüm metodlardan önce çağrılmalıdır. Uygulamanın paket bilgilerini alır ve POS+ sonuçları için bir broadcast receiver kaydeder. İstemciye artık ihtiyaç kalmadığında receiver'ı temizlemek için dispose() çağrılmalıdır.

Gereksinimler #

  • Yalnızca Android
  • Cihazda POS+ uygulaması yüklü olmalıdır
  • Minimum SDK: 24
0
likes
160
points
85
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

PlusPay A2A (app-to-app) payment plugin for Android POS devices — start payments, EOD, refunds and transaction queries.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

android_intent_plus, flutter, freezed_annotation, intl, plugin_platform_interface

More

Packages that depend on pluspay_a2a

Packages that implement pluspay_a2a