makeGlassPayment method

  1. @override
Future<PaymentResponseStatus> makeGlassPayment({
  1. required double amount,
  2. required MyPosCurrency currency,
  3. bool printMerchantReceipt = true,
  4. bool printCustomerReceipt = true,
  5. String? eReceiptReceiver,
  6. String? reference,
})
override

Implementation

@override
Future<PaymentResponseStatus> makeGlassPayment({
  required double amount,
  required MyPosCurrency currency,
  bool printMerchantReceipt = true,
  bool printCustomerReceipt = true,
  String? eReceiptReceiver,
  String? reference,
}) async {
  final Map<String, dynamic> args = {
    'amount': amount,
    'currency': currency.name,
    'printMerchantReceipt': printMerchantReceipt,
    'printCustomerReceipt': printCustomerReceipt,
    'eReceiptReceiver': eReceiptReceiver,
    'reference': reference,
  };
  final res = await methodChannel.invokeMethod('makeGlassPayment', args);
  if (res is Map) {
    final map = Map<String, dynamic>.from(res as Map);
    final approved = map['transaction_approved'] == true;
    if (approved) return PaymentResponseStatus.success;
    // If we have response_code we can treat as declined; otherwise unknown
    if (map.containsKey('response_code')) return PaymentResponseStatus.declined;
    return PaymentResponseStatus.unknown;
  }
  if (res is String) {
    switch (res) {
      case 'SUCCESS':
        return PaymentResponseStatus.success;
      case 'CANCEL':
        return PaymentResponseStatus.cancel;
      case 'ERROR':
        return PaymentResponseStatus.error;
      case 'TIMEOUT':
        return PaymentResponseStatus.timeout;
      case 'DECLINED':
        return PaymentResponseStatus.declined;
      case 'UNKNOWN':
        return PaymentResponseStatus.unknown;
    }
  }
  return PaymentResponseStatus.unknown;
}