createSessionId method

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

Implementation

Future<String> createSessionId({
  required String merchantTransactionId,
  required int transactionAmount,
  required String merchantId,
  required String clientId,
   String? successRedirectionUrl,
   String? failedRedirectionUrl,
  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": failedRedirectionUrl ?? "https://hamropay.com/success",
    "failedRedirectionUrl": successRedirectionUrl ?? "https://hamropay.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");
  }
}