initiatePayment method
Future<void>
initiatePayment({
- required WebViewController controller,
- required String price,
- 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');
}
}
}