refund method

Future<Response<RazorpayRefund>> refund({
  1. required String paymentId,
  2. required dynamic params,
  3. void callback(
    1. RazorpayApiException?,
    2. Response<RazorpayRefund>?
    )?,
})

Create a normal/instant refund or refund with transfer reversal.

@param paymentId - The unique identifier of the payment. @param params - Accepts RazorpayRefundCreateRequestBody or RazorpayRefundPaymentLinkAccountCreateRequestBody.

Implementation

Future<Response<RazorpayRefund>> refund({
  required String paymentId,
  required dynamic params, // Use dynamic for union type
  void Function(RazorpayApiException?, Response<RazorpayRefund>?)? callback,
}) async {
  if (paymentId.isEmpty) {
    throw ArgumentError(ID_REQUIRED_MSG);
  }
  Map<String, dynamic> requestData;
  if (params is RazorpayRefundCreateRequestBody ||
      params is RazorpayRefundPaymentLinkAccountCreateRequestBody) {
    requestData = params is RazorpayRefundCreateRequestBody
        ? params.toJson()
        : params is RazorpayRefundPaymentLinkAccountCreateRequestBody
            ? params.toJson()
            : {};
  } else {
    throw ArgumentError('Invalid params type for refund.');
  }

  return api.post<RazorpayRefund>(
    {
      'url': '$BASE_URL/$paymentId/refund',
      'data': requestData,
    },
    fromJsonFactory: RazorpayRefund.fromJson,
    callback: callback,
  );
}