create method

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

Creates an order (standard, transfer, or authorization)

@param params - Check doc for required params. Accepts RazorpayOrderCreateRequestBody, RazorpayTransferOrderCreateRequestBody, or RazorpayAuthorizationOrderCreateRequestBody.

Implementation

Future<Response<RazorpayOrder>> create({
  required dynamic params, // Use dynamic to accept multiple request types
  void Function(RazorpayApiException?, Response<RazorpayOrder>?)? callback,
}) async {
  Map<String, dynamic> requestData;
  if (params is RazorpayOrderCreateRequestBody ||
      params is RazorpayTransferOrderCreateRequestBody ||
      params is RazorpayAuthorizationOrderCreateRequestBody) {
    requestData = params is RazorpayOrderCreateRequestBody
        ? params.toJson()
        : params is RazorpayTransferOrderCreateRequestBody
            ? params.toJson()
            : params is RazorpayAuthorizationOrderCreateRequestBody
                ? params.toJson()
                : {};
  } else {
    throw ArgumentError('Invalid params type for order creation.');
  }

  // Ensure currency defaults if not provided
  if (!requestData.containsKey('currency') ||
      requestData['currency'] == null) {
    requestData['currency'] = 'INR';
  }

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