NAV
http javascript

Introducción

Bienvenido, en este documento se explica como se puede realizar una transacción en nuestra platarforma

Autenticación

Con /api/session genera un ID de sesión con vigencia de 24 horas. Se utiliza en los headers de los demás endpoints a modo de autenticación. Pasadas las 24 horas, se debe consultar para generar un ID de sesión nuevo.

Request

Request:

POST /api/session HTTP/1.1
Host: merchant-api-stg.captarpagos.com
Content-Type: application/json
Content-Length: 73

{
"apiKey": "9556c039340535e23438",
"secret": "d32d77d8f081a4333370"
}
const axios = require('axios');
let data = JSON.stringify({
  "apiKey": "9556c039340535e23438",
  "secret": "d32d77d8f081a4333370"
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://merchant-api-stg.captarpagos.com/api/session',
  headers: { 
    'Content-Type': 'application/json'
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

[post] https://merchant-api-stg.captarpagos.com/api/session

Parámetros disponibles

Body parameters

Body - JSON

{
  "apiKey": "9556c039340535ec2438",
  "secret": "d32d77d8f081a4d13370"
}
Key Value Descripción
apiKey 9556c... Credenciales asignadas
secret d32d7.. Credenciales asignadas

Response

Response:

[
  {
    "code": 200,
    "status": "success",
    "session": "11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a"
  }  
]

Key Tipo Descripción
code Integer Indica el código del estado de respuesta
status String Indica el estado de la respuesta
session String Id de sesión para autorización

Productos y servicios

Con /api/products se puede consultar las empresas que coinciden con el texto de búsqueda y retorna una lista con los datos de los productos coincidentes, o una lista vacía en caso de no haber ninguna coincidencia.

Request

Request

GET /api/products?searchName=Gasnor&paymentType=service HTTP/1.1
Host: merchant-api-stg.captarpagos.com
session: 11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a
var axios = require('axios');

var config = {
  method: 'get',
  url: 'https://merchant-api-stg.captarpagos.com/api/products?searchName=gasnor&paymentType=service',
  headers: { 
    'session': '11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

[get] https://merchant-api-stg.captarpagos.com/api/products?searchName={searchName}&paymentType={paymentType}

Parámetros disponibles

Headers parameters

Key Value Descripción
session 11a71611ef5bffc1... id de sesión

Query parameters

Key Value Descripcion
searchName gasnor texto de la búsqueda que se desea realizar
paymentType service tipo de servicio

Tipos de servicio (paymentType)

Al buscar uno o más productos se tiene que definir el tipo de servicio a utilizar, se pueden seleccionar los siguientes servicios disponibles:

https://merchant-api-stg.captarpagos.com/api/products?searchName=gasnor&paymentType=service

https://merchant-api-stg.captarpagos.com/api/products?searchName=movistar&paymentType=topUp

https://merchant-api-stg.captarpagos.com/api/products?searchName=1234567890987654321&paymentType=barCode

Response

Response:

[
  {
    "code": 200,
    "status": "success",
    "products": [
      {
        "id": "376",
        "productName": "GASNOR",
        "description": ""
      }
    ]
  }
]
Key Tipo Descripción
code Integer Indica el código del estado de respuesta
status String Indica el estado de la respuesta
products Array(Product) Lista de empresas coincidentes

Products

Key Tipo Descripción
id String Identificador de la empresa, se usa para elegir la empresa a facturar
productName String Nombre de la empresa
description String Información adicional de la empresa

Iniciar transacción

Con /api/init se asocia el proceso de transacción a un hash único para hacer seguimiento de todo el flujo sin necesidad de pasos redundantes, optimiza el proceso. Retorna dicho hash y el nombre de la empresa a la que se generará la factura.

Request

Request:

GET /api/init?productCode=376 HTTP/1.1
Host: merchant-api-stg.captarpagos.com
session: 11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a
var axios = require('axios');

var config = {
  method: 'get',
  url: 'https://merchant-api-stg.captarpagos.com/api/init?productCode=376',
  headers: { 
    'session': '11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a'
  }
};

axios(config)
  .then(function (response) {
    console.log(JSON.stringify(response.data));
  })
  .catch(function (error) {
    console.log(error);
  });

[get] https://merchant-api-stg.captarpagos.com/api/init?productCode={productCode}

Parámetros disponibles

Headers parameters

Key Value Descripción
session 11a71611ef5bffc1... id de sesión

Query parameters

Key Value Descripcion
productCode 376 id de la empresa escogida

https://merchant-api-stg.captarpagos.com/api/init?productCode=376

Response

Response:

[
  {
    "code": 200,
    "status": "success",
    "data": {
      "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi",
      "productName": "GASNOR"
    }
  }
]
Key Tipo Descripción
code Integer Indica el código del estado de respuesta
status String Indica el estado de la respuesta
data Data Datos consultados

Data

Key Tipo Descripción
hash String Indica el hash asociado a la factura
productName String Nombre de la empresa

Flujo transaccional

Con /api/parameters se maneja el flujo del formulario, proporciona paso a paso los datos requeridos por la empresa, dependiendo de la misma, y maneja las respuestas hasta que la factura está lista para ser pagada.

Request

Request:

POST /api/parameters HTTP/1.1
Host: merchant-api-stg.captarpagos.com
session: 11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a
Content-Type: application/json
Content-Length: 86

{
    "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi",
    "parameters": []
}
var axios = require('axios');
var data = JSON.stringify({
  "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi",
  "parameters": []
});

var config = {
  method: 'post',
  url: 'https://merchant-api-stg.captarpagos.com/api/parameters',
  headers: { 
    'session': '11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
  .then(function (response) {
    console.log(JSON.stringify(response.data));
  })
  .catch(function (error) {
    console.log(error);
  });

[POST] https://merchant-api-stg.captarpagos.com/api/parameters

Parámetros disponibles

Headers parameters

Key Value Descripción
session 11a71611ef5bffc1... id de sesión

Body parameters

Body - JSON

{
  "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi",`
  "parameters": [ ]
}
Key Tipo Descripción
hash String Hash obtenido en el endpoint init
parameters Array(String) Array de string, que muestra las respuestas del formulario

Response

Response:

[
  {
    "code": 200,
    "status": "success",
    "data": {
      "options": [
        {
          "id": 1,
          "description": "COBRANZA SIN FACTURA"
        },
        {
          "id": 2,
          "description": "COBRO DE FACTURA CON BARRAS - JUJUY"
        },
        {
          "id": 3,
          "description": "COBRO DE FACTURA CON BARRA - RESTO DEL PAIS"
        }
      ]
    }
  }
]

Key Tipo Descripción
code Integer Indica el código del estado de respuesta
status String Indica el estado de la respuesta
data Data Proporciona la información a solicitar
  1. Caso 1 – Presenta parámetro “options”: Este parámetro trae una lista de opciones. Para indicar la opción escogida, se añade el id de dicha opción al array “parameters” del request, en el siguiente llamado.

  2. Caso 2 - Presenta parámetro “input”: Este parámetro proporciona información del dato requerido, se debe preguntar en forma de formulario, cumpliendo lo establecido. La respuesta correspondiente se debe añadir al array “parameters” del request, en el siguiente llamado.

  3. Caso 3 – Presenta parámetro “paymentAmount”: Este parámetro indica que la factura es de monto abierto, proporcionará el monto sugerido, el mínimo y el máximo que se puede pagar. También puede presentar solo mínimo y máximo, en caso de que no haya un monto sugerido. El monto que se desee pagar se debe añadir al array “parameters” del request en el siguiente llamado, en string y con decimales, de la siguiente manera: “1.00”.

  4. Caso 4 – Factura lista para ser pagada: Una vez que estén listos los datos del cliente y no hay más datos por solicitar, el endpoint retornará code 201 y un parámetro “data” con los datos de la factura preparada.

Data

Key Tipo Descripción
options Array(Option) Arreglo de opciones de pago correspondientes
input Input Objeto con información del dato a consultar
paymentAmount PaymentAmount Objeto con información del dato a consultar
message String Indica que la factura esta lista para ser pagada
productCode String Identificador de la empresa
productName String Descripcion de la empresa
reference String Referencia de la factura
amount String Monto a pagar
currency String Moneda del pais
additionalData String Información adicional de la factura

Option

Key Tipo Descripción
id Integer Identificador de la opción
description String Descripción de la opción

Input

Key Tipo Descripción
name String Descripción del dato a solicitar
additionalData String Información adicional del dato
maxLength Integer Longitud máxima
minLength Integer Longitud mínima

PaymentAmount

Key Tipo Descripción
amountSuggested Decimal Monto sugerido
minAmount Decimal Monto mínimo
maxAmount Decimal Monto máximo

Realizar pago

Una vez que la factura se encuentra lista para ser pagada, con /api/payBill, solo hace falta enviar el hash de la factura a este endpoint para completar el pago.

Request

Request:

POST /api/payBill HTTP/1.1
Host: merchant-api-stg.captarpagos.com
session: 11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a
Content-Type: application/json
Content-Length: 63

{
    "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi"
}
var axios = require('axios');
var data = JSON.stringify({
  "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi"
});

var config = {
  method: 'post',
  url: 'https://merchant-api-stg.captarpagos.com/api/payBill',
  headers: { 
    'session': '11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
  .then(function (response) {
    console.log(JSON.stringify(response.data));
  })
  .catch(function (error) {
    console.log(error);
  });

[post] https://merchant-api-stg.captarpagos.com/api/payBill

Parámetros disponibles

Headers parameters

Key Value Descripción
session 11a71611ef5bffc1... id de sesión

Body parameters

Body - JSON

{
 "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi"
}

Key Tipo Descripción
hash String Hash obtenido en el endpoint init

Response

Response:

[
  {
    "code": 200,
    "status": "success",
    "data": {
      "operationStatus": "SUCCESS",
      "operationId": "62c78dd0801e1a06be698dd8",
      "controlNumber": "999217fVqF24EBb57uW7",
      "amount": 10.00,
      "productName": "GASNOR",
      "currency": "ARS",
      "transactionDate": "2022-07-07T22:55:58.96881",
      "addicionalData": "",
      "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi"
    }
  }
]

operationStatus puede ser “SUCCESS” si la factura se pagó exitosamente, y “FAILED” en caso de que haya sido fallida.

Ticket

Con este endpoint /api/ticket retorna el ticket de una factura, tanto en texto como en pdf (url para visualizarlo).

Request

Request:

GET /api/ticket?hash=$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi HTTP/1.1
Host: merchant-api-stg.captarpagos.com
session: 11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a
var axios = require('axios');

var config = {
  method: 'get',
  url: 'https://merchant-api-stg.captarpagos.com/api/ticket?hash=$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi',
  headers: { 
    'session': '11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a'
  }
};

axios(config)
  .then(function (response) {
    console.log(JSON.stringify(response.data));
  })
  .catch(function (error) {
    console.log(error);
  });

[get] https://merchant-api-stg.captarpagos.com/api/ticket

Parámetros disponibles

Headers parameters

Key Value Descripción
session 11a71611ef5bffc1... id de sesión

Query parameters

Key Value Descripción
hash $2b$10$iwCZGPuDC... id de la empresa escogida

https://merchant-api-stg.captarpagos.com/api/ticket?hash=$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi

Response

Response:

[
  {
    "code": 200,
    "status": "success",
    "data": {
      "operationId": "62c84627801e1a06be698df7",
      "amount": 10.00,
      "pdfUrl": "https://merchant-api-stg.captarpagos.com/rp/62c84627801e1a06be698df5",
      "textUrl": "https://merchant-api-stg.captarpagos.com/rt/62c84627801e1a06be698df5",
      "ticketText": "RAPIPAGO\nPuesto: 999217\nFecha: 08/07/2022 Hora: 11:58:47\nCódigo de Operación: 62c84627801e1a06be698df7\nEmpresa: 376 GASNOR\n00015158\nNro de refrerencia: 00000004283977\nNro.Op:221316983148846\nCod Seg:60063CB71E\nForma de Pago Importe\nEfectivo $10.00\n** TOTAL ** $10.00\n2952010250001515800000026456121074000264560000121556\nORIGINAL\nVISÍTENOS EN WWW.RAPIPAGO.COM.AR\nAGENTE OFICIAL RAPIPAGO\n---------------*****---------------\n"
    }
  }

]
Key Tipo Descripción
code Integer Indica el código del estado de respuesta
status String Indica el estado de la respuesta
data Data Proporciona la información del ticke

Data

Key Tipo Descripción
operationId String Identificador de la operación
amount Decimal Monto de la factura
pdfUrl String Url que muestra el PDF del ticket
textUrl String Url que muestra el texto del ticket
ticketText String Texto del ticket en string

Consulta de transacciones

En el caso de que el endpont pagar transaccion no retorne una respuesta valida, se puede consultar mediante con el hash de la factura con /api/consult, solo hace falta enviar el hash de la factura a este endpoint para completar el pago.

Request

Request:

GET /api/consult HTTP/1.1
Host: merchant-api-stg.captarpagos.com
session: 11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a
hash: 2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi
Content-Type: application/json
Content-Length: 63

var axios = require('axios');


var config = {
  method: 'get',
  url: 'https://merchant-api-stg.captarpagos.com/api/consult',
  headers: { 
    'session': '11a71611ef5bffc1b8c70405039566064b7c544b2f6dd3dbd7b96a762d6ff88a', 
    'hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi',
    'Content-Type': 'application/json'
  }
};

axios(config)
  .then(function (response) {
    console.log(JSON.stringify(response.data));
  })
  .catch(function (error) {
    console.log(error);
  });

[get] https://merchant-api-stg.captarpagos.com/api/consult

Parámetros disponibles

Headers parameters

Key Value Descripción
session 11a71611ef5bffc1... id de sesión
hash b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOf... Hash obtenido en el endpoint init

Response

Response:

[
  {
    "code": 200,
    "status": "success",
    "data": {
      "operationStatus": "SUCCESS",
      "operationId": "62c78dd0801e1a06be698dd8",
      "controlNumber": "999217fVqF24EBb57uW7",
      "amount": 10.00,
      "productName": "GASNOR",
      "currency": "ARS",
      "transactionDate": "2022-07-07T22:55:58.96881",
      "addicionalData": "",
      "hash": "$2b$10$iwCZGPuDCGCxXwHQs1YUBuxxpNOfFR1E3L5YWzdVxrJM.3co4FXdi"
    }
  }
]

operationStatus puede ser “SUCCESS” si la factura se pago exitosamente, y “FAILED” en caso de que haya sido fallida.

Rutina de reintentos

Al intetar el pago de una transaccion y ocurre un error inesperado donde la respuesta no sea ninguna de las esperadas (Confirmación o Rechazo), se debe esperar 30 seg antes de hacer el 1er llamado al ep de consulta, si en el primer llamado a consulta ocurre un error se debe volver a llamar a consulta, en este caso si no se obtiene una respuesta esperada se espera otros 30 seg antes de hacer el tercer y ultimo llamado en el cual si no se obtiene una respuesta definitiva se debe dar por finalizada la transaccion y se debe consultar con Captar Pagos para su verificación manual.

Errores

Mensajes de respuestas comunes

Código Mensaje
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
404 Not Found -- The specified kitten could not be found.
500 Internal Server Error -- We had a problem with our server. Try again later.

Transacción finalizada

/api/payBill

Al momento de realizar una transacción el response puede llegar con un code 200, pero esto solo indica que se completó dicha solicitud, se tiene que evaluar también el operationStatus para ver si la transacción se realizó o no con éxito.

operationStatus: FAILED | SUCCESS

additionalData: [mensaje que entrega el proveedor del servicio] en el additionalData viene información de la transacción efectuada, esta varía si la transacción fue realizada o no.