Creación de pagos

Para poder crear pagos a través de la API de Tuyo Pay se deberá consultar los endpoints que se mostrarán en esta referencia.

Conceptos básicos

A continuación mostramos los conceptos necesarios para poder efectuar una integración exitosa.

API Key

Esto nos servirá de llave para obtener los insumos necesarios para efectuar la transacción y realizar el pago. Los clientes pueden solicitar que se les brinde un API Key para producción y otro para entorno de pruebas.

El API Key debe ser enviado en los headers de la petición con el nombre x-api-token.

Timestamp

El timestamp se debe enviar como parámetro en la URL de cada petición, esto nos servirá para verificar que la petición se esta ejecutando justo en el momento en que se consulta la API.

Ejemplos de cómo obtener el timestamp en distintos lenguajes:

const timestamp = new Date().getTime();

// Ejemplo de construcción de la url de la petición
const request = `https://${API_URL}?timestamp=${timestamp}`;

Códigos de Respuesta

Ayudan a clasificar las peticiones en exitosas o erróneas. A continuación se muestran los posibles códigos de respuesta:

CódigoTipoDescripción
200ExitosaLa petición fue realizada exitosamente
400ErrorError realizar la acción en el servidor
401ErrorError al autorizar la petición
403ErrorLa acción no está permitida
404ErrorEl recurso o el endpoint no esta disponible
409ErrorError en el envío de datos
500ErrorError interno del servidor

POST /api/make_payment

Este endpoint se utiliza para crear un pago.

Descripción de los Headers

RequeridoCampoValorDescripción
noContent-Type"application/json"Tipo de contenido del body
six-api-token${API_KEY}API key proporcionada anteriormente

Descripción del Body

RequeridoCampoTipo de DatoDescripción
siamountDoubleMonto total del pago
siphoneStringNúmero de teléfono del cliente
noconceptStringConcepto del recibo
sistoreDoubleNombre del comercio
sifirstnameStringNombre del cliente
silastnameStringApellido del cliente
siemailStringEmail del cliente
sitransactionsStringArray de transacciones encriptado(*)
sitransactions.numberStringNumero de la tarjeta
sitransactions.amountStringMonto a pagar (en centavos)
sitransactions.typeStringTipo de transacción (tarjeta o puntos)
sitransactions.cvvStringCódigo CVV
sitransactions.expStringFecha de expiración de la tarjeta (MM/YY)

ℹ️ El método de encriptado para el campo transactions es proporcionado únicamente durante las reuniones técnicas de integración.

Ejemplos

  • Ejemplo del body request sin encriptamiento de transactions
{
  "amount": 20.5,
  "phone": "12345678",
  "concept": "PAGO",
  "store": "Tuyoapp",
  "firstname": "Juan",
  "lastname": "Perez",
  "email": "jprz@yopmail.com",
  "transactions": [
    {
      "number": "4111111111111111",
      "amount": "000000001050",
      "type": "CARD",
      "cvv": "123",
      "exp": "09/22"
    },
    {
      "number": "4111111111111111",
      "amount": "000000001000",
      "type": "POINTS",
      "cvv": "123",
      "exp": "09/22"
    }
  ]
}
  • Ejemplos de la petición POST en diferentes lenguajes:
POST https://test.tuyoanalytics.com/api/make_payment?timestamp=1656461076
const request = new XMLHttpRequest();
const { API_KEY } = process.env;
const timestamp = new Date().getTime();
const ENDPOINT = `https://${API_URL}?timestamp=${timestamp}`

request.open('POST', $ENDPOINT);

request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('x-api-token', `${API_KEY}`);

request.onreadystatechange = function () {
  if (this.readyState === 4) {
    console.log('Status:', this.status);
    console.log('Headers:', this.getAllResponseHeaders());
    console.log('Body:', this.responseText);
  }
};

const body = {
  'amount': 20.5,
  'phone': "12345678",
  'concept': 'PAGO',
  'store': 'Tuyoapp',
  'firstname': 'Juan',
  'lastname': 'Perez',
  'email': 'jprz@yopmail.com',
  'transactions': '53616c7465645f5fe40e863810179c3dca0721a1eeed27b2d1feedf3529ef33da7914da18d4b6c0a06e6c7c3f7eaf16bc304d7cde974bdfd2872cc1a88d40caa21d8b312e4652379854292bbece1cb11b12cf23d956eb234deb523b06a9d4ba49ab3bb3dd597041c8037850560e9ed701e6fd500bc3f4117d6406fa138e3187ac804a289b90c6c0b4aa2b20f14f3846e458bb36a03f23eefc4ebc4f2275dd321016941a6f3f8adf19a260eb8663a3e2969aaae6822b9eabfa3ce2bc71904dff0ecb822181ddfa24ee1d4d1de02ec4401'
};

request.send(JSON.stringify(body));