VentaOTP

Descripción de API para ventas utilizando OTP
API VENTA OTP

API de venta de bolsa tercera desde creación de código OTP. Se incluyen las operaciones:

  • generarToken : generación de token de autenticación por BasicAuthentication. el token generado deberá ser enviado por header en cada petición del API ventaOTP
  • crearOTP : creación de solicitud de transacción
  • venta : cashout de cuenta tercera
  • extorno : reversa de transacción ejecutada

Para el API se maneja el siguiente diccionario de error, código y mensaje de respuesta:

  • 00 : EXITO
  • 01 : BENEFICIARIO NO EXISTE
  • 02 : BENEFICIARIO INHABILITADO
  • 03 : NO TIENE SALDO SUFICIENTE
  • 04 : CÓDIGO OTP NO EXISTE
  • 05 : CÓDIGO OTP VENCIDO
  • 06 : DATOS INCORRECTOS
  • 07 : OPERACIÓN NO ENCONTRADA
  • 08 : NO SE PUDO PROCEDER CON EL EXTORNO
generarToken
GET /generarToken

Request headers

Username
string required

Usuario enviado por Basic Authentication para generación de token de seguridad

Example:
usuario@dominio
Password
string required

Contraseña enviada por Basic Authentication para generación de token de seguridad

Example:
************************

Request body

La cadena de respuesta será el token de autenticación generado para uso en las operaciones del API VentaOTP

string
Example:
eyJraWQiOiJmWk1tV3pZR0RBckxHektvalNCK2w3SjFhMnNPXC9zQnNwOTlNNmNuM3F5MD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJkMTlhM2I0Zi01NzYxLTRlYTEtYjBmYS1iNWNiNjU5OWQ5NWQiLCJldmVudF9pZCI6IjcxMGEwNWM0LWZhNjQtNDhjNC04NGM2LTM1ZTAzOWJmYWQ0MiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE1OTM0MDI5MzAsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xXzJjSjFTZTFmSSIsImV4cCI6MTU5MzQwNjUzMCwiaWF0IjoxNTkzNDAyOTMwLCJqdGkiOiJmNmE5ZjZhNS1hNWVlLTRhZWMtYmJhNi01NzIzMDg0MTgyYTciLCJjbGllbnRfaWQiOiIxMGx2MDYxN281ZGljNTFlYnNucWVpaWpiNyIsInVzZXJuYW1lIjoiZ2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tIn0.au6punakIwLNcbbXELdvIptYZaYg8B8FC-KsYNvUUS6hXpiyOqnQAqLFu1ubCEwrc_5L_jqkWdivproYP-XnmLvRzzLMJcAbZ2WNx96p_BKW0Dyyuutx6Pvlg8bKTKGVGOtHUqjAYstPwYsUEWSeOuK1jJuhY601zwdNA5lKcEPbt_vGP57LF4YuOM4L6PNLIWEHB97fbm2wYDaxFYC_gLGmG6gvi6nWhzxloQ032DI5IZ0bFwAF31lcNNJKNSOaMaour_1-CDlFLHuf8B2ZEe7ZOB8nPspVxPD7MUxHLw7R3MXcUKsfWNBQooPqbGWe5AyRJs5jnsu3Kc8DmcC4gw

Examples

GET /generarToken HTTP/1.1 

Username: usuario@dominio
Password: ************************
Content-Type: application/json

eyJraWQiOiJmWk1tV3pZR0RBckxHektvalNCK2w3SjFhMnNPXC9zQnNwOTlNNmNuM3F5MD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJkMTlhM2I0Zi01NzYxLTRlYTEtYjBmYS1iNWNiNjU5OWQ5NWQiLCJldmVudF9pZCI6IjcxMGEwNWM0LWZhNjQtNDhjNC04NGM2LTM1ZTAzOWJmYWQ0MiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE1OTM0MDI5MzAsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xXzJjSjFTZTFmSSIsImV4cCI6MTU5MzQwNjUzMCwiaWF0IjoxNTkzNDAyOTMwLCJqdGkiOiJmNmE5ZjZhNS1hNWVlLTRhZWMtYmJhNi01NzIzMDg0MTgyYTciLCJjbGllbnRfaWQiOiIxMGx2MDYxN281ZGljNTFlYnNucWVpaWpiNyIsInVzZXJuYW1lIjoiZ2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tIn0.au6punakIwLNcbbXELdvIptYZaYg8B8FC-KsYNvUUS6hXpiyOqnQAqLFu1ubCEwrc_5L_jqkWdivproYP-XnmLvRzzLMJcAbZ2WNx96p_BKW0Dyyuutx6Pvlg8bKTKGVGOtHUqjAYstPwYsUEWSeOuK1jJuhY601zwdNA5lKcEPbt_vGP57LF4YuOM4L6PNLIWEHB97fbm2wYDaxFYC_gLGmG6gvi6nWhzxloQ032DI5IZ0bFwAF31lcNNJKNSOaMaour_1-CDlFLHuf8B2ZEe7ZOB8nPspVxPD7MUxHLw7R3MXcUKsfWNBQooPqbGWe5AyRJs5jnsu3Kc8DmcC4gw
crearOTP
POST /crearOTP

API para crear codigo OTP.

Request headers

Authentication
string optional

Token de autenticación Oauth2

Example:
eyJraWQiOiJmWk1tV3pZR0RBckxHektvalNCK2w3SjFhMnNPXC9zQnNwOTlNNmNuM3F5MD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJkMTlhM2I0Zi01NzYxLTRlYTEtYjBmYS1iNWNiNjU5OWQ5NWQiLCJldmVudF9pZCI6IjcxMGEwNWM0LWZhNjQtNDhjNC04NGM2LTM1ZTAzOWJmYWQ0MiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE1OTM0MDI5MzAsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xXzJjSjFTZTFmSSIsImV4cCI6MTU5MzQwNjUzMCwiaWF0IjoxNTkzNDAyOTMwLCJqdGkiOiJmNmE5ZjZhNS1hNWVlLTRhZWMtYmJhNi01NzIzMDg0MTgyYTciLCJjbGllbnRfaWQiOiIxMGx2MDYxN281ZGljNTFlYnNucWVpaWpiNyIsInVzZXJuYW1lIjoiZ2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tIn0.au6punakIwLNcbbXELdvIptYZaYg8B8FC-KsYNvUUS6hXpiyOqnQAqLFu1ubCEwrc_5L_jqkWdivproYP-XnmLvRzzLMJcAbZ2WNx96p_BKW0Dyyuutx6Pvlg8bKTKGVGOtHUqjAYstPwYsUEWSeOuK1jJuhY601zwdNA5lKcEPbt_vGP57LF4YuOM4L6PNLIWEHB97fbm2wYDaxFYC_gLGmG6gvi6nWhzxloQ032DI5IZ0bFwAF31lcNNJKNSOaMaour_1-CDlFLHuf8B2ZEe7ZOB8nPspVxPD7MUxHLw7R3MXcUKsfWNBQooPqbGWe5AyRJs5jnsu3Kc8DmcC4gw

Request body

Object
dni
string

DNI del beneficiario

Example:
87654321
codigoComercio
string

identificador único del comercio

Example:
987654321
nombreComercio
string

nombre del comercio

Example:
Bodega Vendemás
monto
number

monto de la transacción

Example:
100.15
rrn
string

número de referencia de la transacción. Formato: 12 caracteres numéricos, debe ser único por día

Example:
987654321654
latitud
string

latitud de geolocalización

Example:
-12.45687
longitud
string

longitud de geolocalización

Example:
-72.165645

Responses

200 OK
Body
Object
codigoMensaje
string

código de mensaje de respuesta

Example:
00
respuestaMensaje
string

descripción de mensaje de respuesta

Example:
EXITO
beneficiario
Object
dni
string nullable

DNI del beneficiario

Example:
87654321
nombres
string nullable

nombres del beneficiario

Example:
LUIS
apellidos
string nullable

apellidos del beneficiario

Example:
PEREZ PEREZ
telefono
string nullable

teléfono del beneficiario

Example:
987654321
orden
Object
autorizacionOTP
string

Código de autorización OTP. Formato: max 100 caracteres alfanumérico

Example:
ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543
logidOtp
string

log Id de OTP. Formato: max 32 caracteres alfanumérico

Example:
ABC9876543ABC9876543ABC987654321

Examples

POST /crearOTP HTTP/1.1 

Content-Type: application/json
Authentication: eyJraWQiOiJmWk1tV3pZR0RBckxHektvalNCK2w3SjFhMnNPXC9zQnNwOTlNNmNuM3F5MD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJkMTlhM2I0Zi01NzYxLTRlYTEtYjBmYS1iNWNiNjU5OWQ5NWQiLCJldmVudF9pZCI6IjcxMGEwNWM0LWZhNjQtNDhjNC04NGM2LTM1ZTAzOWJmYWQ0MiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE1OTM0MDI5MzAsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xXzJjSjFTZTFmSSIsImV4cCI6MTU5MzQwNjUzMCwiaWF0IjoxNTkzNDAyOTMwLCJqdGkiOiJmNmE5ZjZhNS1hNWVlLTRhZWMtYmJhNi01NzIzMDg0MTgyYTciLCJjbGllbnRfaWQiOiIxMGx2MDYxN281ZGljNTFlYnNucWVpaWpiNyIsInVzZXJuYW1lIjoiZ2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tIn0.au6punakIwLNcbbXELdvIptYZaYg8B8FC-KsYNvUUS6hXpiyOqnQAqLFu1ubCEwrc_5L_jqkWdivproYP-XnmLvRzzLMJcAbZ2WNx96p_BKW0Dyyuutx6Pvlg8bKTKGVGOtHUqjAYstPwYsUEWSeOuK1jJuhY601zwdNA5lKcEPbt_vGP57LF4YuOM4L6PNLIWEHB97fbm2wYDaxFYC_gLGmG6gvi6nWhzxloQ032DI5IZ0bFwAF31lcNNJKNSOaMaour_1-CDlFLHuf8B2ZEe7ZOB8nPspVxPD7MUxHLw7R3MXcUKsfWNBQooPqbGWe5AyRJs5jnsu3Kc8DmcC4gw

{
    "dni": "87654321",
    "codigoComercio": "987654321",
    "nombreComercio": "Bodega Vendemás",
    "monto": 100.15,
    "rrn": "987654321654",
    "latitud": "-12.45687",
    "longitud": "-72.165645"
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "codigoMensaje": "00",
    "respuestaMensaje": "EXITO",
    "beneficiario": {
        "dni": "",
        "nombres": "",
        "apellidos": "",
        "telefono": ""
    },
    "orden": {
        "autorizacionOTP": "ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543ABC9876543",
        "logidOtp": "ABC9876543ABC9876543ABC987654321"
    }
}
venta
POST /venta

API para ejecución de cash out por código OTP

Request headers

Authentication
string optional

Token de autenticación Oauth2

Example:
eyJraWQiOiJmWk1tV3pZR0RBckxHektvalNCK2w3SjFhMnNPXC9zQnNwOTlNNmNuM3F5MD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJkMTlhM2I0Zi01NzYxLTRlYTEtYjBmYS1iNWNiNjU5OWQ5NWQiLCJldmVudF9pZCI6IjcxMGEwNWM0LWZhNjQtNDhjNC04NGM2LTM1ZTAzOWJmYWQ0MiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE1OTM0MDI5MzAsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xXzJjSjFTZTFmSSIsImV4cCI6MTU5MzQwNjUzMCwiaWF0IjoxNTkzNDAyOTMwLCJqdGkiOiJmNmE5ZjZhNS1hNWVlLTRhZWMtYmJhNi01NzIzMDg0MTgyYTciLCJjbGllbnRfaWQiOiIxMGx2MDYxN281ZGljNTFlYnNucWVpaWpiNyIsInVzZXJuYW1lIjoiZ2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tIn0.au6punakIwLNcbbXELdvIptYZaYg8B8FC-KsYNvUUS6hXpiyOqnQAqLFu1ubCEwrc_5L_jqkWdivproYP-XnmLvRzzLMJcAbZ2WNx96p_BKW0Dyyuutx6Pvlg8bKTKGVGOtHUqjAYstPwYsUEWSeOuK1jJuhY601zwdNA5lKcEPbt_vGP57LF4YuOM4L6PNLIWEHB97fbm2wYDaxFYC_gLGmG6gvi6nWhzxloQ032DI5IZ0bFwAF31lcNNJKNSOaMaour_1-CDlFLHuf8B2ZEe7ZOB8nPspVxPD7MUxHLw7R3MXcUKsfWNBQooPqbGWe5AyRJs5jnsu3Kc8DmcC4gw

Request body

Object
dni
string required

DNi del beneficiario

Example:
87654321
codigoComercio
string required

identificador único del comercio

Example:
987654321
nombreComercio
string required

nombre del comercio

Example:
Bodega Vendemás
monto
number required

monto de la transacción

Example:
100.15
rrn
string required

número de referencia de la transacción. Formato: 12 caracteres numéricos, debe ser único por día

Example:
987654321654
otp
string required

código OTP enviado previamente a teléfono del beneficiario en la creación del OTP. Formato: numérico de 5 digitos

Example:
54321
latitud
string nullable

latitud de geolocalización

Example:
-12.45687
longitud
string nullable

longitud de geolocalización

Example:
-72.165645
logidOtp
string required

Log id del OTP, obtenido en solicitud de creación OTP. Formato: máx 32 caracteres alfanuméricos

Example:
ABC1237894ABC1237894ABC123789412
mcc
string

MCC del comercio

Example:
5499
departamento
string required

Nombre del departamento de la dirección principal del comercio

Example:
Lima
provincia
string required

Nombre de la provincia de la dirección principal del comercio

Example:
Lima
distrito
string required

Nombre del distrito de la dirección principal del comercio

Example:
Santa Anita

Responses

200 OK
Body
Object
codigoMensaje
string

código de respuesta

Example:
00
respuestaMensaje
string

descripción de código de respuesta

Example:
EXITO
beneficiario
Object
dni
string nullable

DNI del beneficiario

Example:
87654321
nombres
string nullable

nombres del beneficiario

Example:
LUIS
apellidos
string nullable

apellidos del beneficiario

Example:
PEREZ PEREZ
telefono
string nullable

número de teléfono del beneficiario

Example:
987654321
orden
Object
idTransaccion
string

id de la transacción generado por Niubiz. Formato: 15 caracteres numérico.

Example:
987654321654987
rrn
string

número de referencia de la transacción enviado en request

Example:
987654321654
saldo
string nullable

saldo restante actual del beneficiario

Example:
50.15
estado
string

estado de la transacción

Enumeration:
APROBADA
DENEGADA
ERRADA
EXTORNADA

Examples

POST /venta HTTP/1.1 

Content-Type: application/json

{
    "dni": "87654321",
    "codigoComercio": "987654321",
    "nombreComercio": "Bodega Vendemás",
    "monto": 100.15,
    "rrn": "987654321654",
    "otp": "54321",
    "latitud": "-12.45687",
    "longitud": "-72.165645",
    "logidOtp": "ABC1237894ABC1237894ABC123789412",
    "mcc": "5499",
    "departamento":"Lima",
    "provincia":"Lima",
    "distrito":"Santa Anita"
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "codigoMensaje": "00",
    "respuestaMensaje": "EXITO",
    "beneficiario": {
        "dni": "87654321",
        "nombres": "LUIS",
        "apellidos": "PEREZ PEREZ",
        "telefono": "987654321"
    },
    "orden": {
        "idTransaccion": "987654321654987",
        "rrn": "987654321654",
        "saldo": "50.15",
        "estado": "APROBADA"
    }
}
extorno
POST /extorno

API para extornar una operación

Request headers

Authentication
string optional

Token de autenticación Oauth2

Example:
eyJraWQiOiJmWk1tV3pZR0RBckxHektvalNCK2w3SjFhMnNPXC9zQnNwOTlNNmNuM3F5MD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJkMTlhM2I0Zi01NzYxLTRlYTEtYjBmYS1iNWNiNjU5OWQ5NWQiLCJldmVudF9pZCI6IjcxMGEwNWM0LWZhNjQtNDhjNC04NGM2LTM1ZTAzOWJmYWQ0MiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE1OTM0MDI5MzAsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xXzJjSjFTZTFmSSIsImV4cCI6MTU5MzQwNjUzMCwiaWF0IjoxNTkzNDAyOTMwLCJqdGkiOiJmNmE5ZjZhNS1hNWVlLTRhZWMtYmJhNi01NzIzMDg0MTgyYTciLCJjbGllbnRfaWQiOiIxMGx2MDYxN281ZGljNTFlYnNucWVpaWpiNyIsInVzZXJuYW1lIjoiZ2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tIn0.au6punakIwLNcbbXELdvIptYZaYg8B8FC-KsYNvUUS6hXpiyOqnQAqLFu1ubCEwrc_5L_jqkWdivproYP-XnmLvRzzLMJcAbZ2WNx96p_BKW0Dyyuutx6Pvlg8bKTKGVGOtHUqjAYstPwYsUEWSeOuK1jJuhY601zwdNA5lKcEPbt_vGP57LF4YuOM4L6PNLIWEHB97fbm2wYDaxFYC_gLGmG6gvi6nWhzxloQ032DI5IZ0bFwAF31lcNNJKNSOaMaour_1-CDlFLHuf8B2ZEe7ZOB8nPspVxPD7MUxHLw7R3MXcUKsfWNBQooPqbGWe5AyRJs5jnsu3Kc8DmcC4gw

Request body

Object
idTransaccion
string

id de la transacción generado por Banco de la Nación. Formato: 20 caracteres numéricos

Example:
98765432109876543210
rrn
string required

número de referencia de la transacción original a extornar

Example:
987654321654
dni
string required

DNI del beneficiario

Example:
87654321
otp
string required

código OTP de la transacción original a extornar

Example:
987654321654
monto
number required

monto de la transacción original a extornar

Example:
100.15
latitud
string nullable

latitud de geolocalización

Example:
-12.454684
longitud
string nullable

longitud de geolocalización

Example:
-12.454684
logidOtp
string

log Id de OTP enviado en solicitud de creación de OTP. Formato: max 32 caracteres alfanumérico

Example:
ABC9876543ABC987654321

Responses

200 OK
Body
Object
codigoMensaje
string

código de respuesta

Example:
00
respuestaMensaje
string

mensaje de respuesta

Example:
EXITO

Examples

POST /extorno HTTP/1.1 

Content-Type: application/json
Authentication: eyJraWQiOiJmWk1tV3pZR0RBckxHektvalNCK2w3SjFhMnNPXC9zQnNwOTlNNmNuM3F5MD0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJkMTlhM2I0Zi01NzYxLTRlYTEtYjBmYS1iNWNiNjU5OWQ5NWQiLCJldmVudF9pZCI6IjcxMGEwNWM0LWZhNjQtNDhjNC04NGM2LTM1ZTAzOWJmYWQ0MiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE1OTM0MDI5MzAsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xXzJjSjFTZTFmSSIsImV4cCI6MTU5MzQwNjUzMCwiaWF0IjoxNTkzNDAyOTMwLCJqdGkiOiJmNmE5ZjZhNS1hNWVlLTRhZWMtYmJhNi01NzIzMDg0MTgyYTciLCJjbGllbnRfaWQiOiIxMGx2MDYxN281ZGljNTFlYnNucWVpaWpiNyIsInVzZXJuYW1lIjoiZ2lhbmNhZ2FsbGFyZG9AZ21haWwuY29tIn0.au6punakIwLNcbbXELdvIptYZaYg8B8FC-KsYNvUUS6hXpiyOqnQAqLFu1ubCEwrc_5L_jqkWdivproYP-XnmLvRzzLMJcAbZ2WNx96p_BKW0Dyyuutx6Pvlg8bKTKGVGOtHUqjAYstPwYsUEWSeOuK1jJuhY601zwdNA5lKcEPbt_vGP57LF4YuOM4L6PNLIWEHB97fbm2wYDaxFYC_gLGmG6gvi6nWhzxloQ032DI5IZ0bFwAF31lcNNJKNSOaMaour_1-CDlFLHuf8B2ZEe7ZOB8nPspVxPD7MUxHLw7R3MXcUKsfWNBQooPqbGWe5AyRJs5jnsu3Kc8DmcC4gw

{
    "idTransaccion": "98765432109876543210",
    "rrn": "987654321654",
    "dni": "87654321",
    "otp": "987654321654",
    "monto": 100.15,
    "latitud": "-12.454684",
    "longitud": "-12.454684",
    "logidOtp": "ABC9876543ABC987654321"
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "codigoMensaje": "00",
    "respuestaMensaje": "EXITO"
}