0% found this document useful (0 votes)
13 views13 pages

HTTPWrapper 24

.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views13 pages

HTTPWrapper 24

.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)

Enric Jimenez <[email protected]>

(sin asunto)
Enric Jimenez <[email protected]> 24 de octubre de 2024, 8:18
Borrador

using System;
using System.Globalization;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using HappyTren.Train.IryoConnector.IryoObjects;
using HappyTren.Train.IryoConnector.Internals.Model.Response;
using HappyTren.Train.IryoConnector.Internals.Model.Request;
using HappyTren.Train.IryoConnector.Internals.Model.Entitys;
using HappyTren.Train.IryoConnector.Internals.Helpers;
using HappyTren.Train.IryoConnector.Internals.Builders.CustomCache.Actions;

namespace HappyTren.Train.IryoConnector.Internals.Connector.HTTPWrapper
{
public class HttpWrapper
{
private static readonly HttpClient _client = new HttpClient
{
Timeout = TimeSpan.FromMinutes(5) // Configuro un timeout de 5 minutos
};

public async Task<JourneySearchRS> SearchAsync(JourneySearchRQ query)


{
try
{
ConfigureHeaders();
query.cfgToken = IryoCredentials.SalesChannel.SalesChannelRS.cfgToken;
var strContent = query.ToJson();
var uri = IryoCredentials.OperEndpoint + "/conecta/availability/search";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "Search", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "Search", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<JourneySearchRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 1/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
throw new Exception($"Error in SearchAsync: {ex.Message}", ex);
}
}

public async Task<CreateBookingRS> CreateBookingAsync(CreateBookingRQ query)


{
try
{
ConfigureHeaders();
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "es-ES");

var strContent = query.ToJson();


var uri = IryoCredentials.OperEndpoint + "/conecta/build/bookings";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "CreateBooking", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "CreateBooking", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<CreateBookingRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in CreateBookingAsync: {ex.Message}", ex);
}
}

public async Task<SearchBookingsRS> SearchBookingsAsync(SearchBookingsRQ query)


{
try
{
ConfigureHeaders();
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "es-ES");

var strContent = query.ToJson();


var uri = IryoCredentials.OperEndpoint + "/conecta/manage/bookings/search";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "SearchBookings", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "SearchBookings", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<SearchBookingsRS>(strResponse);
return resp;

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 2/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in SearchBookingsAsync: {ex.Message}", ex);
}
}

public async Task<ConfirmBookingRS> ConfirmBookingAsync(string bookingNumber)


{
try
{
ConfigureHeaders();

var uri = IryoCredentials.OperEndpoint + "/conecta/manage/bookings/" + bookingNumber + "/confirm";

var message = new HttpRequestMessage(HttpMethod.Post, uri);

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "ConfirmBooking", uri, "");

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "ConfirmBooking", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<ConfirmBookingRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in ConfirmBookingAsync: {ex.Message}", ex);
}
}

public async Task<UpdatePassengerRS> UpdatePassengerAsync(UpdatePassengersRQ query)


{
try
{
ConfigureHeaders();

var result = new UpdatePassengerRS();


foreach (var passenger in query.Passengers)
{
var strContent = passenger.ToJson();
var uri = IryoCredentials.OperEndpoint + "/conecta/manage/bookings/" + query.BookingNumber +
"/passengers/" + passenger.passenger_id;

var message = new HttpRequestMessage(new HttpMethod("PATCH"), uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "UpdatePassenger", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 3/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "UpdatePassenger", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<UpdatePassengerRS>(strResponse);
result = resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}

return result;
}
catch (Exception ex)
{
throw new Exception($"Error in UpdatePassengerAsync: {ex.Message}", ex);
}
}

public async Task<ProcessPaymentRS> ProcessPaymentAsync(ProcessPaymentRQ query)


{
try
{
ConfigureHeaders();

var strContent = query.ToJson();


var uri = IryoCredentials.OperEndpoint + "/conecta/gateway/payments/process";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "ProcessPayment", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "ProcessPayment", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<ProcessPaymentRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in ProcessPaymentAsync: {ex.Message}", ex);
}
}

public async Task<RetrieveBookingRS> RetrieveBookingAsync(string bookingNumber)


{
try
{
ConfigureHeaders();
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "es-ES");

var uri = IryoCredentials.OperEndpoint + "/conecta/manage/bookings/" + bookingNumber;

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 4/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)

var message = new HttpRequestMessage(HttpMethod.Get, uri);

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "RetrieveBooking", uri, "");

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "RetrieveBooking", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<RetrieveBookingRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in RetrieveBookingAsync: {ex.Message}", ex);
}
}

public async Task<CancelBookingRS> CancelBookingAsync(string bookingNumber, bool twoStep)


{
try
{
ConfigureHeaders();

var cancelRQ = new CancelBookingRQ()


{
twoStepsAction = true
};

string strContent = twoStep ? cancelRQ.ToJson() : "";

var uri = IryoCredentials.OperEndpoint + "/conecta/manage/bookings/" + bookingNumber + "/cancel";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "CancelBooking", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "CancelBooking", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<CancelBookingRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in CancelBookingAsync: {ex.Message}", ex);
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 5/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
}

public async Task<RefundMethodsRS> RefundMethodsAsync(string bookingNumber)


{
try
{
ConfigureHeaders();
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "es-ES");

var uri = IryoCredentials.OperEndpoint + "/conecta/gateway/payments/methods?bookingNumber=" +


bookingNumber;

var message = new HttpRequestMessage(HttpMethod.Get, uri);

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "RefundMethods", uri, "");

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "RefundMethods", "", strResponse);

if (response.IsSuccessStatusCode)
{
var methodsArray = SerializeExtension.DeserializeJson<RefundMethod[]>(strResponse);
var resp = new RefundMethodsRS { RefundMethods = methodsArray };
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in RefundMethodsAsync: {ex.Message}", ex);
}
}

public async Task RefundPSPAsync(string bookingNumber)


{
try
{
ConfigureHeaders();

var refundRQ = new RefundPspRQ() { bookingNumber = bookingNumber };

var strContent = refundRQ.ToJson();


var uri = IryoCredentials.OperEndpoint + "/conecta/gateway/refunds/psp";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "Refund", uri, "");

using (HttpResponseMessage response = await _client.SendAsync(message))


{
if (!response.IsSuccessStatusCode)
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {await
response.Content.ReadAsStringAsync()}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in RefundPSPAsync: {ex.Message}", ex);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 6/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
}
}
public async Task<List<Products>> GetProductsAsync()
{
try
{
ConfigureHeaders();
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "es-ES");

var uri = IryoCredentials.OperEndpoint + "/conecta/support/products";

var message = new HttpRequestMessage(HttpMethod.Get, uri);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
if (response.IsSuccessStatusCode)
{
var strResponse = await response.Content.ReadAsStringAsync();
var resp = SerializeExtension.DeserializeJson<IryoProductRS>(strResponse);
return resp.data.ToList();
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {await
response.Content.ReadAsStringAsync()}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in GetProductsAsync: {ex.Message}", ex);
}
}

public async Task<List<T>> GetGenericAsync<T>(string uri)


{
try
{
ConfigureHeaders();
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "es-ES");

var message = new HttpRequestMessage(HttpMethod.Get, IryoCredentials.OperEndpoint + uri);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
if (response.IsSuccessStatusCode)
{
var strResponse = await response.Content.ReadAsStringAsync();
var resp = SerializeExtension.DeserializeJson<IryoGenericTypesRs<T>>(strResponse);
return resp.data.ToList();
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {await
response.Content.ReadAsStringAsync()}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in GetGenericAsync: {ex.Message}", ex);
}
}

public async Task<List<RouteInfo>> GetRoutesAsync()


{
try
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 7/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
// Configurar los encabezados de la solicitud, agregando lo necesario para autenticación
ConfigureHeaders();
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "es-ES");

var uri = IryoCredentials.OperEndpoint + "/conecta/support/routes";

// Crear una solicitud GET


var message = new HttpRequestMessage(HttpMethod.Get, uri);

// Enviar la solicitud y obtener la respuesta


using (HttpResponseMessage response = await _client.SendAsync(message))
{
// Verificar si la respuesta es exitosa
if (response.IsSuccessStatusCode)
{
// Leer la respuesta como cadena
var strResponse = await response.Content.ReadAsStringAsync();

// Deserializar la respuesta en un objeto de tipo RoutesRS


var resp = SerializeExtension.DeserializeJson<RoutesRS>(strResponse);

// Retornar la lista de rutas


return resp.data.ToList();
}
else
{
// Lanzar una excepción si la respuesta no es exitosa
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {await
response.Content.ReadAsStringAsync()}");
}
}
}
catch (Exception ex)
{
// Manejar cualquier excepción que ocurra durante la ejecución del método
throw new Exception($"Error in GetRoutesAsync: {ex.Message}", ex);
}
}
public async Task<SalesChannelRS> SalesChannelAsync()
{
try
{
ConfigureHeaders();
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "es-ES");

var uri = IryoCredentials.OperEndpoint + "/conecta/config/sales-channel";

var message = new HttpRequestMessage(HttpMethod.Get, uri);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<SalesChannelRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in SalesChannelAsync: {ex.Message}", ex);
}
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 8/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)

public async Task<AuthenticationTokenRS> GetAuthenticationTokenAsync(string apiKey, string userName)


{
try
{
ConfigureHeaders();

var nvc = new List<KeyValuePair<string, string>>()


{
new KeyValuePair<string, string>("client_id", "api"),
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("api_key", apiKey),
new KeyValuePair<string, string>("scope", "openid"),
new KeyValuePair<string, string>("username", userName)
};

var message = new HttpRequestMessage(HttpMethod.Post, IryoCredentials.AuthEndpoint +


"/auth/realms/ilsa/protocol/openid-connect/token")
{
Content = new FormUrlEncodedContent(nvc)
};

using (HttpResponseMessage response = await _client.SendAsync(message))


{
if (response.IsSuccessStatusCode)
{
var strResponse = await response.Content.ReadAsStringAsync();
var resp = SerializeExtension.DeserializeJson<AuthenticationTokenRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {await
response.Content.ReadAsStringAsync()}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in GetAuthenticationTokenAsync: {ex.Message}", ex);
}
}

public async Task<AuthorisationTokenRS> GetAuthorisationTokenAsync(string authenToken)


{
try
{
ConfigureHeaders();

var nvc = new List<KeyValuePair<string, string>>()


{
new KeyValuePair<string, string>("audience", "internal-api"),
new KeyValuePair<string, string>("grant_type", "urn:ietf:params:oauth:grant-type:uma-ticket")
};

_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authenToken);

var message = new HttpRequestMessage(HttpMethod.Post, IryoCredentials.AuthEndpoint +


"/auth/realms/ilsa/protocol/openid-connect/token")
{
Content = new FormUrlEncodedContent(nvc)
};

using (HttpResponseMessage response = await _client.SendAsync(message))


{
if (response.IsSuccessStatusCode)
{
var strResponse = await response.Content.ReadAsStringAsync();
var resp = SerializeExtension.DeserializeJson<AuthorisationTokenRS>(strResponse);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23ms… 9/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {await
response.Content.ReadAsStringAsync()}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in GetAuthorisationTokenAsync: {ex.Message}", ex);
}
}

public async Task<RefreshAuthorisationTokenRS> RefreshAuthorisationTokenAsync(string authenToken, string


refreshToken)
{
try
{
ConfigureHeaders();

var nvc = new List<KeyValuePair<string, string>>()


{
new KeyValuePair<string, string>("client_id", "api"),
new KeyValuePair<string, string>("grant_type", "refresh_token"),
new KeyValuePair<string, string>("refresh_token", refreshToken)
};

_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authenToken);

var message = new HttpRequestMessage(HttpMethod.Post, IryoCredentials.AuthEndpoint +


"/auth/realms/ilsa/protocol/openid-connect/token")
{
Content = new FormUrlEncodedContent(nvc)
};

using (HttpResponseMessage response = await _client.SendAsync(message))


{
if (response.IsSuccessStatusCode)
{
var strResponse = await response.Content.ReadAsStringAsync();
var resp = SerializeExtension.DeserializeJson<RefreshAuthorisationTokenRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {await
response.Content.ReadAsStringAsync()}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in RefreshAuthorisationTokenAsync: {ex.Message}", ex);
}
}

public async Task<VoucherPaymentRS> VoucherPaymentAsync(VoucherPaymentRQ query)


{
try
{
ConfigureHeaders();

var strContent = query.ToJson();


var uri = IryoCredentials.OperEndpoint + "/conecta/gateway/payments/voucher";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23m… 10/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "VoucherPayment", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "VoucherPayment", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<VoucherPaymentRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in VoucherPaymentAsync: {ex.Message}", ex);
}
}

public async Task<Card3DsPaymentRS> Card3DsPaymentAsync(Card3DsPaymentRQ query)


{
try
{
ConfigureHeaders();

var strContent = query.ToJson();


var uri = IryoCredentials.OperEndpoint + "/conecta/gateway/payments/3ds/api";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "Card3DsPayment", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "Card3DsPayment", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<Card3DsPaymentRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in Card3DsPaymentAsync: {ex.Message}", ex);
}
}

public async Task<PaymentMethodsRS> PaymentMethodsAsync(string bookingNumber)


{
try
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23m… 11/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
ConfigureHeaders();

var uri = IryoCredentials.OperEndpoint + "/conecta/gateway/payments/methods?bookingNumber=" +


bookingNumber;

var message = new HttpRequestMessage(HttpMethod.Get, uri);

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "PaymentMethods", uri, "");

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "PaymentMethods", "", strResponse);

if (response.IsSuccessStatusCode)
{
var methodsArray = SerializeExtension.DeserializeJson<PaymenMethod[]>(strResponse);
var resp = new PaymentMethodsRS
{
Methods = methodsArray
};

return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)
{
throw new Exception($"Error in PaymentMethodsAsync: {ex.Message}", ex);
}
}

public async Task<PaymentAccountRS> PaymentAccountAsync(PaymentAccountRQ query)


{
try
{
ConfigureHeaders();

var strContent = query.ToJson();


var uri = IryoCredentials.OperEndpoint + "/conecta/gateway/payments/account";

var message = new HttpRequestMessage(HttpMethod.Post, uri)


{
Content = new StringContent(strContent, Encoding.UTF8, "application/json"),
};

LogHelper.LogMessageToFile(LogHelper.MsgRequest, "PaymentAccount", uri, strContent);

using (HttpResponseMessage response = await _client.SendAsync(message))


{
var strResponse = await response.Content.ReadAsStringAsync();
LogHelper.LogMessageToFile(LogHelper.MsgResponse, "PaymentAccount", "", strResponse);

if (response.IsSuccessStatusCode)
{
var resp = SerializeExtension.DeserializeJson<PaymentAccountRS>(strResponse);
return resp;
}
else
{
throw new Exception($"Error HTTP - Code: {response.StatusCode}, Message: {strResponse}");
}
}
}
catch (Exception ex)

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23m… 12/13
24/10/24, 8:18 Correo de EMOVEERE CONSULTING - (sin asunto)
{
throw new Exception($"Error in PaymentAccountAsync: {ex.Message}", ex);
}
}

private void ConfigureHeaders()


{
_client.DefaultRequestHeaders.Clear();
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
_client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
_client.DefaultRequestHeaders.TryAddWithoutValidation("Ocp-Apim-Subscription-Key", IryoCredentials.
SubscriptionKey);
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", IryoCredentials.
AuthorisationToken.access_token);
}
}
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-2855211054788120985&dsqt=1&simpl=%23m… 13/13

You might also like