createSessionId method

Future<String> createSessionId({
  1. required String merchantTransactionId,
  2. required int transactionAmount,
  3. required String merchantId,
  4. required String clientId,
  5. required String clientSecret,
  6. required String clientApiKey,
  7. List<Product>? products,
  8. String? phoneNumber,
})

Implementation

Future<String> createSessionId({
  required String merchantTransactionId,
  required int transactionAmount,
  required String merchantId,
  required String clientId,
  required String clientSecret,
  required String clientApiKey,
  List<Product>? products,
  String? phoneNumber,
}) async {
  String message =
      "$merchantTransactionId,$transactionAmount,$merchantId,$clientId,$clientApiKey";

  String signature = Generator.generateSignatureOrToken(
    message,
    clientSecret,
  );
  final requestBody = {
    "merchantTxnId": merchantTransactionId,
    "merchantId": merchantId,
    "transactionAmount": transactionAmount.toString(),
    "successRedirectionUrl": "https://yourdomain.com/success",
    "failedRedirectionUrl": "https://yourdomain.com/failure",
    "productList": products,
    "phone_number": phoneNumber,
  };
  try {
    final request = await _dioService.postRequest(
      endpoint: ApiConstants.CREATE_SESSION_ID_URL,
      data: requestBody,
      Options: Options(
        headers: {
          "Signature": signature,
          "Client-Id": clientId,
          "Client-API-Key": clientApiKey,
        },
      ),
    );

    return request.fold((failure) => throw Exception(failure.message), (
      responseData,
    ) async {
      return responseData["sessionId"];
    });
  } catch (e) {
    print("Exception occurred: $e");
    throw Exception("Something went wrong");
  }
}