Saltar al contenido principal

Modelo de solicitud de clave OTP

Este modelo de mensaje se utiliza para solicitar la clave OTP que, una vez validada, autoriza el inicio de la transacción. La solicitud de la OTP es el primer paso para confirmar la identidad del usuario y garantizar que el proceso de pago o cualquier otra acción sensible sea seguro y esté autorizado.
Al iniciar una transacción, el orden de los campos en el mensaje no afecta la funcionalidad de la API. Es importante asegurar que los campos tengan la longitud y el tipo de dato correcto para que la solicitud se procese correctamente.

Objeto en formato JSON

{
"creditor_account": {
"bank_code": "0001",
"type": "CNTA",
"number": "00014567890123456789"
},
"debitor_document_info": {
"type": "V",
"number": "123456789"
},
"debitor_account": {
"bank_code": "0102",
"type": "CELE",
"number": "04141234567"
},
"amount": {
"amt": 5,
"currency": "VES"
}
}

Cargando datos...

Atributos

class OTP{
static String BASE_URL = "https://pruebas.api.sypago.net";
static String TOKEN_PATH = "/api/v1/auth/token";
static String OTP_PATH = "/api/v1/request/otp";
static String CTA = "00015678901234567890";
static SocketsHttpHandler shHandler;

static async Task Main(string[] args)

{
shHandler = new SocketsHttpHandler
{
MaxConnectionsPerServer = 100,
PooledConnectionLifetime = TimeSpan.FromMinutes(10),
ConnectTimeout = TimeSpan.FromSeconds(200),
PooledConnectionIdleTimeout = TimeSpan.FromSeconds(5),
ResponseDrainTimeout = TimeSpan.FromSeconds(5),
};

HttpClient? cliente;

cliente = new HttpClient(shHandler);
cliente.BaseAddress = new Uri(BASE_URL);

string body = "{"client_id":"user_name","secret":"api_key"}";

var contenido = new StringContent(body, Encoding.UTF8, "application/json");
var respuesta = await cliente.PostAsync(TOKEN_PATH, contenido);
var resultado = await respuesta.Content.ReadAsStringAsync();

JsonDocument jsonDoc = JsonDocument.Parse(resultado);
string accessToken = jsonDoc.RootElement.GetProperty("access_token").GetString();

//Console.WriteLine(accessToken);
var internal_id = new Random().Next(1, 999999).ToString("000000") + new Random().Next(1, 999999).ToString("000000");
var group_id = new Random().Next(1, 999999).ToString("000000") + new Random().Next(1, 999999).ToString("000000");

body = "{"creditor_account": {"bank_code": "0001","type": "CNTA","number": "" + CTA + ""},"debitor_document_info": {"type": "V","number": "21290681"},"debitor_account": {"bank_code": "0102","type": "CELE","number": "" + "04140121871" + ""},"amount": {"amt": 5,"currency": "VES"}}";

cliente.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

contenido = new StringContent(body, Encoding.UTF8, "application/json");
respuesta = await cliente.PostAsync(OTP_PATH, contenido);
resultado = await respuesta.Content.ReadAsStringAsync();
//jsonDoc = JsonDocument.Parse(resultado);

//string transaction_id = jsonDoc.RootElement.GetProperty("transaction_id").GetString();
Console.WriteLine(resultado);
}
}