uploadStakeholderDoc method

Future<Response<RazorpayStakeholderDocuments>> uploadStakeholderDoc({
  1. required String accountId,
  2. required String stakeholderId,
  3. required String documentType,
  4. required MultipartFile file,
  5. Map<String, dynamic>? otherParams,
  6. void callback(
    1. RazorpayApiException?,
    2. Response<RazorpayStakeholderDocuments>?
    )?,
})

Upload stakeholder documents

@param accountId - The unique identifier of the account. @param stakeholderId - The unique identifier of the stakeholder. @param documentType - The type of document being uploaded. @param file - The file to upload (use dio's MultipartFile). @param params - Additional parameters like notes.

Implementation

Future<Response<RazorpayStakeholderDocuments>> uploadStakeholderDoc({
  required String accountId,
  required String stakeholderId,
  required String documentType,
  required MultipartFile file,
  Map<String, dynamic>? otherParams,
  void Function(
    RazorpayApiException?,
    Response<RazorpayStakeholderDocuments>?,
  )? callback,
}) async {
  if (accountId.isEmpty) {
    throw ArgumentError('accountId is required');
  }
  if (stakeholderId.isEmpty) {
    throw ArgumentError('stakeholderId is required');
  }
  if (documentType.isEmpty) {
    throw ArgumentError('documentType is required');
  }

  final formDataMap = {
    'document_type': documentType,
    'file': file,
    ...?otherParams,
  };

  return api.postFormData<RazorpayStakeholderDocuments>(
    {
      'version': 'v2',
      'url': '$BASE_URL/$accountId/stakeholders/$stakeholderId/documents',
    },
    formData: FormData.fromMap(formDataMap),
    fromJsonFactory: RazorpayStakeholderDocuments.fromJson,
    callback: callback,
  );
}