createPayment method
Future<Either<NetworkError, DefaultNetworkResponse<DigitalpayeResponsePayment> > >
createPayment({
- required DigitalpayePaymentProcess payment,
- 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,
));
}
}