ws-azul-cert

API de conexion a webservices de SDP.

Usage no npm install needed!

<script type="module">
  import wsAzulCert from 'https://cdn.skypack.dev/ws-azul-cert';
</script>

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".
Nota: todos estos campos son requeridos para poder consumir la clase.

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.
Nota:
  • 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.
Nota: 1-Los parametros con guiones no es obligatorio enviarlos al consumir este metodo.

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.
Nota: en la respuesta se recibira el token a utilizar en las futuras ventas.

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)
})