createTransaction method

Future<PaywayCreateTransactionResponse> createTransaction({
  1. required PaywayCreateTransaction transaction,
  2. 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;
}