isvSale method

Future<TransactionResponse> isvSale({
  1. String? merchantKey,
  2. required String clientTransactionId,
  3. required double amount,
  4. double? tipAmount,
  5. bool showReceipt = true,
  6. bool showTransactionResult = true,
  7. bool showRating = true,
  8. Map<String, dynamic>? saleToAcquirerData,
  9. double? isvAmount,
  10. required String isvClientId,
  11. required String isvClientSecret,
  12. String? isvMerchantId,
  13. int isvCurrencyCode = 978,
  14. String isvSourceCode = 'Default',
  15. String? isvCustomerTrns,
  16. int? isvMerchantSourceCode,
  17. String? isvClientTransactionId,
})

Make a sale with the ISV schema

same as sale request but with ISV partner program params (https://developer.vivawallet.com/isv-partner-program/)

Implementation

Future<TransactionResponse> isvSale({
  String? merchantKey,
  required String clientTransactionId,
  required double amount,
  double? tipAmount,
  bool showReceipt = true,
  bool showTransactionResult = true,
  bool showRating = true,
  Map<String, dynamic>? saleToAcquirerData,
  double? isvAmount,
  required String isvClientId,
  required String isvClientSecret,
  String? isvMerchantId,
  int isvCurrencyCode = 978,
  String isvSourceCode = 'Default',
  String? isvCustomerTrns,
  int? isvMerchantSourceCode,
  String? isvClientTransactionId,
}) async {
  final Map<String, dynamic> params = <String, dynamic>{
    'merchantKey': merchantKey ?? 'deprecated',
    'clientTransactionId': clientTransactionId,
    'amount': ParamUtils.doubleToAmount(amount),
    'tipAmount':
        tipAmount != null ? ParamUtils.doubleToAmount(tipAmount) : null,
    'show_receipt': showReceipt,
    'show_transaction_result': showTransactionResult,
    'show_rating': showRating,
    'saleToAcquirerData': saleToAcquirerData != null
        ? base64Encode(
            const Utf8Encoder().convert(saleToAcquirerData.toString()),
          )
        : null,
    'ISV_amount': ParamUtils.doubleToAmount(isvAmount ?? 0.0),
    'ISV_clientId': isvClientId,
    'ISV_clientSecret': isvClientSecret,
    'ISV_merchantId': isvMerchantId,
    'ISV_currencyCode': isvCurrencyCode,
    'ISV_sourceCode': isvSourceCode,
    'ISV_customerTrns': isvCustomerTrns,
    'ISV_merchantSourceCode': isvMerchantSourceCode,
    'ISV_clientTransactionId': isvClientTransactionId,
  };

  final data = await _invokePosMethod('saleRequest', params);

  return TransactionResponse.create(_callbackScheme, data);
}