initiatePayment method

dynamic initiatePayment({
  1. required dynamic transactionId,
  2. required String transactionAmount,
  3. required String currency,
  4. required String transactionCallBackUrl,
  5. required dynamic context,
  6. required String xApiKey,
  7. required String productName,
  8. required String description,
  9. required dynamic merchandUserName,
  10. required dynamic merchandPassword,
  11. required dynamic mode,
  12. required Function actionAfterProccess,
})

Implementation

initiatePayment({
  required transactionId,
  required String transactionAmount,
  required String currency,
  required String transactionCallBackUrl,
  required context,
  required String xApiKey,
  required String productName,
  required String description,
  required merchandUserName,
  required merchandPassword,
  required mode,
  required Function actionAfterProccess,
}) async {
  try {
    progressHub("Please wait", context);
    var data = jsonEncode({
      "currency": currency,
      "transaction_id": transactionId,
      "total_amount": transactionAmount,
      "return_url": "https://my.website.com/payunit/return"
    });
    var jsonResponse;
    var url = Uri.parse("${constant.baseUrl}/gateway/initialize");
    var response = await http.post(url,
        body: data, headers: getGlobalHeader(xApiKey, "$merchandUserName:$merchandPassword", mode));
    jsonResponse = json.decode(response.body);
    if (response.statusCode == 200 || response.statusCode == 201) {
      print("This is /initiatePayment response : $jsonResponse");
      if (jsonResponse != null) {
        List result = await getAllProviders(
          context: context,
          transactionId: jsonResponse['data']['t_id'],
          transactionAmount: jsonResponse['data']['t_sum'],
          transactionCallBackUrl: jsonResponse['data']['t_url'],
          merchandPassword: merchandPassword,
          merchandUserName: merchandUserName,
          xApiKey: xApiKey,
          mode: mode,
          actionAfterProccess: actionAfterProccess,
        );
        Navigator.of(context).pop();

        return {"result": result, "transaction_id": transactionId};
      }
    } else {
      Navigator.of(context).pop();
      print("Response : $jsonResponse");
      if (jsonResponse['message'] == null) {
        constant.makeToast(jsonResponse['error'], context, Colors.red);
      } else {
        constant.makeToast(jsonResponse['message'], context, Colors.red);
      }
      actionAfterProccess(transactionId, "FAILED");
      return false;
    }
  } catch (e) {
    print("Error : $e");
    Navigator.of(context).pop();
    showInfoDialog(context, "Something went wrong , please try again or later");
    actionAfterProccess(transactionId, "FAILED");

    return false;
  }
}