Módulo no oficial para integrar la API de WebPay, Anulaciones y OneClick de Transbank en Node.js, con soporte para promesas.
npm install webpay-nodejs
Revisa el directorio /showcase para ver ejemplos funcionando
$ node showcase/test<DesiredTest>
- Instanciar
const WebPay = require('webpay-nodejs');
let wp = new WebPay({
commerceCode: youCommerceCode,
publicKey: youPublicKey, // .cert file
privateKey: youPrivateKey, // .key file
webpayKey: youWebpayKey, // .pem file
env: WebPay.ENV.INTEGRACION
});
- Iniciar Transacción
wp.initTransaction({
buyOrder: buyOrden,
sessionId: req.sessionId,
returnURL: url + '/verificar',
finalURL: url + '/comprobante',
amount: amount
}).then((data) => {
res.redirect(data.url + '?token_ws=' + data.token);
})
- Obtener datos de la transacción
wp.getTransactionResult(token).then((transaccion) => {
// datos de la transaccion
})
- Aceptar la transacción
wp.acknowledgeTransaction(token)
Opcionalmente, anular
wp.nullify({
authorizationCode: '123',
authorizedAmount: 2000,
buyOrder: buyOrder
})
Para los métodos de OneClick, usar wp.oneclick.*
y wp.onclickmall.*
respectivamente.
Las versiones anteriores tienen problemas de seguridad en sus dependencias. Se recomienda actualizar a ésta versión como punto mínimo.
- Se agregaron dependencias faltantes (ejs). Notificado por ffflabs (#15).
- Se agregó una versión propia de ursa, y actualización de soap. Ahora la instalación no tiene problemas de seguridad. Gracias nicolaslopezj (#20).
- Se corrigieron problemas en los ejemplos. Gracias DiruzCode (#17), Rubenazo (#9).
- Agregado soporte parcial para pagos diferidos (Falta documentación). BluebambooSRL (#11).
- Se agregó más formalismo en la licencia (archivos COPYING, COPYING.LESEER). La licencia sigue siendo la misma, LGPL.
- Se agregó soporte para WebPay OneClick Mall. Gracias Alonso Gaete! (#6).
- Correcciones menores internas al manejo de errores (no implica cambios en la API).
- Los ejemplos ahora manejan los errores (solo a modo de demostración).
- Se actualizaron los certificados de WebPay Normal.
- Se eliminaron dependencias sin uso.
- Se agregó soporte para WebPay OneClick
- Gracias a la observación de Joaquin Gumucio L., se reemplazó la dependencia de "ursa" por una versión pura en js "ursa-purejs", solucionando de esta forma problemas en algunos equipos productos de usar una librería nativa. Ahora el código es 100% js.
- Se actualizaron los ejemplos, ahora están en el directorio showcase
-
getTransactionResult retornaba transaction.detailOutput como un array con un único objeto las propiedades, ahora transaction.detailOutput retorna directamente dicho objeto.
- Ejemplo antes: transaction.detailOutput[0].amount
- Ejemplo ahora: transaction.detailOutput.amount
Agradecimientos a FabianBravoA por el algoritmo de verificación especial de Transbank.
Agradecimientos a Leonardo Gatica por descubrir el significado de los códigos de respuesta de WebPay OneClick desde el número -8 al -1.
Éste código se distribuye con la licencia libre LGPL. Revisar COPYING.LESSER para detalles.