initiatePayment method

Future<void> initiatePayment({
  1. required WebViewController controller,
  2. required String price,
  3. required MerchantDetails merchantDetails,
})

Implementation

Future<void> initiatePayment(
    {required WebViewController controller,
    required String price,
    required MerchantDetails merchantDetails}) async {
  try {
    var uuid = Uuid();
    String transactionRefNo = uuid.v4();
    final transactionReferenceNumber = transactionRefNo;

    var data = {
      'HS_ChannelId': '1001',
      'HS_IsRedirectionRequest': '0',
      'HS_MerchantHash': merchantDetails.merchantHash,
      'HS_MerchantId': merchantDetails.merchantId,
      'HS_MerchantPassword': merchantDetails.merchantPass,
      'HS_MerchantUsername': merchantDetails.merchantUserName,
      'HS_ReturnURL': merchantDetails.returnUrl,
      'HS_StoreId': merchantDetails.storeId,
      'HS_TransactionReferenceNumber': transactionReferenceNumber,
      '__RequestVerificationToken': '',
    };

    final requestHash = _getHashString(
        data, merchantDetails.firstKey, merchantDetails.secondKey);
    data['HS_RequestHash'] = requestHash;

    final response = await http.post(
      Uri.parse(BapgConstants.bapgBaseUrl + BapgConstants.bapgEndpoint),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(data),
    );

    if (response.statusCode == 200) {
      final responseData = jsonDecode(response.body);

      if (responseData['success'] == 'true') {
        final prevDataString = data.map((key, value) {
          final stringValue = value.toString();
          return MapEntry(key, stringValue);
        });
        _loadWebView(
            responseData: responseData,
            prevData: prevDataString,
            controller: controller,
            price: price,
            key1: merchantDetails.firstKey,
            key2: merchantDetails.secondKey);
      } else {
        if (kDebugMode) {
          print('HTTP Error: ${response.statusCode}, ${response.body}');
        }
      }
    }
  } catch (e) {
    if (kDebugMode) {
      print('Error: $e');
    }
  }
}