requestPaymentLink method

Future<PaymentResponse> requestPaymentLink({
  1. required PaymentMethods paymentMethod,
  2. required num amount,
  3. MoreDetails? moreDetails,
  4. PayerDetails? payerDetails,
  5. void onError(
    1. String message
    )?,
})

Request Payment Link

Implementation

Future<PaymentResponse> requestPaymentLink({
  required PaymentMethods paymentMethod,
  required num amount,
  MoreDetails? moreDetails,
  PayerDetails? payerDetails,
  void Function(String message)? onError,
}) async {
  /// transaction ID
  String txnID = _getRandom();

  /// transaction Header
  String txnHDR = _getRandom();

  /// hashMac
  String hashMac = await _generateHashMac(amount: amount, transactionID: txnID, transactionHDR: txnHDR);

  /// request
  InitiatePaymentRequest request = InitiatePaymentRequest(
    dbRqst: DbRequestType.paymentEcommerce.value,
    doAppinfo: _appInfo,
    doMerchDtl: _merchantDetails,
    doMoreDtl: moreDetails ?? MoreDetails(),
    doPyrDtl: payerDetails ?? PayerDetails(),
    doTxnDtl: [TransactionDetails(subMerchUid: _merchantDetails.merchantID, txnAmt: amount)],
    doTxnHdr: TransactionHeader(merchTxnUid: txnID, payFor: "ECom", payMethod: paymentMethod.value, txnHdr: txnHDR, hashMac: hashMac),
  );

  /// Api
  InitiatePaymentResponse res = await _bedeApi.requestPayment(request: request);

  /// On Error
  if (onError != null && res.errorMessage != "Success") {
    onError(res.errorMessage);
  }

  return PaymentResponse(paymentLink: res.payUrl, hashMac: hashMac, transactionId: txnID);
}