pay method

Future<String?> pay({
  1. QosicCountry? country,
  2. required QosicNetwork network,
  3. required String phoneNumber,
  4. required String amount,
})

Compute a simple ussd payment with Qos

On success return a String which is the id of the related payment

Implementation

Future<String?> pay({
  QosicCountry? country,
  required QosicNetwork network,
  required String phoneNumber,
  required String amount,
}) async {
  final currentContry = country ?? getCountryFromNumber(phoneNumber);

  final baseUrl =
      currentContry == QosicCountry.benin ? Endpoints.bjUrl : Endpoints.tgUrl;

  String? transactionReference;

  try {
    await dio.post(
      baseUrl + Endpoints.requestPayment,
      data: {
        'msisdn': phoneNumber,
        'amount': amount,
        'transref': makeID(10),
        'clientid': network == QosicNetwork.mtn ? mtnKey : moovKey
      },
    ).then((value) {
      transactionReference = value.data['transref'] as String;
    });
  } on DioError catch (e) {
    if (enableLog) {
      print(
          'An error occured on [pay]: ${e.response!.data['responsemsg'] as String}');
    }
    throw QosicException(
      'An error occured on [pay]',
      responseMsg: e.response!.data['responsemsg'] as String,
      data: e,
    );
  }

  return transactionReference;
}