refund method

  1. @override
Future<GetnetRefundResponse> refund({
  1. required GetnetRefundPayload refundPayload,
})
override

Implementation

@override
Future<GetnetRefundResponse> refund({required GetnetRefundPayload refundPayload}) async {
  try {
    final refund = refundPayload.toJson();
    final response = await methodChannel.invokeMethod<Map>('refund', refund);
    if (response is Map) {
      if ((response['code'] == GetnetStatusDeeplink.SUCCESS.name || response['code'] == GetnetStatusDeeplink.PENDING.name) && response['data'] is Map) {
        if (response['code'] == GetnetStatusDeeplink.SUCCESS.name) {
          final jsonData = response['data'];
          return GetnetRefundResponse.fromJson(json: jsonData);
        } else {
          return GetnetRefundResponse(
            result: response['result'] ?? '5',
            resultDetails: 'Operação ainda pendente cancelada pelo lojista, realize consulta do status',
            amount: refundPayload.amount,
            callerId: response['callerId'] ?? '',
            receiptAlreadyPrinted: false,
            type: '',
            inputType: '',
            refundOriginTerminal: response['refundOriginTerminal'] ?? '',
          );
        }
      } else {
        throw GetnetRefundException(message: response['message']);
      }
    } else {
      throw GetnetRefundException(message: 'invalid response');
    }
  } on GetnetRefundException catch (e) {
    throw GetnetRefundException(message: e.message);
  } on PlatformException catch (e) {
    throw GetnetRefundException(message: e.message ?? 'PlatformException');
  } catch (e) {
    throw GetnetRefundException(message: "Status payment Error: $e");
  }
}