createPayment method

  1. @override
Future<Either<NetworkError, DefaultNetworkResponse<DigitalpayeResponsePayment>>> createPayment({
  1. required DigitalpayePaymentProcess payment,
  2. required String token,
})
override

Implementation

@override
Future<
    Either<NetworkError,
        DefaultNetworkResponse<DigitalpayeResponsePayment>>> createPayment(
    {required DigitalpayePaymentProcess payment,
    required String token}) async {
  try {
    final url = config.isSandbox
        ? Constantes.apiUrlSandbox
        : '${Constantes.apiUrlProd}/${Constantes.versionApp}/collecte/mobile-money';
    final response = await http.post(Uri.parse(url),
        headers: {
          'Authorization': 'Bearer $token',
          'Content-Type': 'application/json',
        },
        body: jsonEncode({
          "code_country": payment.codeCountry.value,
          "operator": payment.operator,
          "currency": payment.currency.value,
          "url_success": payment.urlSuccess ?? "",
          "url_error": payment.urlError ?? "",
          "customer_id": payment.customerId,
          "amount": payment.amount,
          "name_user": payment.nameUser ?? "",
          "email": payment.emailUser ?? "",
          "transaction_id": payment.transactionId,
          "code_otp": payment.otpCode,
        }));
    if (response.statusCode == 200 ||
        response.statusCode == 201 ||
        response.statusCode == 202) {
      final data = jsonDecode(response.body);
      return Right(
        DefaultNetworkResponse(
          codeStatus: data["code_status"],
          status: data["status"],
          data: DigitalpayeResponsePayment.fromJson(data["data"]),
        ),
      );
    } else if (response.statusCode == 504) {
      final data = jsonDecode(response.body);
      return Left(
        NetworkError(
          codeStatus: data["code_status"],
          status: data["status"],
          message: EnumResponseNetwork.from(value: data["message"])
              .localizableValue,
          data: DigitalpayeResponsePayment.fromJson(data["data"]),
        ),
      );
    } else {
      final data = jsonDecode(response.body);
      return Left(
        NetworkError(
          codeStatus: data["code_status"],
          status: data["status"],
          message: EnumResponseNetwork.from(value: data["message"])
              .localizableValue,
        ),
      );
    }
  } catch (e) {
    // Gérer les erreurs
    return Left(NetworkError(
      message: EnumResponseNetwork.from(value: e.toString()).localizableValue,
    ));
  }
}