openRazorpay method

dynamic openRazorpay({
  1. required String contactNumber,
  2. required String emailId,
  3. required String razorpayKey,
  4. required double amount,
  5. required String userName,
  6. String? description,
  7. String? colorCode,
  8. required dynamic successListener(
    1. UniPaymentResponse
    ),
  9. required dynamic failureListener(
    1. UniPaymentResponse
    ),
})

Method for open razorpay and listening payment events

Implementation

openRazorpay({
  required String contactNumber,
  required String emailId,
  required String razorpayKey,
  required double amount,
  required String userName,
  String? description,
  String? colorCode,
  required Function(UniPaymentResponse) successListener,
  required Function(UniPaymentResponse) failureListener,
}) {
  Map<String, Object> options = {
    'key': razorpayKey,
    'amount': amount * 100,
    'name': userName,
    'prefill': {'contact': contactNumber, 'email': emailId},
    'description': description ?? '',
    'theme': {
      'color': colorCode ?? '#0CA72F',
    },
    'send_sms_hash': true,
  };
  try {
    /// event listeners for successs payment
    _razorpay!.on(
      Razorpay.EVENT_PAYMENT_SUCCESS,
      (res) {
        onSuccess(res, successListener);
      },
    );

    /// event listeners for failure payment
    _razorpay!.on(
      Razorpay.EVENT_PAYMENT_ERROR,
      (res) {
        onFailure(res, failureListener);
      },
    );

    /// initialize razrorpay
    _razorpay!.open(options);
  } catch (e) {
    /// return if something went wrong
    debugPrint(
      failureListener(
        UniPaymentResponse(
          e.toString(),
          false,
          "Something went wrong!",
        ),
      ),
    );
  }
}