README
API de conexion al Webservices de AZUL utilizando certificado digital
Instalacion
npm install ws-azul-cert
Para consumir esta libreria es necesario instanciar la clase "AzulECWS" con los siguientes parametros:
- URLMain: URL base a la que se realizara el request. Ejemplo: "pagos.azul.com.do" o "pruebas.azul.com.do"
- URLCont: URL de contingencias en caso de que la URL principal no este funcionando. Ejemplo: "contpagos.azul.com.do"
- Auth1: parametro de autenticacion 1 provisto por AZUL.
- Auth2: parametro de autenticacion 2 provisto por AZUL
- Channel: Canal asignado por AZUL para realizar las transacciones. Ejemplo: "EC"
- MerchantID: Merchant asignado por AZUL para realizar las transacciones.
- TimeOut: Tiempo limite provisto por AZUL para cambiar de una URL a otra.
- Way: Tipo metodo de autenticacion a utilizar:
- VPN: 1
- Certificado digital: 2
- PathCert: Ruta donde esta ubicado el certificado digital provisto por AZUL. Es recomendable cambiarle el formato a ".pem".
- PathKey: ruta de la llave provista a AZUL (CSR). Es recomendable cambiarle formato a ".pem".
const API = require('ws-azul-cert');
let api = new API(URL Principal,URL Contingencia,Auth1,Auth2,Canal,MerchantID,TimeOut,Via de conexion,Ruta de certificado,Ruta de la llave del certificado);
A continuacion, se listan los diferentes metodos que componen el API y los parametros segun su tipo
Sale
Este metodo se utiliza para realizar ventas, el mismo posee los siguientes parametros:- CardNumber (Requerido): Numero de la tarjeta a debitar.
- Expiration (Requerido): Fecha de expiracion en formato aaaamm.
- CVC (si no aplica enviar con valor null): Codigo de seguridad de la tarjeta.
- PosInputMode (Requerido): Metodo para realizar la transaccion provisto por AZUL. Ejemplo: "E-Commerce", "MOTO", etc
- Amount (Requerido): Monto de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- Itbis (Requerido): ITBIS de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- CurrencyPosCode (Requerido): Moneda de la transaccion provista por AZUL. Ejemplo: para pesos "$".
- OrderNumber (Requerido): numero de orden de la transaccion.
- CustomOrderId (Requerido): Numero de orden completo a seguir.
- -RRN: Numero de referencia.
- -CustomerServicePhone: Numero de telefono.
- -ECommerceUrl: URL de ecommerce si aplica.
- 1- Los parametros con guiones no es obligatorio enviarlos al consumir este metodo.
- 2-Actualmente en la respuesta pueden llegar dos tipos de mensajes para determinar la autorizacion:
- a-Respuesta de del cobro de la tarjeta.
- b-Respuesta para que el usuario proceda con la autenticacion del debito, la misma se identifica si en la respuesta llega "ResponseMessage = 3D_SECURE_CHALLENGE", de no recibirse este parametro finaliza la transaccion, de recibir este parametro entonces debera de leer la definicion del siguiente metodo.
api.Sale(4000000000000077,202012,123,"E-Commerce",100000,36000,"$","123456","123456789").then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
Hold
Este metodo se encarga de procesar una venta y decidir si procedera o no. Parametros para este metodo:- CardNumber (Requerido): Numero de la tarjeta a debitar.
- Expiration (Requerido): Fecha de expiracion en formato aaaamm.
- CVC (si no aplica enviar con valor null): Codigo de seguridad de la tarjeta.
- PosInputMode (Requerido): Metodo para realizar la transaccion provisto por AZUL. Ejemplo: "E-Commerce", "MOTO", etc
- Amount (Requerido): Monto de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- Itbis (Requerido): ITBIS de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- CurrencyPosCode (Requerido): Moneda de la transaccion provista por AZUL. Ejemplo: para pesos "$".
- OrderNumber (Requerido): numero de orden de la transaccion.
- CustomOrderId (Requerido): Numero de orden completo a seguir.
- -RRN: Numero de referencia.
- -CustomerServicePhone: Numero de telefono.
- -ECommerceUrl: URL de ecommerce si aplica.
api.Sale(4000000000000077,202012,123,"E-Commerce",100000,36000,"$","123456","123456789").then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
POST
Este metodo se encarga de proceder con un HOLD previamente hecho. Estos son los parametros requeridos:- AzulOrderId: AzulOrderId recibido en el HOLD.
- Amount: Monto ha autorizar.
- Itbis: ITBIS ha autorizar.
api.POST(36539,200,36).then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
VOID
Este metodo se encarga de anular una venta previamente realizada. Estos son los parametros requeridos para proceder:- AzulOrderId: AzulOrderId recibido de la venta que se desea reversar.
api.VOID(36543).then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
Refund
Este metodo se encarga de realizar reembolso a una venta existente. Estos son los parametros que requiere:- CardNumber (Requerido): Numero de la tarjeta a debitar.
- Expiration (Requerido): Fecha de expiracion en formato aaaamm.
- PosInputMode (Requerido): Metodo para realizar la transaccion provisto por AZUL. Ejemplo: "E-Commerce", "MOTO", etc
- Amount (Requerido): Monto de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- Itbis (Requerido): ITBIS de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- CurrencyPosCode (Requerido): Moneda de la transaccion provista por AZUL. Ejemplo: para pesos "$".
- OrderNumber (Requerido): numero de orden de la transaccion.
- CustomOrderId (Requerido): Numero de orden completo a seguir.
- -RRN: Numero de referencia.
- -CustomerServicePhone: Numero de telefono.
- -ECommerceUrl: URL de ecommerce si aplica.
api.Refund(200,36,"E-Commerce","$","20200215",36704,4000000000000077,202412,27).then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
SaleCreateToken
Este metodo se utiliza para realizar una venta y a su vez crear un token para procesar sin tarjeta en las transacciones futuras. Estos son los parametros necesarios:- CardNumber (Requerido): Numero de la tarjeta a debitar.
- Expiration (Requerido): Fecha de expiracion en formato aaaamm.
- PosInputMode (Requerido): Metodo para realizar la transaccion provisto por AZUL. Ejemplo: "E-Commerce", "MOTO", etc
- Amount (Requerido): Monto de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- Itbis (Requerido): ITBIS de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- CurrencyPosCode (Requerido): Moneda de la transaccion provista por AZUL. Ejemplo: para pesos "$".
- OrderNumber (Requerido): numero de orden de la transaccion.
- CustomOrderId (Requerido): Numero de orden completo a seguir.
api.SaleCreateToken(4000000000000077,202412,123,"E-Commerce",100000,36000,"$","123456","123456789").then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
SaleToken
Este metodo se utiliza para proceder una venta de un token previamente creado. Estos son los parametros requeridos:- DataVaultToken (requerido): ID del token previamente creado.
- PosInputMode (requerido): Metodo para realizar la transaccion provisto por AZUL. Ejemplo: "E-Commerce", "MOTO", etc
- Amount (Requerido): Monto de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- Itbis (Requerido): ITBIS de la transaccion multiplicado por 100, los dos ultimos digitos de la derecha son los decimales.
- CurrencyPosCode (Requerido): Moneda de la transaccion provista por AZUL. Ejemplo: para pesos "$".
- OrderNumber (Requerido): numero de orden de la transaccion.
- CustomOrderId (Requerido): Numero de orden completo a seguir.
api.SaleToken("D846F720-4183-4102-8C80-5793F0F1353F","E-Commerce",100000,36000,"$","123456","123456789").then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
DataVaultCreate
Este metodo se utiliza para crear un registro de tarjeta. Estos son los parametros necesarios:- CardNumber (Requerido): Numero de la tarjeta a debitar.
- Expiration (Requerido): Fecha de expiracion en formato aaaamm.
- CVC: Codigo de seguridad de la tarjeta.
api.DataVaultCreate(4000000000000077,202412,123).then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
DataVaultDelete
Este metodo se encarga de eliminar un registro ya existente. Estos son los parametros:- DataVaultToken: Token previamente creado.
api.DataVaultDelete("0AE0815D-A9C4-4380-9874-47035789187D").then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})
ThreeDSecure
Algunas tarjetas poseen una seguridad o token para aprobar un debito entrante; este tipo de tarjeta la podemos visualizar en el metodo de venta que en ves de llegar la respuesta "APROBADA" o "DECLINADA" se recibe en el ResponseMessage el valor "3D_SECURE_CHALLENGE", el mismo trae consigo los siguientes parametros adicionales con los cuales hay que hacer un POST para que el cliente ponga su clave:- AzulOrderId: valor del AZUL ID recibido en la venta.
- PaRes: valor recibido tras el POST de la venta.
- MD: valor recibido tras el POST de la venta.
api.DataVaultDelete("005600","adsf651a6df516adf156a1gfd6156adfg","asdf6a5sdf1=______asd6564afd").then((respuesta,error) => {
console.log(JSON.stringify(respuesta))
console.log(error)
})