create method

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

Create payment link (standard or with advanced options)

@param params - Check doc for required params. Accepts RazorpayPaymentLinkCreateRequestBody or models representing advanced options.

Implementation

Future<Response<RazorpayPaymentLink>> create({
  required dynamic params, // Use dynamic for flexibility
  void Function(RazorpayApiException?, Response<RazorpayPaymentLink>?)?
      callback,
}) async {
  const url = BASE_URL;
  Map<String, dynamic> requestData;

  // Basic type checking - expand if needed for advanced options
  if (params is RazorpayPaymentLinkCreateRequestBody) {
    requestData = params.toJson();
  }
  // Add checks for advanced option types here if models are defined
  // else if (params is RazorpayTransferPaymentOption) { ... }
  else {
    // Assuming dynamic params is already a map for advanced options
    // This might need better handling based on how advanced options are modeled.
    if (params is Map<String, dynamic>) {
      requestData = params;
    } else {
      throw ArgumentError(
        'Invalid type for params. Expected a RequestBody or Map.',
      );
    }
  }

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