create method

Future<Response<RazorpayVirtualAccount>> create({
  1. required dynamic params,
  2. void callback(
    1. RazorpayApiException?,
    2. Response<RazorpayVirtualAccount>?
    )?,
})

Create a virtual account (standard or TPV)

@param params - Accepts RazorpayVirtualAccountCreateRequestBody or RazorpayVirtualAccountTPVCreateRequestBody.

Implementation

Future<Response<RazorpayVirtualAccount>> create({
  required dynamic params, // Use dynamic for union type
  void Function(RazorpayApiException?, Response<RazorpayVirtualAccount>?)?
      callback,
}) async {
  Map<String, dynamic> requestData;
  if (params is RazorpayVirtualAccountCreateRequestBody ||
      params is RazorpayVirtualAccountTPVCreateRequestBody) {
    requestData = params is RazorpayVirtualAccountCreateRequestBody
        ? params.toJson()
        : params is RazorpayVirtualAccountTPVCreateRequestBody
            ? params.toJson()
            : {};
  } else {
    throw ArgumentError('Invalid params type for Virtual Account creation.');
  }

  return api.post<RazorpayVirtualAccount>(
    {
      'url': BASE_URL,
      'data': requestData,
    },
    fromJsonFactory: RazorpayVirtualAccount.fromJson,
    callback: callback,
  );
}