load method

Future<WalletLoad> load({
  1. String? walletId,
  2. String? externalUserId,
  3. required num amount,
  4. required String paymentId,
  5. String provider = 'manual',
  6. String? details,
})

POST /api/digital-wallet/loads

Implementation

Future<WalletLoad> load({
  String? walletId,
  String? externalUserId,
  required num amount,
  required String paymentId,
  String provider = 'manual',
  String? details,
}) async {
  if (amount <= 0) {
    throw WalletApiError('amount must be > 0', statusCode: 400);
  }
  if (paymentId.trim().isEmpty) {
    throw WalletApiError('paymentId is required', statusCode: 400);
  }
  final hasWallet = walletId != null && walletId.isNotEmpty;
  final hasExternal = externalUserId != null && externalUserId.isNotEmpty;
  if (!hasWallet && !hasExternal) {
    throw WalletApiError(
      'walletId or externalUserId is required',
      statusCode: 400,
    );
  }

  final data = await _http.request(
    'POST',
    PaymentsEndpoints.loads,
    auth: WalletAuthMode.payments,
    body: {
      'amount': amount,
      'paymentId': paymentId,
      'provider': provider,
      'walletId': ?walletId,
      'externalUserId': ?externalUserId,
      'details': ?details,
    },
  );
  return WalletLoad.fromJson(data!);
}