### start Method Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/patpass.md Ejemplo de cómo iniciar el proceso de inscripción de pago automático con tarjeta. ```javascript const inscription = PatpassComercio.Inscription.buildForIntegration( '28299257', 'cxxXQgGD9vrVe4M41FIt' ); try { const response = await inscription.start( 'https://example.com/patpass-response', // url 'Juan', // name 'Pérez', // lastName 'García', // secondLastName '12345678', // rut (sin dígito verificador) 'SERVICE123', // serviceId 'https://example.com/patpass-final', // finalUrl 50000, // maxAmount '(2)12345678', // phone '+56912345678', // cellPhone 'Mi Servicio de Pago', // patpassName 'juan.perez@example.com', // personEmail 'commerce@example.com', // commerceEmail 'Calle Principal 123', // address 'Santiago' // city ); console.log('Inscripción iniciada'); console.log('URL de redirección:', response.url); console.log('Token:', response.token); } catch (error) { console.error('Error al iniciar inscripción:', error.message); } ``` -------------------------------- ### Full Inscription Flow Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/patpass.md Complete JavaScript example demonstrating the Patpass inscription flow, including starting the inscription and handling the callback. ```javascript const { PatpassComercio, IntegrationCommerceCodes, IntegrationApiKeys } = require('transbank-sdk'); const inscription = PatpassComercio.Inscription.buildForIntegration( IntegrationCommerceCodes.PATPASS_COMERCIO, IntegrationApiKeys.PATPASS_COMERCIO ); async function startPatpassInscription() { try { // 1. Iniciar inscripción const response = await inscription.start( 'https://mycommerce.example.com/patpass-callback', 'Juan', 'Pérez', 'García', '12345678', 'SERVICE001', 'https://mycommerce.example.com/patpass-success', 50000, '(2)22123456', '+56912345678', 'Mi Pago Automático', 'juan@example.com', 'payments@mycommerce.example.com', 'Avenida Principal 123', 'Santiago' ); console.log('Redirigir al usuario a:', response.url); // response.token se usará cuando Transbank nos notifique } catch (error) { console.error('Error:', error.message); } } async function handlePatpassCallback(token) { try { // 2. Verificar estado después de que Transbank notifique const status = await inscription.status(token); if (status.response_code === 0) { console.log('Tarjeta inscrita exitosamente'); console.log('Últimos 4 dígitos:', status.card_number); // Proceder con pagos automáticos } else { console.log('Inscripción fallida - código:', status.response_code); } } catch (error) { console.error('Error al verificar estado:', error.message); } } startPatpassInscription(); ``` -------------------------------- ### buildForProduction Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Ejemplo de uso de buildForProduction para obtener una instancia de Transaction. ```javascript const transaction = WebpayPlus.Transaction.buildForProduction( 'tu-codigo-comercio', 'tu-api-key' ); ``` -------------------------------- ### buildForIntegration Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Ejemplo de uso de buildForIntegration para obtener una instancia de Transaction. ```javascript const transaction = WebpayPlus.Transaction.buildForIntegration( '597055555532', // WEBPAY_PLUS '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' // WEBPAY ); ``` -------------------------------- ### create Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Ejemplo de cómo crear una transacción de Webpay Plus. ```javascript const transaction = WebpayPlus.Transaction.buildForIntegration( '597055555532', '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); try { const response = await transaction.create( 'order-12345', // buyOrder único 'session-abc123', // sessionId 50000, // 50.000 pesos 'https://example.com/return' // returnUrl ); console.log(response.url); // URL para redirigir al usuario console.log(response.token); // Token para confirmar después } catch (error) { console.error('Error al crear transacción:', error.message); } ``` -------------------------------- ### commit Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Ejemplo de cómo confirmar una transacción de Webpay Plus. ```javascript try { const response = await transaction.commit('token-from-webpay'); if (response.response_code === 0) { console.log('Transacción confirmada'); console.log('Monto:', response.amount); console.log('Código de autorización:', response.authorization_code); } } catch (error) { console.error('Error al confirmar:', error.message); } ``` -------------------------------- ### buildForIntegration Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/patpass.md Ejemplo de cómo crear una instancia de Inscription configurada para integración. ```javascript const inscription = PatpassComercio.Inscription.buildForIntegration( '28299257', // PATPASS_COMERCIO 'cxxXQgGD9vrVe4M41FIt' // PATPASS_COMERCIO apiKey ); ``` -------------------------------- ### Status Check Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/patpass.md JavaScript example demonstrating how to use the status function to check the inscription status and handle the response. ```javascript try { const status = await inscription.status('token-from-patpass'); if (status.response_code === 0) { console.log('Inscripción completada'); console.log('Últimos 4 dígitos:', status.card_number); } else { console.log('Inscripción no completada'); console.log('Código de error:', status.response_code); } } catch (error) { console.error('Error al consultar estado:', error.message); } ``` -------------------------------- ### installments Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Consulta cuotas para transacción mall. ```typescript async installments( token: string, installmentsNumber: number, details: Array ): Promise ``` -------------------------------- ### MallInscription - Iniciar Inscripción SDK Call Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/endpoints.md Example of how to initiate a MallInscription using the SDK. ```javascript const response = await inscription.start( 'juanperez', 'juan@example.com', 'https://example.com/response' ); ``` -------------------------------- ### Get Transaction Status Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/oneclick.md Example of how to get the status of a mall transaction using the OneClick SDK. ```typescript async status(buyOrder: string): Promise ``` ```javascript try { const status = await transaction.status('order-1'); console.log('Estado:', status.status); console.log('Código de respuesta:', status.response_code); } catch (error) { console.error('Error:', error.message); } ``` -------------------------------- ### TransaccionCompleta - Confirmar Transacción SDK Call Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/endpoints.md Example of how to confirm a TransaccionCompleta using the SDK. ```javascript const response = await webpay.commitTransaction(token, id_query_installments, null, false); ``` -------------------------------- ### TransaccionCompleta - Crear Transacción SDK Call Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/endpoints.md Example of how to create a TransaccionCompleta using the SDK. ```javascript const response = await webpay.createTransaction({ buy_order: 'order-12345', session_id: 'session-123', amount: 100000, cvv: 123, card_number: '4111111111111111', card_expiration_date: '12/25' }); ``` -------------------------------- ### MallBinInfo - Consultar BIN SDK Call Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/endpoints.md Example of how to query BIN information using the SDK. ```javascript const info = await binInfo.queryBin('tbk-user-123456'); ``` -------------------------------- ### Authorize Mall Transaction Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/oneclick.md Example of authorizing a payment with a card enrolled in the mall using the OneClick SDK. ```typescript async authorize( username: string, tbkUser: string, parentBuyOrder: string, details: Array ): Promise ``` ```javascript const { TransactionDetail, Oneclick } = require('transbank-sdk'); const transaction = Oneclick.MallTransaction.buildForIntegration( '597055555541', '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); const details = [ new TransactionDetail(30000, '597055555542', 'order-1', 1), new TransactionDetail(20000, '597055555543', 'order-2', 1) ]; try { const response = await transaction.authorize( 'juanperez', 'tbk-user-123456', 'parent-order-123', details ); if (response.status === 'AUTHORIZED') { console.log('Transacción autorizada'); console.log('Código:', response.authorization_code); } } catch (error) { console.error('Error al autorizar:', error.message); } ``` -------------------------------- ### Build MallTransaction for Integration Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/oneclick.md Example of creating a MallTransaction instance configured for integration environment. ```typescript static buildForIntegration(commerceCode: string, apiKey: string): MallTransaction ``` ```javascript const transaction = Oneclick.MallTransaction.buildForIntegration( '597055555541', // ONECLICK_MALL '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); ``` -------------------------------- ### TransaccionCompleta - Consultar Cuotas SDK Call Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/endpoints.md Example of how to query installments for a TransaccionCompleta using the SDK. ```javascript const response = await webpay.getInstallments(token, 3); ``` -------------------------------- ### Instalación Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/README.md Comando para instalar el SDK de Transbank para Node.js usando npm. ```bash npm install transbank-sdk ``` -------------------------------- ### Commit Transaction (No Installments) Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Confirms a Transacción Completa transaction without installments. ```typescript async commit( token: string, idQueryInstallments: number | undefined = undefined, deferredPeriodIndex: number | undefined = undefined, gracePeriod: boolean | undefined = undefined ): Promise ``` ```javascript try { // Sin cuotas const response = await transaction.commit('token-abc123'); console.log('Transacción confirmada sin cuotas'); // Con cuotas const installments = await transaction.installments('token-abc123', 3); const responseWithInstallments = await transaction.commit( 'token-abc123', installments.id_query_installments, // idQueryInstallments undefined, // deferredPeriodIndex false // gracePeriod ); console.log('Transacción confirmada con 3 cuotas'); } catch (error) { console.error('Error al confirmar:', error.message); } ``` -------------------------------- ### Configuración para Producción - Cambiar de Ambiente Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplos de cómo configurar el SDK para usar el ambiente de producción, ya sea utilizando un método helper o creando manualmente un objeto Options. ```javascript const { WebpayPlus, Options, Environment } = require('transbank-sdk'); // Opción 1: Usar método helper const transaction = WebpayPlus.Transaction.buildForProduction( 'tu-codigo-comercio', 'tu-api-key' ); // Opción 2: Crear Options manualmente const options = new Options( 'tu-codigo-comercio', 'tu-api-key', Environment.Production, 30000 // timeout en ms ); const transaction = new WebpayPlus.Transaction(options); ``` -------------------------------- ### Delete Inscription Example Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/oneclick.md Example of how to delete a card inscription using the OneClick SDK. ```typescript delete(tbkUser: string, username: string): Promise ``` ```javascript try { const result = await inscription.delete( 'tbk-user-123456', // tbkUser obtenido en finish 'juanperez' // username original ); if (result) { console.log('Inscripción eliminada exitosamente'); } } catch (error) { console.error('Error al eliminar inscripción:', error.message); } ``` -------------------------------- ### Uso Básico Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/README.md Ejemplo de cómo inicializar el SDK y crear una transacción básica con WebpayPlus. ```javascript const { WebpayPlus, Options, IntegrationApiKeys, IntegrationCommerceCodes } = require('transbank-sdk'); // Crear transacción para integración const transaction = WebpayPlus.Transaction.buildForIntegration( IntegrationCommerceCodes.WEBPAY_PLUS, IntegrationApiKeys.WEBPAY ); // Crear una transacción const response = await transaction.create( 'buyOrder123', 'sessionId456', 100000, 'https://example.com/return' ); ``` -------------------------------- ### Instalar con yarn Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/README.md ó también instalarlo usando Yarn ```bash yarn add transbank-sdk ``` -------------------------------- ### Get Transaction Status Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Retrieves the status of a specific transaction using its token. ```typescript async status(token: string): Promise ``` ```javascript try { const status = await transaction.status('token-abc123'); console.log('Estado:', status.status); console.log('Código de respuesta:', status.response_code); } catch (error) { console.error('Error al consultar estado:', error.message); } ``` -------------------------------- ### Compilar Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/README.md Compila el proyecto. ```bash npm run build ``` -------------------------------- ### Get Mall Transaction Status Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Retrieves the status of a mall transaction using its token. ```typescript async status(token: string): Promise ``` -------------------------------- ### Transacción Completa (Con Datos de Tarjeta Completos) Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplo de cómo procesar un pago directamente en el backend recibiendo los datos de la tarjeta, consultando cuotas y confirmando la transacción. ```javascript const { TransaccionCompleta, IntegrationCommerceCodes, IntegrationApiKeys } = require('transbank-sdk'); const transaction = TransaccionCompleta.Transaction.buildForIntegration( IntegrationCommerceCodes.TRANSACCION_COMPLETA, IntegrationApiKeys.WEBPAY ); // 1. Crear transacción con datos de tarjeta const createResponse = await transaction.create( 'order-1000', 'session-xyz', 150000, 123, // CVV '4111111111111111', // Número de tarjeta '12/25' // MM/YY ); // 2. Consultar opciones de cuotas const installmentsResponse = await transaction.installments( createResponse.token, 3 // Solicitar 3 cuotas ); // 3. Confirmar con cuotas const commitResponse = await transaction.commit( createResponse.token, installmentsResponse.id_query_installments, undefined, // deferredPeriodIndex false // gracePeriod ); if (commitResponse.details[0].response_code === 0) { console.log('Pago procesado con 3 cuotas'); } ``` -------------------------------- ### buildForProduction Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Crea una instancia de Transaction configurada para el ambiente de producción. ```typescript static buildForProduction(commerceCode: string, apiKey: string): Transaction ``` -------------------------------- ### MallTransaction - Autorizar Pago SDK Call Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/endpoints.md Example of how to authorize a MallTransaction using the SDK. ```javascript const response = await transaction.authorize( 'juanperez', 'tbk-user-123456', 'parent-order-123', details ); ``` -------------------------------- ### Detectar vulnerabilidades con npm Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/README.md Este comando te permite ver las vulnerabilidades y repararlas. ```bash # Este comando te permite ver las vulnerabilidades npm audit # Este comando te permite reparar las vulnerabilidades npm audit fix ``` -------------------------------- ### MallInscription - Eliminar Inscripción SDK Call Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/endpoints.md Example of how to delete a MallInscription using the SDK. ```javascript const result = await inscription.delete('tbk-user-123456', 'juanperez'); ``` -------------------------------- ### MallInscription - Finalizar Inscripción SDK Call Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/endpoints.md Example of how to finalize a MallInscription using the SDK. ```javascript const response = await inscription.finish('inscription-token-123'); ``` -------------------------------- ### buildForIntegration Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Crea una instancia de Transaction configurada para el ambiente de integración. ```typescript static buildForIntegration(commerceCode: string, apiKey: string): Transaction ``` -------------------------------- ### Transacción Simple de Webpay Plus Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplo de cómo realizar una transacción simple con Webpay Plus, incluyendo la creación y confirmación de la transacción. ```javascript const { WebpayPlus, IntegrationCommerceCodes, IntegrationApiKeys } = require('transbank-sdk'); // Crear instancia const transaction = WebpayPlus.Transaction.buildForIntegration( IntegrationCommerceCodes.WEBPAY_PLUS, IntegrationApiKeys.WEBPAY ); // 1. Crear transacción const createResponse = await transaction.create( 'order-123', // Orden única 'session-abc', // ID de sesión 50000, // Monto en pesos 'https://example.com/return' // URL de retorno ); // Redirigir usuario a createResponse.url // Guardar createResponse.token para después // 2. Después que usuario vuelve del pago: const commitResponse = await transaction.commit(createResponse.token); if (commitResponse.details[0].response_code === 0) { console.log('Pago autorizado'); } ``` -------------------------------- ### Respuesta de create (Transacción Completa) Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Estructura de la respuesta para la creación de una transacción completa. ```javascript { token: '01234567890ABCDEF...', response_code: 0, response_message: 'OK' } ``` -------------------------------- ### Ejemplo de buildForProduction Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Ejemplo de uso de buildForProduction. ```javascript const mallTx = TransaccionCompleta.MallTransaction.buildForIntegration( '597055555573', // TRANSACCION_COMPLETA_MALL '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); ``` -------------------------------- ### Get Transaction Status Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Obtains the status of a Transacción Completa transaction. ```typescript async status(token: string): Promise ``` ```javascript try { const status = await transaction.status('token-abc123'); console.log('Estado:', status.status); console.log('Autorización:', status.authorization_code); } catch (error) { console.error('Error:', error.message); } ``` -------------------------------- ### create Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Crea una transacción mall. ```typescript async create( buyOrder: string, sessionId: string, amount: number, cvv: number | undefined, cardNumber: string, cardExpirationDate: string, details: Array ): Promise ``` -------------------------------- ### Estructura de Archivos Generados Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/CONTENIDO.md Lista de los archivos de documentación generados y su propósito. ```bash output/ ├── README.md # Descripción general ├── configuration.md # Configuración y constantes ├── types.md # Tipos e interfaces ├── errors.md # Manejo de errores ├── endpoints.md # Documentación de endpoints HTTP ├── ÍNDICE.md # Índice de símbolos ├── guia-rapida.md # Guía de referencia rápida ├── CONTENIDO.md # Este archivo └── api-reference/ ├── webpay-plus.md # Referencia WebpayPlus ├── oneclick.md # Referencia Oneclick ├── transaccion-completa.md # Referencia TransaccionCompleta └── patpass.md # Referencia Patpass ``` -------------------------------- ### buildForProduction Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Crea una instancia de MallTransaction configurada para producción. ```typescript static buildForProduction(commerceCode: string, apiKey: string): MallTransaction ``` -------------------------------- ### Ejemplo de Uso de InstallmentDetail Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/types.md Muestra cómo crear una instancia de InstallmentDetail y usarla para consultar cuotas en Transacción Completa. ```javascript const { InstallmentDetail, TransaccionCompleta } = require('transbank-sdk'); const installmentDetail = new InstallmentDetail( '597055555574', // código de comercio hijo 'buyOrder123', // orden de compra del hijo 6 // número de cuotas ); const transaction = TransaccionCompleta.MallTransaction.buildForIntegration( '597055555573', '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); const installments = await transaction.installments('token123', 6); ``` -------------------------------- ### MallBinInfo Static Method: buildForProduction Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/oneclick.md Crea una instancia de MallBinInfo configurada para producción. ```typescript static buildForProduction(commerceCode: string, apiKey: string): MallBinInfo ``` -------------------------------- ### MallBinInfo Instance Method: queryBin Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/oneclick.md Obtiene información del BIN de una tarjeta inscrita. ```typescript async queryBin(tbkUser: string): Promise ``` ```javascript const binInfo = Oneclick.MallBinInfo.buildForIntegration( '597055555541', '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); try { const info = await binInfo.queryBin('tbk-user-123456'); console.log('Información de BIN:', info); } catch (error) { console.error('Error:', error.message); } ``` -------------------------------- ### Ejemplo de Uso de Options Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/configuration.md Ejemplo de cómo crear una instancia de la clase Options para la integración. ```javascript const { Options, Environment } = require('transbank-sdk'); // Crear opciones para integración const options = new Options( '597055555532', '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C', 'https://webpay3gint.transbank.cl', 30000 // timeout de 30 segundos ); ``` -------------------------------- ### Ejecutar test Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/README.md Ejecuta los tests del proyecto, con o sin coverage. ```bash npm run test # Tests con coverage npm run test:coverage ``` -------------------------------- ### Inscripción y Pago con Oneclick Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplo de cómo inscribir una tarjeta de un cliente y luego realizar un pago con esa tarjeta inscrita usando Oneclick. ```javascript const { Oneclick, TransactionDetail, IntegrationCommerceCodes, IntegrationApiKeys } = require('transbank-sdk'); // PASO 1: INSCRIBIR TARJETA const inscription = Oneclick.MallInscription.buildForIntegration( IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY ); // Iniciar inscripción const startResponse = await inscription.start( 'usuarioprueba', 'usuario@example.com', 'https://example.com/inscription-response' ); // Redirigir usuario a startResponse.url para que ingrese tarjeta // Después que vuelve del formulario: const finishResponse = await inscription.finish(startResponse.token); const tbkUser = finishResponse.tbk_user; // GUARDAR ESTE VALOR // PASO 2: AUTORIZAR PAGOS CON TARJETA INSCRITA const transaction = Oneclick.MallTransaction.buildForIntegration( IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY ); // Hacer cobro (sin redirigir usuario) const details = [ new TransactionDetail(50000, IntegrationCommerceCodes.ONECLICK_MALL_CHILD1, 'order-456') ]; const authResponse = await transaction.authorize( 'usuarioprueba', tbkUser, // Usar el guardado en inscripción 'parent-order-789', details ); if (authResponse.response_code === 0) { console.log('Pago autorizado sin redireccionamiento'); } ``` -------------------------------- ### MallBinInfo Static Method: buildForIntegration Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/oneclick.md Crea una instancia de MallBinInfo configurada para integración. ```typescript static buildForIntegration(commerceCode: string, apiKey: string): MallBinInfo ``` -------------------------------- ### Transacción Mall (Múltiples Tiendas) Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplo de cómo realizar una transacción Mall con Webpay Plus, permitiendo múltiples tiendas en una sola transacción. ```javascript const { WebpayPlus, TransactionDetail, IntegrationCommerceCodes, IntegrationApiKeys } = require('transbank-sdk'); const mallTx = WebpayPlus.MallTransaction.buildForIntegration( IntegrationCommerceCodes.WEBPAY_PLUS_MALL, IntegrationApiKeys.WEBPAY ); // Crear detalles de tiendas hijas const details = [ new TransactionDetail( 25000, // Monto para tienda 1 IntegrationCommerceCodes.WEBPAY_PLUS_MALL_CHILD1, 'order-child-1' ), new TransactionDetail( 25000, // Monto para tienda 2 IntegrationCommerceCodes.WEBPAY_PLUS_MALL_CHILD2, 'order-child-2' ) ]; // Crear transacción mall const createResponse = await mallTx.create( 'mall-order-123', 'session-abc', 'https://example.com/return', details ); // Redirigir a createResponse.url // Después: await mallTx.commit(token) ``` -------------------------------- ### Ejemplo de Uso de CommitDetail Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/types.md Demuestra cómo crear una instancia de CommitDetail y usarla para confirmar una transacción. ```javascript const { CommitDetail, TransaccionCompleta } = require('transbank-sdk'); const commitDetail = new CommitDetail( '597055555574', // código de comercio hijo 'buyOrder123', // orden de compra del hijo 12345, // id query installments undefined, // deferred period index false // grace period ); const transaction = TransaccionCompleta.MallTransaction.buildForIntegration( '597055555573', '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); await transaction.commit('token123', [commitDetail]); ``` -------------------------------- ### create Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Crea una transacción de Webpay Plus. ```typescript async create( buyOrder: string, sessionId: string, amount: number, returnUrl: string ): Promise ``` -------------------------------- ### Constantes de Integración Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplos de uso de las constantes para los códigos de comercio y claves de API para diferentes productos de Transbank. ```javascript const { IntegrationCommerceCodes, IntegrationApiKeys } = require('transbank-sdk'); // Para Webpay Plus const code = IntegrationCommerceCodes.WEBPAY_PLUS; const key = IntegrationApiKeys.WEBPAY; // Para Webpay Plus Deferred const code = IntegrationCommerceCodes.WEBPAY_PLUS_DEFERRED; // Para Webpay Plus Mall const code = IntegrationCommerceCodes.WEBPAY_PLUS_MALL; const child1 = IntegrationCommerceCodes.WEBPAY_PLUS_MALL_CHILD1; const child2 = IntegrationCommerceCodes.WEBPAY_PLUS_MALL_CHILD2; // Para Oneclick const code = IntegrationCommerceCodes.ONECLICK_MALL; const child1 = IntegrationCommerceCodes.ONECLICK_MALL_CHILD1; // Para Transacción Completa const code = IntegrationCommerceCodes.TRANSACCION_COMPLETA; const codeSinCVV = IntegrationCommerceCodes.TRANSACCION_COMPLETA_SIN_CVV; // Para Patpass const code = IntegrationCommerceCodes.PATPASS_COMERCIO; const key = IntegrationApiKeys.PATPASS_COMERCIO; ``` -------------------------------- ### Firma de la clase Options Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/configuration.md La clase Options contiene los parámetros necesarios para autenticar y configurar las conexiones a la API de Transbank. ```typescript class Options { commerceCode: string; apiKey: string; environment: string; timeout?: number; constructor( commerceCode: string, apiKey: string, environment: string, timeout?: number ) } ``` -------------------------------- ### Respuesta exitosa de create (Webpay Plus) Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Estructura de la respuesta exitosa para la creación de una transacción Webpay Plus. ```javascript { url: 'https://webpay3gint.transbank.cl/webpaycheckout?token_ws=...', token: '01234567890ABCDEF...' } ``` -------------------------------- ### Configuración para Producción - Timeout Personalizado Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplo de cómo establecer un tiempo de espera (timeout) personalizado para las solicitudes al configurar las opciones del SDK. ```javascript const options = new Options( commerceCode, apiKey, environment, 5000 // 5 segundos en lugar de los 10 minutos por defecto ); const transaction = new WebpayPlus.Transaction(options); try { await transaction.create(buyOrder, sessionId, amount, returnUrl); } catch (error) { // Si la solicitud tarda más de 5 segundos, se lanzará error aquí } ``` -------------------------------- ### Environment Enum (Webpay) Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/configuration.md Define las URLs de los ambientes de Webpay. ```typescript enum Environment { Integration = 'https://webpay3gint.transbank.cl', Production = 'https://webpay3g.transbank.cl' } ``` -------------------------------- ### commit Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Confirma una transacción mall. ```typescript async commit( token: string, details: Array ): Promise ``` -------------------------------- ### Definición de InstallmentDetail Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/types.md Define la estructura y el constructor de la clase InstallmentDetail, utilizada para información de cuotas en transacciones hijas de Transacción Completa. ```typescript class InstallmentDetail { commerceCode: string | undefined; buyOrder: string | undefined; installmentsNumber: number; constructor( commerceCode: string, buyOrder: string, installmentsNumber: number ) } ``` -------------------------------- ### Patpass - Pago Automático Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplo de cómo iniciar una inscripción para pago automático con Patpass y cómo manejar la notificación de Transbank para confirmar la inscripción. ```javascript const { PatpassComercio, IntegrationCommerceCodes, IntegrationApiKeys } = require('transbank-sdk'); const inscription = PatpassComercio.Inscription.buildForIntegration( IntegrationCommerceCodes.PATPASS_COMERCIO, IntegrationApiKeys.PATPASS_COMERCIO ); // Iniciar inscripción para pago automático const response = await inscription.start( 'https://example.com/patpass-notification', 'Juan', 'Pérez', 'García', '12345678', 'SERVICE-MONTHLY', 'https://example.com/patpass-success', 50000, // Monto máximo mensual '(2)22123456', '+56912345678', 'Mi Suscripción Mensual', 'juan@example.com', 'payments@example.com', 'Calle 123', 'Santiago' ); // Redirigir usuario a response.url para inscribirse // Cuando Transbank notifica con el token: const statusResponse = await inscription.status(token); if (statusResponse.response_code === 0) { console.log('Cliente inscrito para pagos automáticos'); // Ahora el sistema cobrará automáticamente cada mes } ``` -------------------------------- ### commit Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Confirma una transacción. Debe invocarse después de que el usuario pague en Webpay. ```typescript async commit(token: string): Promise ``` -------------------------------- ### Importación Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Importación del módulo WebpayPlus. ```javascript const { WebpayPlus } = require('transbank-sdk'); ``` -------------------------------- ### Build MallTransaction for Integration Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/webpay-plus.md Creates a MallTransaction instance configured for integration testing. ```typescript static buildForIntegration(commerceCode: string, apiKey: string): MallTransaction ``` ```javascript const mallTransaction = WebpayPlus.MallTransaction.buildForIntegration( '597055555535', // WEBPAY_PLUS_MALL '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); ``` -------------------------------- ### Importación del módulo TransaccionCompleta Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Cómo importar la clase TransaccionCompleta desde el SDK de Transbank. ```javascript const { TransaccionCompleta } = require('transbank-sdk'); ``` -------------------------------- ### Manejo de Errores - Patrón Básico Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplo de cómo implementar un bloque try-catch para manejar errores específicos de Transbank y errores inesperados durante una transacción. ```javascript try { const response = await transaction.create( buyOrder, sessionId, amount, returnUrl ); } catch (error) { if (error instanceof TransbankError) { console.error('Error de Transbank:', error.message); // Error específico de la API } else { console.error('Error inesperado:', error.message); } } ``` -------------------------------- ### Respuesta de commit (Webpay Plus) Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Estructura de la respuesta para la confirmación de pago (commit) en Webpay Plus. ```javascript { buy_order: 'order-123', card_number: '****1111', accounting_date: '0522', transaction_date: '2022-05-22T...', vci: 'TSY', details: [ { amount: 50000, status: 'AUTHORIZED', authorization_code: '123456', payment_type_code: 'VN', response_code: 0, installments_number: 0 } ] } ``` -------------------------------- ### Manejo de Errores - Validación de Parámetros Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Demostración de cómo el SDK lanza errores antes de realizar solicitudes si los parámetros de entrada son inválidos, como campos requeridos vacíos o campos demasiado largos. ```javascript // Los errores de validación se lanzan ANTES de hacer solicitudes // Error: campo requerido vacío try { await transaction.create('', 'session', 1000, 'http://...'); // Error: 'buyOrder' can't be null or white space } catch (error) { /* ... */ } // Error: campo demasiado largo try { await transaction.create('a'.repeat(27), 'session', 1000, 'http://...'); // Error: 'buyOrder' is too long, the maximum length is 26 } catch (error) { /* ... */ } // Error: lista vacía try { await mallTx.create('order', 'session', 'http://...', []); // Error: list 'details' can't be null or empty } catch (error) { /* ... */ } ``` -------------------------------- ### MallTransaction Build For Integration Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Creates a MallTransaction instance configured for integration. ```typescript static buildForIntegration(commerceCode: string, apiKey: string): MallTransaction ``` -------------------------------- ### Operaciones Comunes Rápidas - Captura Diferida Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplos de cómo realizar capturas diferidas para transacciones de Webpay Plus, Transacción Completa y Oneclick. ```javascript // Webpay Plus const capture = await transaction.capture( 'token-123', 'order-123', '123456', // authorizationCode 50000 ); // Transacción Completa const capture = await transaction.capture( 'token-456', 'order-456', '654321', 100000 ); // Oneclick const capture = await transaction.capture( 'child-commerce-code', 'child-order', '789456', 30000 ); ``` -------------------------------- ### Operaciones Comunes Rápidas - Consultar Estado de Transacción Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplos de cómo consultar el estado de transacciones para diferentes productos de Transbank como Webpay Plus, Oneclick y Patpass. ```javascript // Webpay Plus const status = await transaction.status('token-123'); console.log(status.details[0].response_code); // 0 = autorizado // Oneclick const status = await transaction.status('buy-order-123'); // Transacción Completa const status = await transaction.status('token-456'); // Patpass const status = await inscription.status('patpass-token-789'); ``` -------------------------------- ### Ejemplo de Uso de TransactionDetail Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/types.md Muestra cómo crear una instancia de TransactionDetail y usarla en la creación de una transacción Webpay Plus Mall. ```javascript const { TransactionDetail, WebpayPlus } = require('transbank-sdk'); const detail = new TransactionDetail( 50000, // monto '597055555536', // código de comercio hijo 'buyOrder123', // orden de compra del hijo 3 // número de cuotas (opcional) ); const transaction = WebpayPlus.MallTransaction.buildForIntegration( '597055555535', '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C' ); await transaction.create( 'parentOrder123', 'sessionId456', 'https://example.com/return', [detail] // pasar el detalle de transacción ); ``` -------------------------------- ### Respuesta de authorize (Oneclick) Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Estructura de la respuesta para la autorización de una transacción Oneclick. ```javascript { authorization_code: '123456', card_number: '****1111', status: 'AUTHORIZED', response_code: 0, buy_order: 'parent-order', amount: 50000, installments_number: 1 } ``` -------------------------------- ### Ejemplo de Flujo Completo Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/transaccion-completa.md Ejemplo de un flujo completo para Transacción Completa. ```javascript const { TransaccionCompleta, IntegrationCommerceCodes, IntegrationApiKeys } = require('transbank-sdk'); const transaction = TransaccionCompleta.Transaction.buildForIntegration( IntegrationCommerceCodes.TRANSACCION_COMPLETA, IntegrationApiKeys.WEBPAY ); async function processPayment() { try { // 1. Crear transacción const createResponse = await transaction.create( 'order-12345', 'session-abc', 100000, 123, '4111111111111111', '12/25' ); console.log('Token:', createResponse.token); // 2. Consultar cuotas (opcional) const installmentsResponse = await transaction.installments( createResponse.token, 3 ); console.log('ID de cuotas:', installmentsResponse.id_query_installments); // 3. Confirmar const commitResponse = await transaction.commit( createResponse.token, installmentsResponse.id_query_installments ); if (commitResponse.response_code === 0) { console.log('Pago procesado exitosamente'); console.log('Código de autorización:', commitResponse.authorization_code); } } catch (error) { console.error('Error:', error.message); } } processPayment(); ``` -------------------------------- ### Importación Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/api-reference/patpass.md Importación del módulo PatpassComercio. ```javascript const { PatpassComercio } = require('transbank-sdk'); ``` -------------------------------- ### Límites de Validación Source: https://github.com/transbankdevelopers/transbank-sdk-nodejs/blob/master/_autodocs/guia-rapida.md Ejemplo de uso de constantes para verificar los límites de validación automáticos del SDK. ```javascript const { ApiConstants } = require('transbank-sdk'); // Los siguientes son los máximos permitidos: // - buyOrder: 26 caracteres // - sessionId: 61 caracteres // - returnUrl: 255 caracteres // - cardNumber: 19 caracteres // - cardExpirationDate: 5 caracteres (MM/YY) // - authorizationCode: 6 caracteres // - token: 64 caracteres // - tbkUser: 40 caracteres // - username: 40 caracteres // - email: 100 caracteres // - commerceCode: 12 caracteres ```