payForItMobile function

Future<Map<String, dynamic>?> payForItMobile(
  1. Map<String, dynamic> data
)

Implementation

Future<Map<String, dynamic>?> payForItMobile(Map<String, dynamic> data) async {
  const String url =
      'https://api.feexpay.me/api/transactions/requesttopay/integration';

  try {
    final response = await http.post(
      Uri.parse(url),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(data),
    );

    final decoded = jsonDecode(response.body);

    if (decoded is Map<String, dynamic>) {
      if (decoded.containsKey('message')) {
        final message = decoded['message']?.toString();

        if (message == 'Network Unavailable' ||
            message == 'NETWORK_UNAVAILABLE') {
          decoded['message'] =
              'Réseau indisponible. Veuillez réessayer plus tard.';
        } else if (message == 'Invalid phone number') {
          decoded['message'] = 'Numéro de téléphone invalide.';
        } else if (message == 'Insufficient funds') {
          decoded['message'] = 'Fonds insuffisants sur votre compte.';
        } else if (message == 'Shop not found') {
          decoded['message'] = 'Boutique introuvable.';
        }

        return decoded;
      }

      return decoded;
    } else {
      return {
        'message': 'Réponse inattendue du serveur.',
      };
    }
  } catch (e) {
    return {
      'message':
          'Impossible de se connecter au serveur. Vérifiez votre connexion internet.',
    };
  }
}