create method
Future<Response<RazorpayOrder> >
create({
- required dynamic params,
- void callback(
- RazorpayApiException?,
- 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,
);
}