createTransaction method
Future<PaywayCreateTransactionResponse>
createTransaction({
- required PaywayCreateTransaction transaction,
- bool enabledLogger = false,
createTransaction
create a new trasaction
transaction: this information is required
Usage:
var _transaction = PaywayCreateTransaction(
amount: 6.00,
items: [
PaywayTransactionItem(name: "ទំនិញ 1", price: 1, quantity: 1),
PaywayTransactionItem(name: "ទំនិញ 2", price: 2, quantity: 1),
PaywayTransactionItem(name: "ទំនិញ 3", price: 3, quantity: 1),
],
reqTime: service.uniqueReqTime(),
tranId: service.uniqueTranID(),
email: 'support@mylekha.app',
firstname: 'Miss',
lastname: 'My Lekha',
phone: '010464144',
option: PaywayPaymentOption.abapay_deeplink,
shipping: 0.0,
returnUrl: "https://stage.mylekha.app");
var createResponse = await service.createTransaction(transaction: _transaction);
Implementation
Future<PaywayCreateTransactionResponse> createTransaction(
{required PaywayCreateTransaction transaction,
bool enabledLogger = false}) async {
var res = PaywayCreateTransactionResponse(
status: PaywayTransactionStatus.empty());
var _transaction = transaction;
if (![
PaywayPaymentOption.abapay_deeplink,
PaywayPaymentOption.abapay_khqr_deeplink
].contains(transaction.option)) {
_transaction =
_transaction.copyWith(option: PaywayPaymentOption.abapay_deeplink);
}
assert([
PaywayPaymentOption.abapay_deeplink,
PaywayPaymentOption.abapay_khqr_deeplink
].contains(_transaction.option));
final clientService = PaywayClientFormRequestService(merchant: merchant);
Map<String, dynamic> map =
clientService.generateCreateTransactionFormData(_transaction);
var formData = FormData.fromMap(map);
try {
if (helper == null) return PaywayCreateTransactionResponse();
final client = helper!.client;
if (enabledLogger) {
debugPrint(json.encode(map));
client.interceptors.add(dioLoggerInterceptor);
}
Response<String> response = await client
.post("/api/payment-gateway/v1/payments/purchase", data: formData);
var _map = json.decode(response.data!) as Map<String, dynamic>;
res = PaywayCreateTransactionResponse.fromMap(_map);
return res;
} catch (error, stacktrace) {
print("Exception occured: $error stackTrace: $stacktrace");
res = res.copyWith(
description: PaywayClientService.handleResponseError(error));
}
return res;
}