@npmtapi/embed 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/react.cjs +83 -0
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +16 -2
- package/dist/react.d.ts +16 -2
- package/dist/react.js +83 -0
- package/dist/react.js.map +1 -1
- package/dist/{types-BPz2Gtxx.d.cts → types-ClCjVzWi.d.cts} +97 -2
- package/dist/{types-BPz2Gtxx.d.ts → types-ClCjVzWi.d.ts} +97 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -108,6 +108,10 @@ Se requiere `identifier` + **uno de** `organization` o `companyCode`. Si se pasa
|
|
|
108
108
|
| `onAutopayActivated` | `(data) => void` | No | — | (Vista autopay) Callback cuando una nueva domiciliación queda activa (una sola vez por adhesión nueva) |
|
|
109
109
|
| `onAutopayRemoved` | `(data) => void` | No | — | (Vista autopay) Callback cuando el usuario desadhiere un medio con éxito |
|
|
110
110
|
| `onAutopayError` | `(data) => void` | No | — | (Vista autopay) Callback ante un error de carga o de desadhesión |
|
|
111
|
+
| `onDomiciliationBankSelected` | `(data) => void` | No | — | (Vista autopay) El usuario eligió su banco en el alta de domiciliación |
|
|
112
|
+
| `onDomiciliationFormCompleted` | `(data) => void` | No | — | (Vista autopay) Los datos de cuenta pasaron la validación del backend. Dispara al confirmar el método de verificación, no al salir del formulario |
|
|
113
|
+
| `onDomiciliationVerificationCompleted` | `(data) => void` | No | — | (Vista autopay) La verificación llegó a un desenlace. Solo emite al outcome final: un intento fallido con reintentos disponibles no dispara el evento |
|
|
114
|
+
| `onDomiciliationConfirmed` | `() => void` | No | — | (Vista autopay) El usuario confirmó la domiciliación. **No** significa que quedó registrada — la confirmación real llega por `onAutopayActivated` |
|
|
111
115
|
| `className` | `string` | No | — | Clases CSS del contenedor |
|
|
112
116
|
| `style` | `CSSProperties` | No | — | Estilos inline del contenedor |
|
|
113
117
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/loader.ts"],"sourcesContent":["export { loadTapipay } from \"./loader\";\nexport type {\n\tLoadTapipayOptions,\n\tTapipayAutopayActivatedEvent,\n\tTapipayAutopayAdhesionSummary,\n\tTapipayAutopayErrorEvent,\n\tTapipayAutopayLoadedEvent,\n\tTapipayAutopayMediaType,\n\tTapipayAutopayRemovedEvent,\n\tTapipayEnvironment,\n\tTapipayInstance,\n\tTapipayOptions,\n\tTapipayPaymentCancelledEvent,\n\tTapipayPaymentSubmittedEvent,\n\tTapipayPaymentWindowOpenedEvent,\n\tTapipayView,\n} from \"./types\";\n","import type {\n\tLoadTapipayOptions,\n\tTapipayEnvironment,\n\tTapipayInstance,\n} from \"./types\";\n\nconst SDK_URLS: Record<TapipayEnvironment, string> = {\n\tproduction: \"https://app.tapipay.la/embed.js\",\n\thomo: \"https://homo.tapipay.la/embed.js\",\n};\n\n// Idempotencia por entorno\nconst loadPromises = new Map<TapipayEnvironment, Promise<TapipayInstance>>();\n\n/**\n * Carga el SDK de TapiPay de forma asíncrona inyectando el script en el DOM.\n *\n * - Idempotente por entorno: múltiples llamadas con el mismo `environment` retornan la misma Promise.\n * - Si window.tapipay ya existe (script cargado sync), resuelve inmediatamente.\n * - Compatible con React Strict Mode (doble mount/unmount).\n *\n * @example\n * // Producción (default)\n * const tapipay = await loadTapipay();\n *\n * // Homologación\n * const tapipay = await loadTapipay({ environment: 'homo' });\n *\n * // Se requiere UNO de { organization, companyCode } (companyCode tiene prioridad).\n * tapipay.initialize({ container: \"#widget\", organization: \"acme\", identifier: \"CLI-001\" });\n * tapipay.initialize({ container: \"#widget\", companyCode: \"acme-mx\", identifier: \"CLI-001\" });\n */\nexport function loadTapipay(\n\toptions?: LoadTapipayOptions,\n): Promise<TapipayInstance> {\n\tconst env: TapipayEnvironment = options?.environment ?? \"production\";\n\tconst SDK_URL = SDK_URLS[env];\n\tconst SCRIPT_ID = `tapipay-embed-sdk-${env}`;\n\n\t// SSR guard\n\tif (typeof window === \"undefined\") {\n\t\treturn Promise.reject(\n\t\t\tnew Error(\"[TapiPay] loadTapipay() requires a browser environment.\"),\n\t\t);\n\t}\n\n\t// Ya cargado de forma síncrona (script tag directo)\n\tif (window.tapipay && !window.tapipay._q) {\n\t\treturn Promise.resolve(window.tapipay);\n\t}\n\n\t// Reutilizar promise existente (idempotencia por entorno)\n\tconst existing = loadPromises.get(env);\n\tif (existing) return existing;\n\n\tconst promise = new Promise<TapipayInstance>((resolve, reject) => {\n\t\t// Si ya hay un script inyectado, esperar a que cargue\n\t\tconst existingScript = document.getElementById(\n\t\t\tSCRIPT_ID,\n\t\t) as HTMLScriptElement | null;\n\n\t\tconst onLoad = () => {\n\t\t\tif (window.tapipay) {\n\t\t\t\tresolve(window.tapipay);\n\t\t\t} else {\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\"[TapiPay] El script cargó pero window.tapipay no está definido.\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tconst onError = () => {\n\t\t\tloadPromises.delete(env);\n\t\t\treject(new Error(`[TapiPay] Error al cargar el SDK desde ${SDK_URL}`));\n\t\t};\n\n\t\tif (existingScript) {\n\t\t\texistingScript.addEventListener(\"load\", onLoad);\n\t\t\texistingScript.addEventListener(\"error\", onError);\n\t\t\treturn;\n\t\t}\n\n\t\tconst script = document.createElement(\"script\");\n\t\tscript.id = SCRIPT_ID;\n\t\tscript.src = SDK_URL;\n\t\tscript.async = true;\n\t\tscript.addEventListener(\"load\", onLoad);\n\t\tscript.addEventListener(\"error\", onError);\n\t\tdocument.head.appendChild(script);\n\t});\n\n\tloadPromises.set(env, promise);\n\treturn promise;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,IAAM,WAA+C;AAAA,EACpD,YAAY;AAAA,EACZ,MAAM;AACP;AAGA,IAAM,eAAe,oBAAI,IAAkD;AAoBpE,SAAS,YACf,SAC2B;AAlC5B;AAmCC,QAAM,OAA0B,wCAAS,gBAAT,YAAwB;AACxD,QAAM,UAAU,SAAS,GAAG;AAC5B,QAAM,YAAY,qBAAqB,GAAG;AAG1C,MAAI,OAAO,WAAW,aAAa;AAClC,WAAO,QAAQ;AAAA,MACd,IAAI,MAAM,yDAAyD;AAAA,IACpE;AAAA,EACD;AAGA,MAAI,OAAO,WAAW,CAAC,OAAO,QAAQ,IAAI;AACzC,WAAO,QAAQ,QAAQ,OAAO,OAAO;AAAA,EACtC;AAGA,QAAM,WAAW,aAAa,IAAI,GAAG;AACrC,MAAI,SAAU,QAAO;AAErB,QAAM,UAAU,IAAI,QAAyB,CAAC,SAAS,WAAW;AAEjE,UAAM,iBAAiB,SAAS;AAAA,MAC/B;AAAA,IACD;AAEA,UAAM,SAAS,MAAM;AACpB,UAAI,OAAO,SAAS;AACnB,gBAAQ,OAAO,OAAO;AAAA,MACvB,OAAO;AACN;AAAA,UACC,IAAI;AAAA,YACH;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,UAAM,UAAU,MAAM;AACrB,mBAAa,OAAO,GAAG;AACvB,aAAO,IAAI,MAAM,0CAA0C,OAAO,EAAE,CAAC;AAAA,IACtE;AAEA,QAAI,gBAAgB;AACnB,qBAAe,iBAAiB,QAAQ,MAAM;AAC9C,qBAAe,iBAAiB,SAAS,OAAO;AAChD;AAAA,IACD;AAEA,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,KAAK;AACZ,WAAO,MAAM;AACb,WAAO,QAAQ;AACf,WAAO,iBAAiB,QAAQ,MAAM;AACtC,WAAO,iBAAiB,SAAS,OAAO;AACxC,aAAS,KAAK,YAAY,MAAM;AAAA,EACjC,CAAC;AAED,eAAa,IAAI,KAAK,OAAO;AAC7B,SAAO;AACR;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/loader.ts"],"sourcesContent":["export { loadTapipay } from \"./loader\";\nexport type {\n\tLoadTapipayOptions,\n\tTapipayAutopayActivatedEvent,\n\tTapipayAutopayAdhesionSummary,\n\tTapipayAutopayErrorEvent,\n\tTapipayAutopayLoadedEvent,\n\tTapipayAutopayMediaType,\n\tTapipayAutopayRemovedEvent,\n\tTapipayDomiciliationAccountCheckFailedEvent,\n\tTapipayDomiciliationAccountType,\n\tTapipayDomiciliationBankSelectedEvent,\n\tTapipayDomiciliationConfirmedEvent,\n\tTapipayDomiciliationFormCompletedEvent,\n\tTapipayDomiciliationVerificationCompletedEvent,\n\tTapipayDomiciliationVerificationMethod,\n\tTapipayEnvironment,\n\tTapipayInstance,\n\tTapipayOptions,\n\tTapipayPaymentCancelledEvent,\n\tTapipayPaymentSubmittedEvent,\n\tTapipayPaymentWindowOpenedEvent,\n\tTapipayView,\n} from \"./types\";\n","import type {\n\tLoadTapipayOptions,\n\tTapipayEnvironment,\n\tTapipayInstance,\n} from \"./types\";\n\nconst SDK_URLS: Record<TapipayEnvironment, string> = {\n\tproduction: \"https://app.tapipay.la/embed.js\",\n\thomo: \"https://homo.tapipay.la/embed.js\",\n};\n\n// Idempotencia por entorno\nconst loadPromises = new Map<TapipayEnvironment, Promise<TapipayInstance>>();\n\n/**\n * Carga el SDK de TapiPay de forma asíncrona inyectando el script en el DOM.\n *\n * - Idempotente por entorno: múltiples llamadas con el mismo `environment` retornan la misma Promise.\n * - Si window.tapipay ya existe (script cargado sync), resuelve inmediatamente.\n * - Compatible con React Strict Mode (doble mount/unmount).\n *\n * @example\n * // Producción (default)\n * const tapipay = await loadTapipay();\n *\n * // Homologación\n * const tapipay = await loadTapipay({ environment: 'homo' });\n *\n * // Se requiere UNO de { organization, companyCode } (companyCode tiene prioridad).\n * tapipay.initialize({ container: \"#widget\", organization: \"acme\", identifier: \"CLI-001\" });\n * tapipay.initialize({ container: \"#widget\", companyCode: \"acme-mx\", identifier: \"CLI-001\" });\n */\nexport function loadTapipay(\n\toptions?: LoadTapipayOptions,\n): Promise<TapipayInstance> {\n\tconst env: TapipayEnvironment = options?.environment ?? \"production\";\n\tconst SDK_URL = SDK_URLS[env];\n\tconst SCRIPT_ID = `tapipay-embed-sdk-${env}`;\n\n\t// SSR guard\n\tif (typeof window === \"undefined\") {\n\t\treturn Promise.reject(\n\t\t\tnew Error(\"[TapiPay] loadTapipay() requires a browser environment.\"),\n\t\t);\n\t}\n\n\t// Ya cargado de forma síncrona (script tag directo)\n\tif (window.tapipay && !window.tapipay._q) {\n\t\treturn Promise.resolve(window.tapipay);\n\t}\n\n\t// Reutilizar promise existente (idempotencia por entorno)\n\tconst existing = loadPromises.get(env);\n\tif (existing) return existing;\n\n\tconst promise = new Promise<TapipayInstance>((resolve, reject) => {\n\t\t// Si ya hay un script inyectado, esperar a que cargue\n\t\tconst existingScript = document.getElementById(\n\t\t\tSCRIPT_ID,\n\t\t) as HTMLScriptElement | null;\n\n\t\tconst onLoad = () => {\n\t\t\tif (window.tapipay) {\n\t\t\t\tresolve(window.tapipay);\n\t\t\t} else {\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\"[TapiPay] El script cargó pero window.tapipay no está definido.\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tconst onError = () => {\n\t\t\tloadPromises.delete(env);\n\t\t\treject(new Error(`[TapiPay] Error al cargar el SDK desde ${SDK_URL}`));\n\t\t};\n\n\t\tif (existingScript) {\n\t\t\texistingScript.addEventListener(\"load\", onLoad);\n\t\t\texistingScript.addEventListener(\"error\", onError);\n\t\t\treturn;\n\t\t}\n\n\t\tconst script = document.createElement(\"script\");\n\t\tscript.id = SCRIPT_ID;\n\t\tscript.src = SDK_URL;\n\t\tscript.async = true;\n\t\tscript.addEventListener(\"load\", onLoad);\n\t\tscript.addEventListener(\"error\", onError);\n\t\tdocument.head.appendChild(script);\n\t});\n\n\tloadPromises.set(env, promise);\n\treturn promise;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,IAAM,WAA+C;AAAA,EACpD,YAAY;AAAA,EACZ,MAAM;AACP;AAGA,IAAM,eAAe,oBAAI,IAAkD;AAoBpE,SAAS,YACf,SAC2B;AAlC5B;AAmCC,QAAM,OAA0B,wCAAS,gBAAT,YAAwB;AACxD,QAAM,UAAU,SAAS,GAAG;AAC5B,QAAM,YAAY,qBAAqB,GAAG;AAG1C,MAAI,OAAO,WAAW,aAAa;AAClC,WAAO,QAAQ;AAAA,MACd,IAAI,MAAM,yDAAyD;AAAA,IACpE;AAAA,EACD;AAGA,MAAI,OAAO,WAAW,CAAC,OAAO,QAAQ,IAAI;AACzC,WAAO,QAAQ,QAAQ,OAAO,OAAO;AAAA,EACtC;AAGA,QAAM,WAAW,aAAa,IAAI,GAAG;AACrC,MAAI,SAAU,QAAO;AAErB,QAAM,UAAU,IAAI,QAAyB,CAAC,SAAS,WAAW;AAEjE,UAAM,iBAAiB,SAAS;AAAA,MAC/B;AAAA,IACD;AAEA,UAAM,SAAS,MAAM;AACpB,UAAI,OAAO,SAAS;AACnB,gBAAQ,OAAO,OAAO;AAAA,MACvB,OAAO;AACN;AAAA,UACC,IAAI;AAAA,YACH;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,UAAM,UAAU,MAAM;AACrB,mBAAa,OAAO,GAAG;AACvB,aAAO,IAAI,MAAM,0CAA0C,OAAO,EAAE,CAAC;AAAA,IACtE;AAEA,QAAI,gBAAgB;AACnB,qBAAe,iBAAiB,QAAQ,MAAM;AAC9C,qBAAe,iBAAiB,SAAS,OAAO;AAChD;AAAA,IACD;AAEA,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,KAAK;AACZ,WAAO,MAAM;AACb,WAAO,QAAQ;AACf,WAAO,iBAAiB,QAAQ,MAAM;AACtC,WAAO,iBAAiB,SAAS,OAAO;AACxC,aAAS,KAAK,YAAY,MAAM;AAAA,EACjC,CAAC;AAED,eAAa,IAAI,KAAK,OAAO;AAC7B,SAAO;AACR;","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { L as LoadTapipayOptions, T as TapipayInstance } from './types-
|
|
2
|
-
export { a as TapipayAutopayActivatedEvent, b as TapipayAutopayAdhesionSummary, c as TapipayAutopayErrorEvent, d as TapipayAutopayLoadedEvent, e as TapipayAutopayMediaType, f as TapipayAutopayRemovedEvent, g as
|
|
1
|
+
import { L as LoadTapipayOptions, T as TapipayInstance } from './types-ClCjVzWi.cjs';
|
|
2
|
+
export { a as TapipayAutopayActivatedEvent, b as TapipayAutopayAdhesionSummary, c as TapipayAutopayErrorEvent, d as TapipayAutopayLoadedEvent, e as TapipayAutopayMediaType, f as TapipayAutopayRemovedEvent, g as TapipayDomiciliationAccountCheckFailedEvent, h as TapipayDomiciliationAccountType, i as TapipayDomiciliationBankSelectedEvent, j as TapipayDomiciliationConfirmedEvent, k as TapipayDomiciliationFormCompletedEvent, l as TapipayDomiciliationVerificationCompletedEvent, m as TapipayDomiciliationVerificationMethod, n as TapipayEnvironment, o as TapipayOptions, p as TapipayPaymentCancelledEvent, q as TapipayPaymentSubmittedEvent, r as TapipayPaymentWindowOpenedEvent, s as TapipayView } from './types-ClCjVzWi.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Carga el SDK de TapiPay de forma asíncrona inyectando el script en el DOM.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { L as LoadTapipayOptions, T as TapipayInstance } from './types-
|
|
2
|
-
export { a as TapipayAutopayActivatedEvent, b as TapipayAutopayAdhesionSummary, c as TapipayAutopayErrorEvent, d as TapipayAutopayLoadedEvent, e as TapipayAutopayMediaType, f as TapipayAutopayRemovedEvent, g as
|
|
1
|
+
import { L as LoadTapipayOptions, T as TapipayInstance } from './types-ClCjVzWi.js';
|
|
2
|
+
export { a as TapipayAutopayActivatedEvent, b as TapipayAutopayAdhesionSummary, c as TapipayAutopayErrorEvent, d as TapipayAutopayLoadedEvent, e as TapipayAutopayMediaType, f as TapipayAutopayRemovedEvent, g as TapipayDomiciliationAccountCheckFailedEvent, h as TapipayDomiciliationAccountType, i as TapipayDomiciliationBankSelectedEvent, j as TapipayDomiciliationConfirmedEvent, k as TapipayDomiciliationFormCompletedEvent, l as TapipayDomiciliationVerificationCompletedEvent, m as TapipayDomiciliationVerificationMethod, n as TapipayEnvironment, o as TapipayOptions, p as TapipayPaymentCancelledEvent, q as TapipayPaymentSubmittedEvent, r as TapipayPaymentWindowOpenedEvent, s as TapipayView } from './types-ClCjVzWi.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Carga el SDK de TapiPay de forma asíncrona inyectando el script en el DOM.
|
package/dist/react.cjs
CHANGED
|
@@ -117,6 +117,11 @@ function TapipayWidget({
|
|
|
117
117
|
onAutopayActivated,
|
|
118
118
|
onAutopayRemoved,
|
|
119
119
|
onAutopayError,
|
|
120
|
+
onDomiciliationBankSelected,
|
|
121
|
+
onDomiciliationFormCompleted,
|
|
122
|
+
onDomiciliationVerificationCompleted,
|
|
123
|
+
onDomiciliationConfirmed,
|
|
124
|
+
onDomiciliationAccountCheckFailed,
|
|
120
125
|
className,
|
|
121
126
|
style
|
|
122
127
|
}) {
|
|
@@ -128,6 +133,15 @@ function TapipayWidget({
|
|
|
128
133
|
const onAutopayActivatedRef = (0, import_react.useRef)(onAutopayActivated);
|
|
129
134
|
const onAutopayRemovedRef = (0, import_react.useRef)(onAutopayRemoved);
|
|
130
135
|
const onAutopayErrorRef = (0, import_react.useRef)(onAutopayError);
|
|
136
|
+
const onDomiciliationBankSelectedRef = (0, import_react.useRef)(onDomiciliationBankSelected);
|
|
137
|
+
const onDomiciliationFormCompletedRef = (0, import_react.useRef)(onDomiciliationFormCompleted);
|
|
138
|
+
const onDomiciliationVerificationCompletedRef = (0, import_react.useRef)(
|
|
139
|
+
onDomiciliationVerificationCompleted
|
|
140
|
+
);
|
|
141
|
+
const onDomiciliationConfirmedRef = (0, import_react.useRef)(onDomiciliationConfirmed);
|
|
142
|
+
const onDomiciliationAccountCheckFailedRef = (0, import_react.useRef)(
|
|
143
|
+
onDomiciliationAccountCheckFailed
|
|
144
|
+
);
|
|
131
145
|
(0, import_react.useEffect)(() => {
|
|
132
146
|
onPaymentWindowOpenedRef.current = onPaymentWindowOpened;
|
|
133
147
|
}, [onPaymentWindowOpened]);
|
|
@@ -149,6 +163,21 @@ function TapipayWidget({
|
|
|
149
163
|
(0, import_react.useEffect)(() => {
|
|
150
164
|
onAutopayErrorRef.current = onAutopayError;
|
|
151
165
|
}, [onAutopayError]);
|
|
166
|
+
(0, import_react.useEffect)(() => {
|
|
167
|
+
onDomiciliationBankSelectedRef.current = onDomiciliationBankSelected;
|
|
168
|
+
}, [onDomiciliationBankSelected]);
|
|
169
|
+
(0, import_react.useEffect)(() => {
|
|
170
|
+
onDomiciliationFormCompletedRef.current = onDomiciliationFormCompleted;
|
|
171
|
+
}, [onDomiciliationFormCompleted]);
|
|
172
|
+
(0, import_react.useEffect)(() => {
|
|
173
|
+
onDomiciliationVerificationCompletedRef.current = onDomiciliationVerificationCompleted;
|
|
174
|
+
}, [onDomiciliationVerificationCompleted]);
|
|
175
|
+
(0, import_react.useEffect)(() => {
|
|
176
|
+
onDomiciliationConfirmedRef.current = onDomiciliationConfirmed;
|
|
177
|
+
}, [onDomiciliationConfirmed]);
|
|
178
|
+
(0, import_react.useEffect)(() => {
|
|
179
|
+
onDomiciliationAccountCheckFailedRef.current = onDomiciliationAccountCheckFailed;
|
|
180
|
+
}, [onDomiciliationAccountCheckFailed]);
|
|
152
181
|
(0, import_react.useEffect)(() => {
|
|
153
182
|
if (!containerRef.current) return;
|
|
154
183
|
const container = containerRef.current;
|
|
@@ -182,6 +211,26 @@ function TapipayWidget({
|
|
|
182
211
|
var _a;
|
|
183
212
|
(_a = onAutopayErrorRef.current) == null ? void 0 : _a.call(onAutopayErrorRef, data);
|
|
184
213
|
};
|
|
214
|
+
const handleDomiciliationBankSelected = (data) => {
|
|
215
|
+
var _a;
|
|
216
|
+
(_a = onDomiciliationBankSelectedRef.current) == null ? void 0 : _a.call(onDomiciliationBankSelectedRef, data);
|
|
217
|
+
};
|
|
218
|
+
const handleDomiciliationFormCompleted = (data) => {
|
|
219
|
+
var _a;
|
|
220
|
+
(_a = onDomiciliationFormCompletedRef.current) == null ? void 0 : _a.call(onDomiciliationFormCompletedRef, data);
|
|
221
|
+
};
|
|
222
|
+
const handleDomiciliationVerificationCompleted = (data) => {
|
|
223
|
+
var _a;
|
|
224
|
+
(_a = onDomiciliationVerificationCompletedRef.current) == null ? void 0 : _a.call(onDomiciliationVerificationCompletedRef, data);
|
|
225
|
+
};
|
|
226
|
+
const handleDomiciliationConfirmed = (data) => {
|
|
227
|
+
var _a;
|
|
228
|
+
(_a = onDomiciliationConfirmedRef.current) == null ? void 0 : _a.call(onDomiciliationConfirmedRef, data);
|
|
229
|
+
};
|
|
230
|
+
const handleDomiciliationAccountCheckFailed = (data) => {
|
|
231
|
+
var _a;
|
|
232
|
+
(_a = onDomiciliationAccountCheckFailedRef.current) == null ? void 0 : _a.call(onDomiciliationAccountCheckFailedRef, data);
|
|
233
|
+
};
|
|
185
234
|
loadTapipay({ environment }).then((instance) => {
|
|
186
235
|
if (cancelled) return;
|
|
187
236
|
tapipayInstance = instance;
|
|
@@ -192,6 +241,20 @@ function TapipayWidget({
|
|
|
192
241
|
instance.on("autopayActivated", handleAutopayActivated);
|
|
193
242
|
instance.on("autopayRemoved", handleAutopayRemoved);
|
|
194
243
|
instance.on("autopayError", handleAutopayError);
|
|
244
|
+
instance.on("domiciliationBankSelected", handleDomiciliationBankSelected);
|
|
245
|
+
instance.on(
|
|
246
|
+
"domiciliationFormCompleted",
|
|
247
|
+
handleDomiciliationFormCompleted
|
|
248
|
+
);
|
|
249
|
+
instance.on(
|
|
250
|
+
"domiciliationVerificationCompleted",
|
|
251
|
+
handleDomiciliationVerificationCompleted
|
|
252
|
+
);
|
|
253
|
+
instance.on("domiciliationConfirmed", handleDomiciliationConfirmed);
|
|
254
|
+
instance.on(
|
|
255
|
+
"domiciliationAccountCheckFailed",
|
|
256
|
+
handleDomiciliationAccountCheckFailed
|
|
257
|
+
);
|
|
195
258
|
instance.initialize({
|
|
196
259
|
container,
|
|
197
260
|
organization,
|
|
@@ -212,6 +275,26 @@ function TapipayWidget({
|
|
|
212
275
|
tapipayInstance.off("autopayActivated", handleAutopayActivated);
|
|
213
276
|
tapipayInstance.off("autopayRemoved", handleAutopayRemoved);
|
|
214
277
|
tapipayInstance.off("autopayError", handleAutopayError);
|
|
278
|
+
tapipayInstance.off(
|
|
279
|
+
"domiciliationBankSelected",
|
|
280
|
+
handleDomiciliationBankSelected
|
|
281
|
+
);
|
|
282
|
+
tapipayInstance.off(
|
|
283
|
+
"domiciliationFormCompleted",
|
|
284
|
+
handleDomiciliationFormCompleted
|
|
285
|
+
);
|
|
286
|
+
tapipayInstance.off(
|
|
287
|
+
"domiciliationVerificationCompleted",
|
|
288
|
+
handleDomiciliationVerificationCompleted
|
|
289
|
+
);
|
|
290
|
+
tapipayInstance.off(
|
|
291
|
+
"domiciliationConfirmed",
|
|
292
|
+
handleDomiciliationConfirmed
|
|
293
|
+
);
|
|
294
|
+
tapipayInstance.off(
|
|
295
|
+
"domiciliationAccountCheckFailed",
|
|
296
|
+
handleDomiciliationAccountCheckFailed
|
|
297
|
+
);
|
|
215
298
|
tapipayInstance.destroy(container);
|
|
216
299
|
}
|
|
217
300
|
};
|
package/dist/react.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react.tsx","../src/loader.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { loadTapipay } from \"./loader\";\nimport type {\n\tLoadTapipayOptions,\n\tTapipayAutopayActivatedEvent,\n\tTapipayAutopayErrorEvent,\n\tTapipayAutopayLoadedEvent,\n\tTapipayAutopayRemovedEvent,\n\tTapipayEnvironment,\n\tTapipayInstance,\n\tTapipayOptions,\n\tTapipayPaymentCancelledEvent,\n\tTapipayPaymentSubmittedEvent,\n\tTapipayPaymentWindowOpenedEvent,\n} from \"./types\";\n\n// ─── useTapipay hook ──────────────────────────────────────────────────────────\n\n/**\n * Hook de bajo nivel que carga el SDK y retorna la instancia.\n * Útil cuando necesitas control manual sobre initialize/destroy.\n *\n * @example\n * const { tapipay, error } = useTapipay();\n * const { tapipay, error } = useTapipay({ environment: 'homo' });\n */\nexport function useTapipay(options?: LoadTapipayOptions): {\n\ttapipay: TapipayInstance | null;\n\terror: Error | null;\n} {\n\tconst [tapipay, setTapipay] = useState<TapipayInstance | null>(null);\n\tconst [error, setError] = useState<Error | null>(null);\n\tconst environment = options?.environment;\n\n\tuseEffect(() => {\n\t\tlet cancelled = false;\n\t\tloadTapipay({ environment })\n\t\t\t.then((instance) => {\n\t\t\t\tif (!cancelled) setTapipay(instance);\n\t\t\t})\n\t\t\t.catch((err: Error) => {\n\t\t\t\tif (!cancelled) setError(err);\n\t\t\t});\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [environment]);\n\n\treturn { tapipay, error };\n}\n\n// ─── TapipayWidget component ──────────────────────────────────────────────────\n\nexport interface TapipayWidgetProps extends Omit<TapipayOptions, \"container\"> {\n\t/** Entorno del SDK a cargar. Por defecto `'production'`. Usar `'homo'` para homologación. */\n\tenvironment?: TapipayEnvironment;\n\t/** Callback invocado cuando el popup de Yuno se abre exitosamente. */\n\tonPaymentWindowOpened?: (data: TapipayPaymentWindowOpenedEvent) => void;\n\t/** Callback invocado cuando el usuario completó el formulario de Yuno y fue redirigido al callback. */\n\tonPaymentSubmitted?: (data: TapipayPaymentSubmittedEvent) => void;\n\t/** Callback invocado cuando el usuario cierra el popup sin completar el pago. */\n\tonCancelled?: (data: TapipayPaymentCancelledEvent) => void;\n\t/** (Vista autopay) Callback con el conjunto de adhesiones activas; se reinvoca cuando la lista cambia. */\n\tonAutopayLoaded?: (data: TapipayAutopayLoadedEvent) => void;\n\t/** (Vista autopay) Callback cuando una nueva adhesión queda activa (una sola vez por adhesión nueva). */\n\tonAutopayActivated?: (data: TapipayAutopayActivatedEvent) => void;\n\t/** (Vista autopay) Callback cuando el usuario desadhiere un medio con éxito. */\n\tonAutopayRemoved?: (data: TapipayAutopayRemovedEvent) => void;\n\t/** (Vista autopay) Callback ante un error de carga de adhesiones o de desadhesión. */\n\tonAutopayError?: (data: TapipayAutopayErrorEvent) => void;\n\t/** Clases CSS adicionales para el contenedor del widget. */\n\tclassName?: string;\n\t/** Estilos inline adicionales para el contenedor del widget. */\n\tstyle?: React.CSSProperties;\n}\n\n/**\n * Componente React que encapsula el widget de pago TapiPay.\n *\n * Maneja internamente la carga del SDK, el ciclo de vida del widget\n * y el cleanup al desmontar. Compatible con React Strict Mode.\n *\n * Se requiere `identifier` + UNO de `{ organization, companyCode }`.\n * Si se pasan ambos, `companyCode` tiene prioridad.\n *\n * @example\n * // Vista de pagos (default)\n * <TapipayWidget\n * organization=\"acme\"\n * identifier=\"CLI-001\"\n * externalRequestId=\"FAC-2024-001\"\n * onPaymentSubmitted={(data) => console.log(\"Pago enviado\", data)}\n * onCancelled={() => console.log(\"Pago cancelado por el usuario\")}\n * />\n *\n * @example\n * // Usando companyCode en lugar de organization\n * <TapipayWidget companyCode=\"acme-mx\" identifier=\"CLI-001\" />\n *\n * @example\n * // Vista de gestión de adhesiones de autopay\n * <TapipayWidget\n * organization=\"acme\"\n * identifier=\"CLI-001\"\n * view=\"autopay\"\n * onAutopayLoaded={(data) => console.log(\"Adhesiones\", data.count)}\n * onAutopayActivated={(data) => console.log(\"Adhesión activada\", data.id)}\n * onAutopayRemoved={(data) => console.log(\"Adhesión eliminada\", data.id)}\n * />\n */\nexport function TapipayWidget({\n\torganization,\n\tcompanyCode,\n\tidentifier,\n\texternalRequestId,\n\tselectionStrategy,\n\tview,\n\tenvironment,\n\tonPaymentWindowOpened,\n\tonPaymentSubmitted,\n\tonCancelled,\n\tonAutopayLoaded,\n\tonAutopayActivated,\n\tonAutopayRemoved,\n\tonAutopayError,\n\tclassName,\n\tstyle,\n}: TapipayWidgetProps) {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\t// Refs para evitar re-renders innecesarios y closures estáticos en useEffect\n\tconst onPaymentWindowOpenedRef = useRef(onPaymentWindowOpened);\n\tconst onPaymentSubmittedRef = useRef(onPaymentSubmitted);\n\tconst onCancelledRef = useRef(onCancelled);\n\tconst onAutopayLoadedRef = useRef(onAutopayLoaded);\n\tconst onAutopayActivatedRef = useRef(onAutopayActivated);\n\tconst onAutopayRemovedRef = useRef(onAutopayRemoved);\n\tconst onAutopayErrorRef = useRef(onAutopayError);\n\n\tuseEffect(() => {\n\t\tonPaymentWindowOpenedRef.current = onPaymentWindowOpened;\n\t}, [onPaymentWindowOpened]);\n\n\tuseEffect(() => {\n\t\tonPaymentSubmittedRef.current = onPaymentSubmitted;\n\t}, [onPaymentSubmitted]);\n\n\tuseEffect(() => {\n\t\tonCancelledRef.current = onCancelled;\n\t}, [onCancelled]);\n\n\tuseEffect(() => {\n\t\tonAutopayLoadedRef.current = onAutopayLoaded;\n\t}, [onAutopayLoaded]);\n\n\tuseEffect(() => {\n\t\tonAutopayActivatedRef.current = onAutopayActivated;\n\t}, [onAutopayActivated]);\n\n\tuseEffect(() => {\n\t\tonAutopayRemovedRef.current = onAutopayRemoved;\n\t}, [onAutopayRemoved]);\n\n\tuseEffect(() => {\n\t\tonAutopayErrorRef.current = onAutopayError;\n\t}, [onAutopayError]);\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) return;\n\t\tconst container = containerRef.current;\n\n\t\tlet tapipayInstance: TapipayInstance | null = null;\n\t\tlet cancelled = false;\n\n\t\tconst handlePaymentWindowOpened = (\n\t\t\tdata: TapipayPaymentWindowOpenedEvent,\n\t\t) => {\n\t\t\tonPaymentWindowOpenedRef.current?.(data);\n\t\t};\n\t\tconst handlePaymentSubmitted = (data: TapipayPaymentSubmittedEvent) => {\n\t\t\tonPaymentSubmittedRef.current?.(data);\n\t\t};\n\t\tconst handleCancelled = (data: TapipayPaymentCancelledEvent) => {\n\t\t\tonCancelledRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayLoaded = (data: TapipayAutopayLoadedEvent) => {\n\t\t\tonAutopayLoadedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayActivated = (data: TapipayAutopayActivatedEvent) => {\n\t\t\tonAutopayActivatedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayRemoved = (data: TapipayAutopayRemovedEvent) => {\n\t\t\tonAutopayRemovedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayError = (data: TapipayAutopayErrorEvent) => {\n\t\t\tonAutopayErrorRef.current?.(data);\n\t\t};\n\n\t\tloadTapipay({ environment }).then((instance) => {\n\t\t\tif (cancelled) return;\n\t\t\ttapipayInstance = instance;\n\n\t\t\tinstance.on(\"paymentWindowOpened\", handlePaymentWindowOpened);\n\t\t\tinstance.on(\"paymentSubmitted\", handlePaymentSubmitted);\n\t\t\tinstance.on(\"paymentCancelled\", handleCancelled);\n\t\t\tinstance.on(\"autopayLoaded\", handleAutopayLoaded);\n\t\t\tinstance.on(\"autopayActivated\", handleAutopayActivated);\n\t\t\tinstance.on(\"autopayRemoved\", handleAutopayRemoved);\n\t\t\tinstance.on(\"autopayError\", handleAutopayError);\n\n\t\t\tinstance.initialize({\n\t\t\t\tcontainer,\n\t\t\t\torganization,\n\t\t\t\tcompanyCode,\n\t\t\t\tidentifier,\n\t\t\t\texternalRequestId,\n\t\t\t\tselectionStrategy,\n\t\t\t\tview,\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t\tif (tapipayInstance) {\n\t\t\t\ttapipayInstance.off(\"paymentWindowOpened\", handlePaymentWindowOpened);\n\t\t\t\ttapipayInstance.off(\"paymentSubmitted\", handlePaymentSubmitted);\n\t\t\t\ttapipayInstance.off(\"paymentCancelled\", handleCancelled);\n\t\t\t\ttapipayInstance.off(\"autopayLoaded\", handleAutopayLoaded);\n\t\t\t\ttapipayInstance.off(\"autopayActivated\", handleAutopayActivated);\n\t\t\t\ttapipayInstance.off(\"autopayRemoved\", handleAutopayRemoved);\n\t\t\t\ttapipayInstance.off(\"autopayError\", handleAutopayError);\n\t\t\t\ttapipayInstance.destroy(container);\n\t\t\t}\n\t\t};\n\t\t// El widget se re-monta si cambian los parámetros de identificación o entorno\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\torganization,\n\t\tcompanyCode,\n\t\tidentifier,\n\t\texternalRequestId,\n\t\tselectionStrategy,\n\t\tview,\n\t\tenvironment,\n\t]);\n\n\treturn <div ref={containerRef} className={className} style={style} />;\n}\n","import type {\n\tLoadTapipayOptions,\n\tTapipayEnvironment,\n\tTapipayInstance,\n} from \"./types\";\n\nconst SDK_URLS: Record<TapipayEnvironment, string> = {\n\tproduction: \"https://app.tapipay.la/embed.js\",\n\thomo: \"https://homo.tapipay.la/embed.js\",\n};\n\n// Idempotencia por entorno\nconst loadPromises = new Map<TapipayEnvironment, Promise<TapipayInstance>>();\n\n/**\n * Carga el SDK de TapiPay de forma asíncrona inyectando el script en el DOM.\n *\n * - Idempotente por entorno: múltiples llamadas con el mismo `environment` retornan la misma Promise.\n * - Si window.tapipay ya existe (script cargado sync), resuelve inmediatamente.\n * - Compatible con React Strict Mode (doble mount/unmount).\n *\n * @example\n * // Producción (default)\n * const tapipay = await loadTapipay();\n *\n * // Homologación\n * const tapipay = await loadTapipay({ environment: 'homo' });\n *\n * // Se requiere UNO de { organization, companyCode } (companyCode tiene prioridad).\n * tapipay.initialize({ container: \"#widget\", organization: \"acme\", identifier: \"CLI-001\" });\n * tapipay.initialize({ container: \"#widget\", companyCode: \"acme-mx\", identifier: \"CLI-001\" });\n */\nexport function loadTapipay(\n\toptions?: LoadTapipayOptions,\n): Promise<TapipayInstance> {\n\tconst env: TapipayEnvironment = options?.environment ?? \"production\";\n\tconst SDK_URL = SDK_URLS[env];\n\tconst SCRIPT_ID = `tapipay-embed-sdk-${env}`;\n\n\t// SSR guard\n\tif (typeof window === \"undefined\") {\n\t\treturn Promise.reject(\n\t\t\tnew Error(\"[TapiPay] loadTapipay() requires a browser environment.\"),\n\t\t);\n\t}\n\n\t// Ya cargado de forma síncrona (script tag directo)\n\tif (window.tapipay && !window.tapipay._q) {\n\t\treturn Promise.resolve(window.tapipay);\n\t}\n\n\t// Reutilizar promise existente (idempotencia por entorno)\n\tconst existing = loadPromises.get(env);\n\tif (existing) return existing;\n\n\tconst promise = new Promise<TapipayInstance>((resolve, reject) => {\n\t\t// Si ya hay un script inyectado, esperar a que cargue\n\t\tconst existingScript = document.getElementById(\n\t\t\tSCRIPT_ID,\n\t\t) as HTMLScriptElement | null;\n\n\t\tconst onLoad = () => {\n\t\t\tif (window.tapipay) {\n\t\t\t\tresolve(window.tapipay);\n\t\t\t} else {\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\"[TapiPay] El script cargó pero window.tapipay no está definido.\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tconst onError = () => {\n\t\t\tloadPromises.delete(env);\n\t\t\treject(new Error(`[TapiPay] Error al cargar el SDK desde ${SDK_URL}`));\n\t\t};\n\n\t\tif (existingScript) {\n\t\t\texistingScript.addEventListener(\"load\", onLoad);\n\t\t\texistingScript.addEventListener(\"error\", onError);\n\t\t\treturn;\n\t\t}\n\n\t\tconst script = document.createElement(\"script\");\n\t\tscript.id = SCRIPT_ID;\n\t\tscript.src = SDK_URL;\n\t\tscript.async = true;\n\t\tscript.addEventListener(\"load\", onLoad);\n\t\tscript.addEventListener(\"error\", onError);\n\t\tdocument.head.appendChild(script);\n\t});\n\n\tloadPromises.set(env, promise);\n\treturn promise;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/react.tsx","../src/loader.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { loadTapipay } from \"./loader\";\nimport type {\n\tLoadTapipayOptions,\n\tTapipayAutopayActivatedEvent,\n\tTapipayAutopayErrorEvent,\n\tTapipayAutopayLoadedEvent,\n\tTapipayAutopayRemovedEvent,\n\tTapipayDomiciliationAccountCheckFailedEvent,\n\tTapipayDomiciliationBankSelectedEvent,\n\tTapipayDomiciliationConfirmedEvent,\n\tTapipayDomiciliationFormCompletedEvent,\n\tTapipayDomiciliationVerificationCompletedEvent,\n\tTapipayEnvironment,\n\tTapipayInstance,\n\tTapipayOptions,\n\tTapipayPaymentCancelledEvent,\n\tTapipayPaymentSubmittedEvent,\n\tTapipayPaymentWindowOpenedEvent,\n} from \"./types\";\n\n// ─── useTapipay hook ──────────────────────────────────────────────────────────\n\n/**\n * Hook de bajo nivel que carga el SDK y retorna la instancia.\n * Útil cuando necesitas control manual sobre initialize/destroy.\n *\n * @example\n * const { tapipay, error } = useTapipay();\n * const { tapipay, error } = useTapipay({ environment: 'homo' });\n */\nexport function useTapipay(options?: LoadTapipayOptions): {\n\ttapipay: TapipayInstance | null;\n\terror: Error | null;\n} {\n\tconst [tapipay, setTapipay] = useState<TapipayInstance | null>(null);\n\tconst [error, setError] = useState<Error | null>(null);\n\tconst environment = options?.environment;\n\n\tuseEffect(() => {\n\t\tlet cancelled = false;\n\t\tloadTapipay({ environment })\n\t\t\t.then((instance) => {\n\t\t\t\tif (!cancelled) setTapipay(instance);\n\t\t\t})\n\t\t\t.catch((err: Error) => {\n\t\t\t\tif (!cancelled) setError(err);\n\t\t\t});\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [environment]);\n\n\treturn { tapipay, error };\n}\n\n// ─── TapipayWidget component ──────────────────────────────────────────────────\n\nexport interface TapipayWidgetProps extends Omit<TapipayOptions, \"container\"> {\n\t/** Entorno del SDK a cargar. Por defecto `'production'`. Usar `'homo'` para homologación. */\n\tenvironment?: TapipayEnvironment;\n\t/** Callback invocado cuando el popup de Yuno se abre exitosamente. */\n\tonPaymentWindowOpened?: (data: TapipayPaymentWindowOpenedEvent) => void;\n\t/** Callback invocado cuando el usuario completó el formulario de Yuno y fue redirigido al callback. */\n\tonPaymentSubmitted?: (data: TapipayPaymentSubmittedEvent) => void;\n\t/** Callback invocado cuando el usuario cierra el popup sin completar el pago. */\n\tonCancelled?: (data: TapipayPaymentCancelledEvent) => void;\n\t/** (Vista autopay) Callback con el conjunto de adhesiones activas; se reinvoca cuando la lista cambia. */\n\tonAutopayLoaded?: (data: TapipayAutopayLoadedEvent) => void;\n\t/** (Vista autopay) Callback cuando una nueva adhesión queda activa (una sola vez por adhesión nueva). */\n\tonAutopayActivated?: (data: TapipayAutopayActivatedEvent) => void;\n\t/** (Vista autopay) Callback cuando el usuario desadhiere un medio con éxito. */\n\tonAutopayRemoved?: (data: TapipayAutopayRemovedEvent) => void;\n\t/** (Vista autopay) Callback ante un error de carga de adhesiones o de desadhesión. */\n\tonAutopayError?: (data: TapipayAutopayErrorEvent) => void;\n\t/** (Vista autopay) El usuario eligió su banco en el alta de domiciliación. Emite en cada cambio de selección. */\n\tonDomiciliationBankSelected?: (\n\t\tdata: TapipayDomiciliationBankSelectedEvent,\n\t) => void;\n\t/** (Vista autopay) Los datos de la cuenta pasaron la validación del backend. Ojo: dispara al confirmar el método de verificación, no al salir del formulario. */\n\tonDomiciliationFormCompleted?: (\n\t\tdata: TapipayDomiciliationFormCompletedEvent,\n\t) => void;\n\t/** (Vista autopay) La verificación llegó a un desenlace. Solo emite al outcome final: un intento fallido con reintentos disponibles NO dispara el evento. */\n\tonDomiciliationVerificationCompleted?: (\n\t\tdata: TapipayDomiciliationVerificationCompletedEvent,\n\t) => void;\n\t/** (Vista autopay) El usuario confirmó la domiciliación. NO significa que quedó registrada — la confirmación real llega por `onAutopayActivated`. */\n\tonDomiciliationConfirmed?: (data: TapipayDomiciliationConfirmedEvent) => void;\n\t/** (Vista autopay) El chequeo en vivo (debounceado) de la CLABE/tarjeta rechazó el valor actual. No es un hito: puede dispararse cero, una o muchas veces. */\n\tonDomiciliationAccountCheckFailed?: (\n\t\tdata: TapipayDomiciliationAccountCheckFailedEvent,\n\t) => void;\n\t/** Clases CSS adicionales para el contenedor del widget. */\n\tclassName?: string;\n\t/** Estilos inline adicionales para el contenedor del widget. */\n\tstyle?: React.CSSProperties;\n}\n\n/**\n * Componente React que encapsula el widget de pago TapiPay.\n *\n * Maneja internamente la carga del SDK, el ciclo de vida del widget\n * y el cleanup al desmontar. Compatible con React Strict Mode.\n *\n * Se requiere `identifier` + UNO de `{ organization, companyCode }`.\n * Si se pasan ambos, `companyCode` tiene prioridad.\n *\n * @example\n * // Vista de pagos (default)\n * <TapipayWidget\n * organization=\"acme\"\n * identifier=\"CLI-001\"\n * externalRequestId=\"FAC-2024-001\"\n * onPaymentSubmitted={(data) => console.log(\"Pago enviado\", data)}\n * onCancelled={() => console.log(\"Pago cancelado por el usuario\")}\n * />\n *\n * @example\n * // Usando companyCode en lugar de organization\n * <TapipayWidget companyCode=\"acme-mx\" identifier=\"CLI-001\" />\n *\n * @example\n * // Vista de gestión de adhesiones de autopay\n * <TapipayWidget\n * organization=\"acme\"\n * identifier=\"CLI-001\"\n * view=\"autopay\"\n * onAutopayLoaded={(data) => console.log(\"Adhesiones\", data.count)}\n * onAutopayActivated={(data) => console.log(\"Adhesión activada\", data.id)}\n * onAutopayRemoved={(data) => console.log(\"Adhesión eliminada\", data.id)}\n * onDomiciliationBankSelected={(data) => console.log(\"Banco\", data.name)}\n * onDomiciliationFormCompleted={(data) => console.log(\"Cuenta ****\" + data.lastFour)}\n * onDomiciliationVerificationCompleted={(data) => console.log(\"Verificación\", data.outcome)}\n * onDomiciliationConfirmed={() => console.log(\"Enviado — esperar onAutopayActivated\")}\n * />\n */\nexport function TapipayWidget({\n\torganization,\n\tcompanyCode,\n\tidentifier,\n\texternalRequestId,\n\tselectionStrategy,\n\tview,\n\tenvironment,\n\tonPaymentWindowOpened,\n\tonPaymentSubmitted,\n\tonCancelled,\n\tonAutopayLoaded,\n\tonAutopayActivated,\n\tonAutopayRemoved,\n\tonAutopayError,\n\tonDomiciliationBankSelected,\n\tonDomiciliationFormCompleted,\n\tonDomiciliationVerificationCompleted,\n\tonDomiciliationConfirmed,\n\tonDomiciliationAccountCheckFailed,\n\tclassName,\n\tstyle,\n}: TapipayWidgetProps) {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\t// Refs para evitar re-renders innecesarios y closures estáticos en useEffect\n\tconst onPaymentWindowOpenedRef = useRef(onPaymentWindowOpened);\n\tconst onPaymentSubmittedRef = useRef(onPaymentSubmitted);\n\tconst onCancelledRef = useRef(onCancelled);\n\tconst onAutopayLoadedRef = useRef(onAutopayLoaded);\n\tconst onAutopayActivatedRef = useRef(onAutopayActivated);\n\tconst onAutopayRemovedRef = useRef(onAutopayRemoved);\n\tconst onAutopayErrorRef = useRef(onAutopayError);\n\tconst onDomiciliationBankSelectedRef = useRef(onDomiciliationBankSelected);\n\tconst onDomiciliationFormCompletedRef = useRef(onDomiciliationFormCompleted);\n\tconst onDomiciliationVerificationCompletedRef = useRef(\n\t\tonDomiciliationVerificationCompleted,\n\t);\n\tconst onDomiciliationConfirmedRef = useRef(onDomiciliationConfirmed);\n\tconst onDomiciliationAccountCheckFailedRef = useRef(\n\t\tonDomiciliationAccountCheckFailed,\n\t);\n\n\tuseEffect(() => {\n\t\tonPaymentWindowOpenedRef.current = onPaymentWindowOpened;\n\t}, [onPaymentWindowOpened]);\n\n\tuseEffect(() => {\n\t\tonPaymentSubmittedRef.current = onPaymentSubmitted;\n\t}, [onPaymentSubmitted]);\n\n\tuseEffect(() => {\n\t\tonCancelledRef.current = onCancelled;\n\t}, [onCancelled]);\n\n\tuseEffect(() => {\n\t\tonAutopayLoadedRef.current = onAutopayLoaded;\n\t}, [onAutopayLoaded]);\n\n\tuseEffect(() => {\n\t\tonAutopayActivatedRef.current = onAutopayActivated;\n\t}, [onAutopayActivated]);\n\n\tuseEffect(() => {\n\t\tonAutopayRemovedRef.current = onAutopayRemoved;\n\t}, [onAutopayRemoved]);\n\n\tuseEffect(() => {\n\t\tonAutopayErrorRef.current = onAutopayError;\n\t}, [onAutopayError]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationBankSelectedRef.current = onDomiciliationBankSelected;\n\t}, [onDomiciliationBankSelected]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationFormCompletedRef.current = onDomiciliationFormCompleted;\n\t}, [onDomiciliationFormCompleted]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationVerificationCompletedRef.current =\n\t\t\tonDomiciliationVerificationCompleted;\n\t}, [onDomiciliationVerificationCompleted]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationConfirmedRef.current = onDomiciliationConfirmed;\n\t}, [onDomiciliationConfirmed]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationAccountCheckFailedRef.current =\n\t\t\tonDomiciliationAccountCheckFailed;\n\t}, [onDomiciliationAccountCheckFailed]);\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) return;\n\t\tconst container = containerRef.current;\n\n\t\tlet tapipayInstance: TapipayInstance | null = null;\n\t\tlet cancelled = false;\n\n\t\tconst handlePaymentWindowOpened = (\n\t\t\tdata: TapipayPaymentWindowOpenedEvent,\n\t\t) => {\n\t\t\tonPaymentWindowOpenedRef.current?.(data);\n\t\t};\n\t\tconst handlePaymentSubmitted = (data: TapipayPaymentSubmittedEvent) => {\n\t\t\tonPaymentSubmittedRef.current?.(data);\n\t\t};\n\t\tconst handleCancelled = (data: TapipayPaymentCancelledEvent) => {\n\t\t\tonCancelledRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayLoaded = (data: TapipayAutopayLoadedEvent) => {\n\t\t\tonAutopayLoadedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayActivated = (data: TapipayAutopayActivatedEvent) => {\n\t\t\tonAutopayActivatedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayRemoved = (data: TapipayAutopayRemovedEvent) => {\n\t\t\tonAutopayRemovedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayError = (data: TapipayAutopayErrorEvent) => {\n\t\t\tonAutopayErrorRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationBankSelected = (\n\t\t\tdata: TapipayDomiciliationBankSelectedEvent,\n\t\t) => {\n\t\t\tonDomiciliationBankSelectedRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationFormCompleted = (\n\t\t\tdata: TapipayDomiciliationFormCompletedEvent,\n\t\t) => {\n\t\t\tonDomiciliationFormCompletedRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationVerificationCompleted = (\n\t\t\tdata: TapipayDomiciliationVerificationCompletedEvent,\n\t\t) => {\n\t\t\tonDomiciliationVerificationCompletedRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationConfirmed = (\n\t\t\tdata: TapipayDomiciliationConfirmedEvent,\n\t\t) => {\n\t\t\tonDomiciliationConfirmedRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationAccountCheckFailed = (\n\t\t\tdata: TapipayDomiciliationAccountCheckFailedEvent,\n\t\t) => {\n\t\t\tonDomiciliationAccountCheckFailedRef.current?.(data);\n\t\t};\n\n\t\tloadTapipay({ environment }).then((instance) => {\n\t\t\tif (cancelled) return;\n\t\t\ttapipayInstance = instance;\n\n\t\t\tinstance.on(\"paymentWindowOpened\", handlePaymentWindowOpened);\n\t\t\tinstance.on(\"paymentSubmitted\", handlePaymentSubmitted);\n\t\t\tinstance.on(\"paymentCancelled\", handleCancelled);\n\t\t\tinstance.on(\"autopayLoaded\", handleAutopayLoaded);\n\t\t\tinstance.on(\"autopayActivated\", handleAutopayActivated);\n\t\t\tinstance.on(\"autopayRemoved\", handleAutopayRemoved);\n\t\t\tinstance.on(\"autopayError\", handleAutopayError);\n\t\t\tinstance.on(\"domiciliationBankSelected\", handleDomiciliationBankSelected);\n\t\t\tinstance.on(\n\t\t\t\t\"domiciliationFormCompleted\",\n\t\t\t\thandleDomiciliationFormCompleted,\n\t\t\t);\n\t\t\tinstance.on(\n\t\t\t\t\"domiciliationVerificationCompleted\",\n\t\t\t\thandleDomiciliationVerificationCompleted,\n\t\t\t);\n\t\t\tinstance.on(\"domiciliationConfirmed\", handleDomiciliationConfirmed);\n\t\t\tinstance.on(\n\t\t\t\t\"domiciliationAccountCheckFailed\",\n\t\t\t\thandleDomiciliationAccountCheckFailed,\n\t\t\t);\n\n\t\t\tinstance.initialize({\n\t\t\t\tcontainer,\n\t\t\t\torganization,\n\t\t\t\tcompanyCode,\n\t\t\t\tidentifier,\n\t\t\t\texternalRequestId,\n\t\t\t\tselectionStrategy,\n\t\t\t\tview,\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t\tif (tapipayInstance) {\n\t\t\t\ttapipayInstance.off(\"paymentWindowOpened\", handlePaymentWindowOpened);\n\t\t\t\ttapipayInstance.off(\"paymentSubmitted\", handlePaymentSubmitted);\n\t\t\t\ttapipayInstance.off(\"paymentCancelled\", handleCancelled);\n\t\t\t\ttapipayInstance.off(\"autopayLoaded\", handleAutopayLoaded);\n\t\t\t\ttapipayInstance.off(\"autopayActivated\", handleAutopayActivated);\n\t\t\t\ttapipayInstance.off(\"autopayRemoved\", handleAutopayRemoved);\n\t\t\t\ttapipayInstance.off(\"autopayError\", handleAutopayError);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationBankSelected\",\n\t\t\t\t\thandleDomiciliationBankSelected,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationFormCompleted\",\n\t\t\t\t\thandleDomiciliationFormCompleted,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationVerificationCompleted\",\n\t\t\t\t\thandleDomiciliationVerificationCompleted,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationConfirmed\",\n\t\t\t\t\thandleDomiciliationConfirmed,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationAccountCheckFailed\",\n\t\t\t\t\thandleDomiciliationAccountCheckFailed,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.destroy(container);\n\t\t\t}\n\t\t};\n\t\t// El widget se re-monta si cambian los parámetros de identificación o entorno\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\torganization,\n\t\tcompanyCode,\n\t\tidentifier,\n\t\texternalRequestId,\n\t\tselectionStrategy,\n\t\tview,\n\t\tenvironment,\n\t]);\n\n\treturn <div ref={containerRef} className={className} style={style} />;\n}\n","import type {\n\tLoadTapipayOptions,\n\tTapipayEnvironment,\n\tTapipayInstance,\n} from \"./types\";\n\nconst SDK_URLS: Record<TapipayEnvironment, string> = {\n\tproduction: \"https://app.tapipay.la/embed.js\",\n\thomo: \"https://homo.tapipay.la/embed.js\",\n};\n\n// Idempotencia por entorno\nconst loadPromises = new Map<TapipayEnvironment, Promise<TapipayInstance>>();\n\n/**\n * Carga el SDK de TapiPay de forma asíncrona inyectando el script en el DOM.\n *\n * - Idempotente por entorno: múltiples llamadas con el mismo `environment` retornan la misma Promise.\n * - Si window.tapipay ya existe (script cargado sync), resuelve inmediatamente.\n * - Compatible con React Strict Mode (doble mount/unmount).\n *\n * @example\n * // Producción (default)\n * const tapipay = await loadTapipay();\n *\n * // Homologación\n * const tapipay = await loadTapipay({ environment: 'homo' });\n *\n * // Se requiere UNO de { organization, companyCode } (companyCode tiene prioridad).\n * tapipay.initialize({ container: \"#widget\", organization: \"acme\", identifier: \"CLI-001\" });\n * tapipay.initialize({ container: \"#widget\", companyCode: \"acme-mx\", identifier: \"CLI-001\" });\n */\nexport function loadTapipay(\n\toptions?: LoadTapipayOptions,\n): Promise<TapipayInstance> {\n\tconst env: TapipayEnvironment = options?.environment ?? \"production\";\n\tconst SDK_URL = SDK_URLS[env];\n\tconst SCRIPT_ID = `tapipay-embed-sdk-${env}`;\n\n\t// SSR guard\n\tif (typeof window === \"undefined\") {\n\t\treturn Promise.reject(\n\t\t\tnew Error(\"[TapiPay] loadTapipay() requires a browser environment.\"),\n\t\t);\n\t}\n\n\t// Ya cargado de forma síncrona (script tag directo)\n\tif (window.tapipay && !window.tapipay._q) {\n\t\treturn Promise.resolve(window.tapipay);\n\t}\n\n\t// Reutilizar promise existente (idempotencia por entorno)\n\tconst existing = loadPromises.get(env);\n\tif (existing) return existing;\n\n\tconst promise = new Promise<TapipayInstance>((resolve, reject) => {\n\t\t// Si ya hay un script inyectado, esperar a que cargue\n\t\tconst existingScript = document.getElementById(\n\t\t\tSCRIPT_ID,\n\t\t) as HTMLScriptElement | null;\n\n\t\tconst onLoad = () => {\n\t\t\tif (window.tapipay) {\n\t\t\t\tresolve(window.tapipay);\n\t\t\t} else {\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\"[TapiPay] El script cargó pero window.tapipay no está definido.\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tconst onError = () => {\n\t\t\tloadPromises.delete(env);\n\t\t\treject(new Error(`[TapiPay] Error al cargar el SDK desde ${SDK_URL}`));\n\t\t};\n\n\t\tif (existingScript) {\n\t\t\texistingScript.addEventListener(\"load\", onLoad);\n\t\t\texistingScript.addEventListener(\"error\", onError);\n\t\t\treturn;\n\t\t}\n\n\t\tconst script = document.createElement(\"script\");\n\t\tscript.id = SCRIPT_ID;\n\t\tscript.src = SDK_URL;\n\t\tscript.async = true;\n\t\tscript.addEventListener(\"load\", onLoad);\n\t\tscript.addEventListener(\"error\", onError);\n\t\tdocument.head.appendChild(script);\n\t});\n\n\tloadPromises.set(env, promise);\n\treturn promise;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4C;;;ACM5C,IAAM,WAA+C;AAAA,EACpD,YAAY;AAAA,EACZ,MAAM;AACP;AAGA,IAAM,eAAe,oBAAI,IAAkD;AAoBpE,SAAS,YACf,SAC2B;AAlC5B;AAmCC,QAAM,OAA0B,wCAAS,gBAAT,YAAwB;AACxD,QAAM,UAAU,SAAS,GAAG;AAC5B,QAAM,YAAY,qBAAqB,GAAG;AAG1C,MAAI,OAAO,WAAW,aAAa;AAClC,WAAO,QAAQ;AAAA,MACd,IAAI,MAAM,yDAAyD;AAAA,IACpE;AAAA,EACD;AAGA,MAAI,OAAO,WAAW,CAAC,OAAO,QAAQ,IAAI;AACzC,WAAO,QAAQ,QAAQ,OAAO,OAAO;AAAA,EACtC;AAGA,QAAM,WAAW,aAAa,IAAI,GAAG;AACrC,MAAI,SAAU,QAAO;AAErB,QAAM,UAAU,IAAI,QAAyB,CAAC,SAAS,WAAW;AAEjE,UAAM,iBAAiB,SAAS;AAAA,MAC/B;AAAA,IACD;AAEA,UAAM,SAAS,MAAM;AACpB,UAAI,OAAO,SAAS;AACnB,gBAAQ,OAAO,OAAO;AAAA,MACvB,OAAO;AACN;AAAA,UACC,IAAI;AAAA,YACH;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,UAAM,UAAU,MAAM;AACrB,mBAAa,OAAO,GAAG;AACvB,aAAO,IAAI,MAAM,0CAA0C,OAAO,EAAE,CAAC;AAAA,IACtE;AAEA,QAAI,gBAAgB;AACnB,qBAAe,iBAAiB,QAAQ,MAAM;AAC9C,qBAAe,iBAAiB,SAAS,OAAO;AAChD;AAAA,IACD;AAEA,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,KAAK;AACZ,WAAO,MAAM;AACb,WAAO,QAAQ;AACf,WAAO,iBAAiB,QAAQ,MAAM;AACtC,WAAO,iBAAiB,SAAS,OAAO;AACxC,aAAS,KAAK,YAAY,MAAM;AAAA,EACjC,CAAC;AAED,eAAa,IAAI,KAAK,OAAO;AAC7B,SAAO;AACR;;;ADgRQ;AAhVD,SAAS,WAAW,SAGzB;AACD,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAiC,IAAI;AACnE,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAuB,IAAI;AACrD,QAAM,cAAc,mCAAS;AAE7B,8BAAU,MAAM;AACf,QAAI,YAAY;AAChB,gBAAY,EAAE,YAAY,CAAC,EACzB,KAAK,CAAC,aAAa;AACnB,UAAI,CAAC,UAAW,YAAW,QAAQ;AAAA,IACpC,CAAC,EACA,MAAM,CAAC,QAAe;AACtB,UAAI,CAAC,UAAW,UAAS,GAAG;AAAA,IAC7B,CAAC;AACF,WAAO,MAAM;AACZ,kBAAY;AAAA,IACb;AAAA,EACD,GAAG,CAAC,WAAW,CAAC;AAEhB,SAAO,EAAE,SAAS,MAAM;AACzB;AAmFO,SAAS,cAAc;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAuB;AACtB,QAAM,mBAAe,qBAAuB,IAAI;AAEhD,QAAM,+BAA2B,qBAAO,qBAAqB;AAC7D,QAAM,4BAAwB,qBAAO,kBAAkB;AACvD,QAAM,qBAAiB,qBAAO,WAAW;AACzC,QAAM,yBAAqB,qBAAO,eAAe;AACjD,QAAM,4BAAwB,qBAAO,kBAAkB;AACvD,QAAM,0BAAsB,qBAAO,gBAAgB;AACnD,QAAM,wBAAoB,qBAAO,cAAc;AAC/C,QAAM,qCAAiC,qBAAO,2BAA2B;AACzE,QAAM,sCAAkC,qBAAO,4BAA4B;AAC3E,QAAM,8CAA0C;AAAA,IAC/C;AAAA,EACD;AACA,QAAM,kCAA8B,qBAAO,wBAAwB;AACnE,QAAM,2CAAuC;AAAA,IAC5C;AAAA,EACD;AAEA,8BAAU,MAAM;AACf,6BAAyB,UAAU;AAAA,EACpC,GAAG,CAAC,qBAAqB,CAAC;AAE1B,8BAAU,MAAM;AACf,0BAAsB,UAAU;AAAA,EACjC,GAAG,CAAC,kBAAkB,CAAC;AAEvB,8BAAU,MAAM;AACf,mBAAe,UAAU;AAAA,EAC1B,GAAG,CAAC,WAAW,CAAC;AAEhB,8BAAU,MAAM;AACf,uBAAmB,UAAU;AAAA,EAC9B,GAAG,CAAC,eAAe,CAAC;AAEpB,8BAAU,MAAM;AACf,0BAAsB,UAAU;AAAA,EACjC,GAAG,CAAC,kBAAkB,CAAC;AAEvB,8BAAU,MAAM;AACf,wBAAoB,UAAU;AAAA,EAC/B,GAAG,CAAC,gBAAgB,CAAC;AAErB,8BAAU,MAAM;AACf,sBAAkB,UAAU;AAAA,EAC7B,GAAG,CAAC,cAAc,CAAC;AAEnB,8BAAU,MAAM;AACf,mCAA+B,UAAU;AAAA,EAC1C,GAAG,CAAC,2BAA2B,CAAC;AAEhC,8BAAU,MAAM;AACf,oCAAgC,UAAU;AAAA,EAC3C,GAAG,CAAC,4BAA4B,CAAC;AAEjC,8BAAU,MAAM;AACf,4CAAwC,UACvC;AAAA,EACF,GAAG,CAAC,oCAAoC,CAAC;AAEzC,8BAAU,MAAM;AACf,gCAA4B,UAAU;AAAA,EACvC,GAAG,CAAC,wBAAwB,CAAC;AAE7B,8BAAU,MAAM;AACf,yCAAqC,UACpC;AAAA,EACF,GAAG,CAAC,iCAAiC,CAAC;AAEtC,8BAAU,MAAM;AACf,QAAI,CAAC,aAAa,QAAS;AAC3B,UAAM,YAAY,aAAa;AAE/B,QAAI,kBAA0C;AAC9C,QAAI,YAAY;AAEhB,UAAM,4BAA4B,CACjC,SACI;AA9OP;AA+OG,qCAAyB,YAAzB,kDAAmC;AAAA,IACpC;AACA,UAAM,yBAAyB,CAAC,SAAuC;AAjPzE;AAkPG,kCAAsB,YAAtB,+CAAgC;AAAA,IACjC;AACA,UAAM,kBAAkB,CAAC,SAAuC;AApPlE;AAqPG,2BAAe,YAAf,wCAAyB;AAAA,IAC1B;AACA,UAAM,sBAAsB,CAAC,SAAoC;AAvPnE;AAwPG,+BAAmB,YAAnB,4CAA6B;AAAA,IAC9B;AACA,UAAM,yBAAyB,CAAC,SAAuC;AA1PzE;AA2PG,kCAAsB,YAAtB,+CAAgC;AAAA,IACjC;AACA,UAAM,uBAAuB,CAAC,SAAqC;AA7PrE;AA8PG,gCAAoB,YAApB,6CAA8B;AAAA,IAC/B;AACA,UAAM,qBAAqB,CAAC,SAAmC;AAhQjE;AAiQG,8BAAkB,YAAlB,2CAA4B;AAAA,IAC7B;AACA,UAAM,kCAAkC,CACvC,SACI;AArQP;AAsQG,2CAA+B,YAA/B,wDAAyC;AAAA,IAC1C;AACA,UAAM,mCAAmC,CACxC,SACI;AA1QP;AA2QG,4CAAgC,YAAhC,yDAA0C;AAAA,IAC3C;AACA,UAAM,2CAA2C,CAChD,SACI;AA/QP;AAgRG,oDAAwC,YAAxC,iEAAkD;AAAA,IACnD;AACA,UAAM,+BAA+B,CACpC,SACI;AApRP;AAqRG,wCAA4B,YAA5B,qDAAsC;AAAA,IACvC;AACA,UAAM,wCAAwC,CAC7C,SACI;AAzRP;AA0RG,iDAAqC,YAArC,8DAA+C;AAAA,IAChD;AAEA,gBAAY,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa;AAC/C,UAAI,UAAW;AACf,wBAAkB;AAElB,eAAS,GAAG,uBAAuB,yBAAyB;AAC5D,eAAS,GAAG,oBAAoB,sBAAsB;AACtD,eAAS,GAAG,oBAAoB,eAAe;AAC/C,eAAS,GAAG,iBAAiB,mBAAmB;AAChD,eAAS,GAAG,oBAAoB,sBAAsB;AACtD,eAAS,GAAG,kBAAkB,oBAAoB;AAClD,eAAS,GAAG,gBAAgB,kBAAkB;AAC9C,eAAS,GAAG,6BAA6B,+BAA+B;AACxE,eAAS;AAAA,QACR;AAAA,QACA;AAAA,MACD;AACA,eAAS;AAAA,QACR;AAAA,QACA;AAAA,MACD;AACA,eAAS,GAAG,0BAA0B,4BAA4B;AAClE,eAAS;AAAA,QACR;AAAA,QACA;AAAA,MACD;AAEA,eAAS,WAAW;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACZ,kBAAY;AACZ,UAAI,iBAAiB;AACpB,wBAAgB,IAAI,uBAAuB,yBAAyB;AACpE,wBAAgB,IAAI,oBAAoB,sBAAsB;AAC9D,wBAAgB,IAAI,oBAAoB,eAAe;AACvD,wBAAgB,IAAI,iBAAiB,mBAAmB;AACxD,wBAAgB,IAAI,oBAAoB,sBAAsB;AAC9D,wBAAgB,IAAI,kBAAkB,oBAAoB;AAC1D,wBAAgB,IAAI,gBAAgB,kBAAkB;AACtD,wBAAgB;AAAA,UACf;AAAA,UACA;AAAA,QACD;AACA,wBAAgB;AAAA,UACf;AAAA,UACA;AAAA,QACD;AACA,wBAAgB;AAAA,UACf;AAAA,UACA;AAAA,QACD;AACA,wBAAgB;AAAA,UACf;AAAA,UACA;AAAA,QACD;AACA,wBAAgB;AAAA,UACf;AAAA,UACA;AAAA,QACD;AACA,wBAAgB,QAAQ,SAAS;AAAA,MAClC;AAAA,IACD;AAAA,EAGD,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAED,SAAO,4CAAC,SAAI,KAAK,cAAc,WAAsB,OAAc;AACpE;","names":[]}
|
package/dist/react.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { o as TapipayOptions, n as TapipayEnvironment, r as TapipayPaymentWindowOpenedEvent, q as TapipayPaymentSubmittedEvent, p as TapipayPaymentCancelledEvent, d as TapipayAutopayLoadedEvent, a as TapipayAutopayActivatedEvent, f as TapipayAutopayRemovedEvent, c as TapipayAutopayErrorEvent, i as TapipayDomiciliationBankSelectedEvent, k as TapipayDomiciliationFormCompletedEvent, l as TapipayDomiciliationVerificationCompletedEvent, j as TapipayDomiciliationConfirmedEvent, g as TapipayDomiciliationAccountCheckFailedEvent, L as LoadTapipayOptions, T as TapipayInstance } from './types-ClCjVzWi.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Hook de bajo nivel que carga el SDK y retorna la instancia.
|
|
@@ -30,6 +30,16 @@ interface TapipayWidgetProps extends Omit<TapipayOptions, "container"> {
|
|
|
30
30
|
onAutopayRemoved?: (data: TapipayAutopayRemovedEvent) => void;
|
|
31
31
|
/** (Vista autopay) Callback ante un error de carga de adhesiones o de desadhesión. */
|
|
32
32
|
onAutopayError?: (data: TapipayAutopayErrorEvent) => void;
|
|
33
|
+
/** (Vista autopay) El usuario eligió su banco en el alta de domiciliación. Emite en cada cambio de selección. */
|
|
34
|
+
onDomiciliationBankSelected?: (data: TapipayDomiciliationBankSelectedEvent) => void;
|
|
35
|
+
/** (Vista autopay) Los datos de la cuenta pasaron la validación del backend. Ojo: dispara al confirmar el método de verificación, no al salir del formulario. */
|
|
36
|
+
onDomiciliationFormCompleted?: (data: TapipayDomiciliationFormCompletedEvent) => void;
|
|
37
|
+
/** (Vista autopay) La verificación llegó a un desenlace. Solo emite al outcome final: un intento fallido con reintentos disponibles NO dispara el evento. */
|
|
38
|
+
onDomiciliationVerificationCompleted?: (data: TapipayDomiciliationVerificationCompletedEvent) => void;
|
|
39
|
+
/** (Vista autopay) El usuario confirmó la domiciliación. NO significa que quedó registrada — la confirmación real llega por `onAutopayActivated`. */
|
|
40
|
+
onDomiciliationConfirmed?: (data: TapipayDomiciliationConfirmedEvent) => void;
|
|
41
|
+
/** (Vista autopay) El chequeo en vivo (debounceado) de la CLABE/tarjeta rechazó el valor actual. No es un hito: puede dispararse cero, una o muchas veces. */
|
|
42
|
+
onDomiciliationAccountCheckFailed?: (data: TapipayDomiciliationAccountCheckFailedEvent) => void;
|
|
33
43
|
/** Clases CSS adicionales para el contenedor del widget. */
|
|
34
44
|
className?: string;
|
|
35
45
|
/** Estilos inline adicionales para el contenedor del widget. */
|
|
@@ -67,8 +77,12 @@ interface TapipayWidgetProps extends Omit<TapipayOptions, "container"> {
|
|
|
67
77
|
* onAutopayLoaded={(data) => console.log("Adhesiones", data.count)}
|
|
68
78
|
* onAutopayActivated={(data) => console.log("Adhesión activada", data.id)}
|
|
69
79
|
* onAutopayRemoved={(data) => console.log("Adhesión eliminada", data.id)}
|
|
80
|
+
* onDomiciliationBankSelected={(data) => console.log("Banco", data.name)}
|
|
81
|
+
* onDomiciliationFormCompleted={(data) => console.log("Cuenta ****" + data.lastFour)}
|
|
82
|
+
* onDomiciliationVerificationCompleted={(data) => console.log("Verificación", data.outcome)}
|
|
83
|
+
* onDomiciliationConfirmed={() => console.log("Enviado — esperar onAutopayActivated")}
|
|
70
84
|
* />
|
|
71
85
|
*/
|
|
72
|
-
declare function TapipayWidget({ organization, companyCode, identifier, externalRequestId, selectionStrategy, view, environment, onPaymentWindowOpened, onPaymentSubmitted, onCancelled, onAutopayLoaded, onAutopayActivated, onAutopayRemoved, onAutopayError, className, style, }: TapipayWidgetProps): react_jsx_runtime.JSX.Element;
|
|
86
|
+
declare function TapipayWidget({ organization, companyCode, identifier, externalRequestId, selectionStrategy, view, environment, onPaymentWindowOpened, onPaymentSubmitted, onCancelled, onAutopayLoaded, onAutopayActivated, onAutopayRemoved, onAutopayError, onDomiciliationBankSelected, onDomiciliationFormCompleted, onDomiciliationVerificationCompleted, onDomiciliationConfirmed, onDomiciliationAccountCheckFailed, className, style, }: TapipayWidgetProps): react_jsx_runtime.JSX.Element;
|
|
73
87
|
|
|
74
88
|
export { TapipayWidget, type TapipayWidgetProps, useTapipay };
|
package/dist/react.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { o as TapipayOptions, n as TapipayEnvironment, r as TapipayPaymentWindowOpenedEvent, q as TapipayPaymentSubmittedEvent, p as TapipayPaymentCancelledEvent, d as TapipayAutopayLoadedEvent, a as TapipayAutopayActivatedEvent, f as TapipayAutopayRemovedEvent, c as TapipayAutopayErrorEvent, i as TapipayDomiciliationBankSelectedEvent, k as TapipayDomiciliationFormCompletedEvent, l as TapipayDomiciliationVerificationCompletedEvent, j as TapipayDomiciliationConfirmedEvent, g as TapipayDomiciliationAccountCheckFailedEvent, L as LoadTapipayOptions, T as TapipayInstance } from './types-ClCjVzWi.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Hook de bajo nivel que carga el SDK y retorna la instancia.
|
|
@@ -30,6 +30,16 @@ interface TapipayWidgetProps extends Omit<TapipayOptions, "container"> {
|
|
|
30
30
|
onAutopayRemoved?: (data: TapipayAutopayRemovedEvent) => void;
|
|
31
31
|
/** (Vista autopay) Callback ante un error de carga de adhesiones o de desadhesión. */
|
|
32
32
|
onAutopayError?: (data: TapipayAutopayErrorEvent) => void;
|
|
33
|
+
/** (Vista autopay) El usuario eligió su banco en el alta de domiciliación. Emite en cada cambio de selección. */
|
|
34
|
+
onDomiciliationBankSelected?: (data: TapipayDomiciliationBankSelectedEvent) => void;
|
|
35
|
+
/** (Vista autopay) Los datos de la cuenta pasaron la validación del backend. Ojo: dispara al confirmar el método de verificación, no al salir del formulario. */
|
|
36
|
+
onDomiciliationFormCompleted?: (data: TapipayDomiciliationFormCompletedEvent) => void;
|
|
37
|
+
/** (Vista autopay) La verificación llegó a un desenlace. Solo emite al outcome final: un intento fallido con reintentos disponibles NO dispara el evento. */
|
|
38
|
+
onDomiciliationVerificationCompleted?: (data: TapipayDomiciliationVerificationCompletedEvent) => void;
|
|
39
|
+
/** (Vista autopay) El usuario confirmó la domiciliación. NO significa que quedó registrada — la confirmación real llega por `onAutopayActivated`. */
|
|
40
|
+
onDomiciliationConfirmed?: (data: TapipayDomiciliationConfirmedEvent) => void;
|
|
41
|
+
/** (Vista autopay) El chequeo en vivo (debounceado) de la CLABE/tarjeta rechazó el valor actual. No es un hito: puede dispararse cero, una o muchas veces. */
|
|
42
|
+
onDomiciliationAccountCheckFailed?: (data: TapipayDomiciliationAccountCheckFailedEvent) => void;
|
|
33
43
|
/** Clases CSS adicionales para el contenedor del widget. */
|
|
34
44
|
className?: string;
|
|
35
45
|
/** Estilos inline adicionales para el contenedor del widget. */
|
|
@@ -67,8 +77,12 @@ interface TapipayWidgetProps extends Omit<TapipayOptions, "container"> {
|
|
|
67
77
|
* onAutopayLoaded={(data) => console.log("Adhesiones", data.count)}
|
|
68
78
|
* onAutopayActivated={(data) => console.log("Adhesión activada", data.id)}
|
|
69
79
|
* onAutopayRemoved={(data) => console.log("Adhesión eliminada", data.id)}
|
|
80
|
+
* onDomiciliationBankSelected={(data) => console.log("Banco", data.name)}
|
|
81
|
+
* onDomiciliationFormCompleted={(data) => console.log("Cuenta ****" + data.lastFour)}
|
|
82
|
+
* onDomiciliationVerificationCompleted={(data) => console.log("Verificación", data.outcome)}
|
|
83
|
+
* onDomiciliationConfirmed={() => console.log("Enviado — esperar onAutopayActivated")}
|
|
70
84
|
* />
|
|
71
85
|
*/
|
|
72
|
-
declare function TapipayWidget({ organization, companyCode, identifier, externalRequestId, selectionStrategy, view, environment, onPaymentWindowOpened, onPaymentSubmitted, onCancelled, onAutopayLoaded, onAutopayActivated, onAutopayRemoved, onAutopayError, className, style, }: TapipayWidgetProps): react_jsx_runtime.JSX.Element;
|
|
86
|
+
declare function TapipayWidget({ organization, companyCode, identifier, externalRequestId, selectionStrategy, view, environment, onPaymentWindowOpened, onPaymentSubmitted, onCancelled, onAutopayLoaded, onAutopayActivated, onAutopayRemoved, onAutopayError, onDomiciliationBankSelected, onDomiciliationFormCompleted, onDomiciliationVerificationCompleted, onDomiciliationConfirmed, onDomiciliationAccountCheckFailed, className, style, }: TapipayWidgetProps): react_jsx_runtime.JSX.Element;
|
|
73
87
|
|
|
74
88
|
export { TapipayWidget, type TapipayWidgetProps, useTapipay };
|
package/dist/react.js
CHANGED
|
@@ -37,6 +37,11 @@ function TapipayWidget({
|
|
|
37
37
|
onAutopayActivated,
|
|
38
38
|
onAutopayRemoved,
|
|
39
39
|
onAutopayError,
|
|
40
|
+
onDomiciliationBankSelected,
|
|
41
|
+
onDomiciliationFormCompleted,
|
|
42
|
+
onDomiciliationVerificationCompleted,
|
|
43
|
+
onDomiciliationConfirmed,
|
|
44
|
+
onDomiciliationAccountCheckFailed,
|
|
40
45
|
className,
|
|
41
46
|
style
|
|
42
47
|
}) {
|
|
@@ -48,6 +53,15 @@ function TapipayWidget({
|
|
|
48
53
|
const onAutopayActivatedRef = useRef(onAutopayActivated);
|
|
49
54
|
const onAutopayRemovedRef = useRef(onAutopayRemoved);
|
|
50
55
|
const onAutopayErrorRef = useRef(onAutopayError);
|
|
56
|
+
const onDomiciliationBankSelectedRef = useRef(onDomiciliationBankSelected);
|
|
57
|
+
const onDomiciliationFormCompletedRef = useRef(onDomiciliationFormCompleted);
|
|
58
|
+
const onDomiciliationVerificationCompletedRef = useRef(
|
|
59
|
+
onDomiciliationVerificationCompleted
|
|
60
|
+
);
|
|
61
|
+
const onDomiciliationConfirmedRef = useRef(onDomiciliationConfirmed);
|
|
62
|
+
const onDomiciliationAccountCheckFailedRef = useRef(
|
|
63
|
+
onDomiciliationAccountCheckFailed
|
|
64
|
+
);
|
|
51
65
|
useEffect(() => {
|
|
52
66
|
onPaymentWindowOpenedRef.current = onPaymentWindowOpened;
|
|
53
67
|
}, [onPaymentWindowOpened]);
|
|
@@ -69,6 +83,21 @@ function TapipayWidget({
|
|
|
69
83
|
useEffect(() => {
|
|
70
84
|
onAutopayErrorRef.current = onAutopayError;
|
|
71
85
|
}, [onAutopayError]);
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
onDomiciliationBankSelectedRef.current = onDomiciliationBankSelected;
|
|
88
|
+
}, [onDomiciliationBankSelected]);
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
onDomiciliationFormCompletedRef.current = onDomiciliationFormCompleted;
|
|
91
|
+
}, [onDomiciliationFormCompleted]);
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
onDomiciliationVerificationCompletedRef.current = onDomiciliationVerificationCompleted;
|
|
94
|
+
}, [onDomiciliationVerificationCompleted]);
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
onDomiciliationConfirmedRef.current = onDomiciliationConfirmed;
|
|
97
|
+
}, [onDomiciliationConfirmed]);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
onDomiciliationAccountCheckFailedRef.current = onDomiciliationAccountCheckFailed;
|
|
100
|
+
}, [onDomiciliationAccountCheckFailed]);
|
|
72
101
|
useEffect(() => {
|
|
73
102
|
if (!containerRef.current) return;
|
|
74
103
|
const container = containerRef.current;
|
|
@@ -102,6 +131,26 @@ function TapipayWidget({
|
|
|
102
131
|
var _a;
|
|
103
132
|
(_a = onAutopayErrorRef.current) == null ? void 0 : _a.call(onAutopayErrorRef, data);
|
|
104
133
|
};
|
|
134
|
+
const handleDomiciliationBankSelected = (data) => {
|
|
135
|
+
var _a;
|
|
136
|
+
(_a = onDomiciliationBankSelectedRef.current) == null ? void 0 : _a.call(onDomiciliationBankSelectedRef, data);
|
|
137
|
+
};
|
|
138
|
+
const handleDomiciliationFormCompleted = (data) => {
|
|
139
|
+
var _a;
|
|
140
|
+
(_a = onDomiciliationFormCompletedRef.current) == null ? void 0 : _a.call(onDomiciliationFormCompletedRef, data);
|
|
141
|
+
};
|
|
142
|
+
const handleDomiciliationVerificationCompleted = (data) => {
|
|
143
|
+
var _a;
|
|
144
|
+
(_a = onDomiciliationVerificationCompletedRef.current) == null ? void 0 : _a.call(onDomiciliationVerificationCompletedRef, data);
|
|
145
|
+
};
|
|
146
|
+
const handleDomiciliationConfirmed = (data) => {
|
|
147
|
+
var _a;
|
|
148
|
+
(_a = onDomiciliationConfirmedRef.current) == null ? void 0 : _a.call(onDomiciliationConfirmedRef, data);
|
|
149
|
+
};
|
|
150
|
+
const handleDomiciliationAccountCheckFailed = (data) => {
|
|
151
|
+
var _a;
|
|
152
|
+
(_a = onDomiciliationAccountCheckFailedRef.current) == null ? void 0 : _a.call(onDomiciliationAccountCheckFailedRef, data);
|
|
153
|
+
};
|
|
105
154
|
loadTapipay({ environment }).then((instance) => {
|
|
106
155
|
if (cancelled) return;
|
|
107
156
|
tapipayInstance = instance;
|
|
@@ -112,6 +161,20 @@ function TapipayWidget({
|
|
|
112
161
|
instance.on("autopayActivated", handleAutopayActivated);
|
|
113
162
|
instance.on("autopayRemoved", handleAutopayRemoved);
|
|
114
163
|
instance.on("autopayError", handleAutopayError);
|
|
164
|
+
instance.on("domiciliationBankSelected", handleDomiciliationBankSelected);
|
|
165
|
+
instance.on(
|
|
166
|
+
"domiciliationFormCompleted",
|
|
167
|
+
handleDomiciliationFormCompleted
|
|
168
|
+
);
|
|
169
|
+
instance.on(
|
|
170
|
+
"domiciliationVerificationCompleted",
|
|
171
|
+
handleDomiciliationVerificationCompleted
|
|
172
|
+
);
|
|
173
|
+
instance.on("domiciliationConfirmed", handleDomiciliationConfirmed);
|
|
174
|
+
instance.on(
|
|
175
|
+
"domiciliationAccountCheckFailed",
|
|
176
|
+
handleDomiciliationAccountCheckFailed
|
|
177
|
+
);
|
|
115
178
|
instance.initialize({
|
|
116
179
|
container,
|
|
117
180
|
organization,
|
|
@@ -132,6 +195,26 @@ function TapipayWidget({
|
|
|
132
195
|
tapipayInstance.off("autopayActivated", handleAutopayActivated);
|
|
133
196
|
tapipayInstance.off("autopayRemoved", handleAutopayRemoved);
|
|
134
197
|
tapipayInstance.off("autopayError", handleAutopayError);
|
|
198
|
+
tapipayInstance.off(
|
|
199
|
+
"domiciliationBankSelected",
|
|
200
|
+
handleDomiciliationBankSelected
|
|
201
|
+
);
|
|
202
|
+
tapipayInstance.off(
|
|
203
|
+
"domiciliationFormCompleted",
|
|
204
|
+
handleDomiciliationFormCompleted
|
|
205
|
+
);
|
|
206
|
+
tapipayInstance.off(
|
|
207
|
+
"domiciliationVerificationCompleted",
|
|
208
|
+
handleDomiciliationVerificationCompleted
|
|
209
|
+
);
|
|
210
|
+
tapipayInstance.off(
|
|
211
|
+
"domiciliationConfirmed",
|
|
212
|
+
handleDomiciliationConfirmed
|
|
213
|
+
);
|
|
214
|
+
tapipayInstance.off(
|
|
215
|
+
"domiciliationAccountCheckFailed",
|
|
216
|
+
handleDomiciliationAccountCheckFailed
|
|
217
|
+
);
|
|
135
218
|
tapipayInstance.destroy(container);
|
|
136
219
|
}
|
|
137
220
|
};
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { loadTapipay } from \"./loader\";\nimport type {\n\tLoadTapipayOptions,\n\tTapipayAutopayActivatedEvent,\n\tTapipayAutopayErrorEvent,\n\tTapipayAutopayLoadedEvent,\n\tTapipayAutopayRemovedEvent,\n\tTapipayEnvironment,\n\tTapipayInstance,\n\tTapipayOptions,\n\tTapipayPaymentCancelledEvent,\n\tTapipayPaymentSubmittedEvent,\n\tTapipayPaymentWindowOpenedEvent,\n} from \"./types\";\n\n// ─── useTapipay hook ──────────────────────────────────────────────────────────\n\n/**\n * Hook de bajo nivel que carga el SDK y retorna la instancia.\n * Útil cuando necesitas control manual sobre initialize/destroy.\n *\n * @example\n * const { tapipay, error } = useTapipay();\n * const { tapipay, error } = useTapipay({ environment: 'homo' });\n */\nexport function useTapipay(options?: LoadTapipayOptions): {\n\ttapipay: TapipayInstance | null;\n\terror: Error | null;\n} {\n\tconst [tapipay, setTapipay] = useState<TapipayInstance | null>(null);\n\tconst [error, setError] = useState<Error | null>(null);\n\tconst environment = options?.environment;\n\n\tuseEffect(() => {\n\t\tlet cancelled = false;\n\t\tloadTapipay({ environment })\n\t\t\t.then((instance) => {\n\t\t\t\tif (!cancelled) setTapipay(instance);\n\t\t\t})\n\t\t\t.catch((err: Error) => {\n\t\t\t\tif (!cancelled) setError(err);\n\t\t\t});\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [environment]);\n\n\treturn { tapipay, error };\n}\n\n// ─── TapipayWidget component ──────────────────────────────────────────────────\n\nexport interface TapipayWidgetProps extends Omit<TapipayOptions, \"container\"> {\n\t/** Entorno del SDK a cargar. Por defecto `'production'`. Usar `'homo'` para homologación. */\n\tenvironment?: TapipayEnvironment;\n\t/** Callback invocado cuando el popup de Yuno se abre exitosamente. */\n\tonPaymentWindowOpened?: (data: TapipayPaymentWindowOpenedEvent) => void;\n\t/** Callback invocado cuando el usuario completó el formulario de Yuno y fue redirigido al callback. */\n\tonPaymentSubmitted?: (data: TapipayPaymentSubmittedEvent) => void;\n\t/** Callback invocado cuando el usuario cierra el popup sin completar el pago. */\n\tonCancelled?: (data: TapipayPaymentCancelledEvent) => void;\n\t/** (Vista autopay) Callback con el conjunto de adhesiones activas; se reinvoca cuando la lista cambia. */\n\tonAutopayLoaded?: (data: TapipayAutopayLoadedEvent) => void;\n\t/** (Vista autopay) Callback cuando una nueva adhesión queda activa (una sola vez por adhesión nueva). */\n\tonAutopayActivated?: (data: TapipayAutopayActivatedEvent) => void;\n\t/** (Vista autopay) Callback cuando el usuario desadhiere un medio con éxito. */\n\tonAutopayRemoved?: (data: TapipayAutopayRemovedEvent) => void;\n\t/** (Vista autopay) Callback ante un error de carga de adhesiones o de desadhesión. */\n\tonAutopayError?: (data: TapipayAutopayErrorEvent) => void;\n\t/** Clases CSS adicionales para el contenedor del widget. */\n\tclassName?: string;\n\t/** Estilos inline adicionales para el contenedor del widget. */\n\tstyle?: React.CSSProperties;\n}\n\n/**\n * Componente React que encapsula el widget de pago TapiPay.\n *\n * Maneja internamente la carga del SDK, el ciclo de vida del widget\n * y el cleanup al desmontar. Compatible con React Strict Mode.\n *\n * Se requiere `identifier` + UNO de `{ organization, companyCode }`.\n * Si se pasan ambos, `companyCode` tiene prioridad.\n *\n * @example\n * // Vista de pagos (default)\n * <TapipayWidget\n * organization=\"acme\"\n * identifier=\"CLI-001\"\n * externalRequestId=\"FAC-2024-001\"\n * onPaymentSubmitted={(data) => console.log(\"Pago enviado\", data)}\n * onCancelled={() => console.log(\"Pago cancelado por el usuario\")}\n * />\n *\n * @example\n * // Usando companyCode en lugar de organization\n * <TapipayWidget companyCode=\"acme-mx\" identifier=\"CLI-001\" />\n *\n * @example\n * // Vista de gestión de adhesiones de autopay\n * <TapipayWidget\n * organization=\"acme\"\n * identifier=\"CLI-001\"\n * view=\"autopay\"\n * onAutopayLoaded={(data) => console.log(\"Adhesiones\", data.count)}\n * onAutopayActivated={(data) => console.log(\"Adhesión activada\", data.id)}\n * onAutopayRemoved={(data) => console.log(\"Adhesión eliminada\", data.id)}\n * />\n */\nexport function TapipayWidget({\n\torganization,\n\tcompanyCode,\n\tidentifier,\n\texternalRequestId,\n\tselectionStrategy,\n\tview,\n\tenvironment,\n\tonPaymentWindowOpened,\n\tonPaymentSubmitted,\n\tonCancelled,\n\tonAutopayLoaded,\n\tonAutopayActivated,\n\tonAutopayRemoved,\n\tonAutopayError,\n\tclassName,\n\tstyle,\n}: TapipayWidgetProps) {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\t// Refs para evitar re-renders innecesarios y closures estáticos en useEffect\n\tconst onPaymentWindowOpenedRef = useRef(onPaymentWindowOpened);\n\tconst onPaymentSubmittedRef = useRef(onPaymentSubmitted);\n\tconst onCancelledRef = useRef(onCancelled);\n\tconst onAutopayLoadedRef = useRef(onAutopayLoaded);\n\tconst onAutopayActivatedRef = useRef(onAutopayActivated);\n\tconst onAutopayRemovedRef = useRef(onAutopayRemoved);\n\tconst onAutopayErrorRef = useRef(onAutopayError);\n\n\tuseEffect(() => {\n\t\tonPaymentWindowOpenedRef.current = onPaymentWindowOpened;\n\t}, [onPaymentWindowOpened]);\n\n\tuseEffect(() => {\n\t\tonPaymentSubmittedRef.current = onPaymentSubmitted;\n\t}, [onPaymentSubmitted]);\n\n\tuseEffect(() => {\n\t\tonCancelledRef.current = onCancelled;\n\t}, [onCancelled]);\n\n\tuseEffect(() => {\n\t\tonAutopayLoadedRef.current = onAutopayLoaded;\n\t}, [onAutopayLoaded]);\n\n\tuseEffect(() => {\n\t\tonAutopayActivatedRef.current = onAutopayActivated;\n\t}, [onAutopayActivated]);\n\n\tuseEffect(() => {\n\t\tonAutopayRemovedRef.current = onAutopayRemoved;\n\t}, [onAutopayRemoved]);\n\n\tuseEffect(() => {\n\t\tonAutopayErrorRef.current = onAutopayError;\n\t}, [onAutopayError]);\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) return;\n\t\tconst container = containerRef.current;\n\n\t\tlet tapipayInstance: TapipayInstance | null = null;\n\t\tlet cancelled = false;\n\n\t\tconst handlePaymentWindowOpened = (\n\t\t\tdata: TapipayPaymentWindowOpenedEvent,\n\t\t) => {\n\t\t\tonPaymentWindowOpenedRef.current?.(data);\n\t\t};\n\t\tconst handlePaymentSubmitted = (data: TapipayPaymentSubmittedEvent) => {\n\t\t\tonPaymentSubmittedRef.current?.(data);\n\t\t};\n\t\tconst handleCancelled = (data: TapipayPaymentCancelledEvent) => {\n\t\t\tonCancelledRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayLoaded = (data: TapipayAutopayLoadedEvent) => {\n\t\t\tonAutopayLoadedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayActivated = (data: TapipayAutopayActivatedEvent) => {\n\t\t\tonAutopayActivatedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayRemoved = (data: TapipayAutopayRemovedEvent) => {\n\t\t\tonAutopayRemovedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayError = (data: TapipayAutopayErrorEvent) => {\n\t\t\tonAutopayErrorRef.current?.(data);\n\t\t};\n\n\t\tloadTapipay({ environment }).then((instance) => {\n\t\t\tif (cancelled) return;\n\t\t\ttapipayInstance = instance;\n\n\t\t\tinstance.on(\"paymentWindowOpened\", handlePaymentWindowOpened);\n\t\t\tinstance.on(\"paymentSubmitted\", handlePaymentSubmitted);\n\t\t\tinstance.on(\"paymentCancelled\", handleCancelled);\n\t\t\tinstance.on(\"autopayLoaded\", handleAutopayLoaded);\n\t\t\tinstance.on(\"autopayActivated\", handleAutopayActivated);\n\t\t\tinstance.on(\"autopayRemoved\", handleAutopayRemoved);\n\t\t\tinstance.on(\"autopayError\", handleAutopayError);\n\n\t\t\tinstance.initialize({\n\t\t\t\tcontainer,\n\t\t\t\torganization,\n\t\t\t\tcompanyCode,\n\t\t\t\tidentifier,\n\t\t\t\texternalRequestId,\n\t\t\t\tselectionStrategy,\n\t\t\t\tview,\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t\tif (tapipayInstance) {\n\t\t\t\ttapipayInstance.off(\"paymentWindowOpened\", handlePaymentWindowOpened);\n\t\t\t\ttapipayInstance.off(\"paymentSubmitted\", handlePaymentSubmitted);\n\t\t\t\ttapipayInstance.off(\"paymentCancelled\", handleCancelled);\n\t\t\t\ttapipayInstance.off(\"autopayLoaded\", handleAutopayLoaded);\n\t\t\t\ttapipayInstance.off(\"autopayActivated\", handleAutopayActivated);\n\t\t\t\ttapipayInstance.off(\"autopayRemoved\", handleAutopayRemoved);\n\t\t\t\ttapipayInstance.off(\"autopayError\", handleAutopayError);\n\t\t\t\ttapipayInstance.destroy(container);\n\t\t\t}\n\t\t};\n\t\t// El widget se re-monta si cambian los parámetros de identificación o entorno\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\torganization,\n\t\tcompanyCode,\n\t\tidentifier,\n\t\texternalRequestId,\n\t\tselectionStrategy,\n\t\tview,\n\t\tenvironment,\n\t]);\n\n\treturn <div ref={containerRef} className={className} style={style} />;\n}\n"],"mappings":";;;;;AAAA,SAAS,WAAW,QAAQ,gBAAgB;AAqPpC;AA3ND,SAAS,WAAW,SAGzB;AACD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAiC,IAAI;AACnE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AACrD,QAAM,cAAc,mCAAS;AAE7B,YAAU,MAAM;AACf,QAAI,YAAY;AAChB,gBAAY,EAAE,YAAY,CAAC,EACzB,KAAK,CAAC,aAAa;AACnB,UAAI,CAAC,UAAW,YAAW,QAAQ;AAAA,IACpC,CAAC,EACA,MAAM,CAAC,QAAe;AACtB,UAAI,CAAC,UAAW,UAAS,GAAG;AAAA,IAC7B,CAAC;AACF,WAAO,MAAM;AACZ,kBAAY;AAAA,IACb;AAAA,EACD,GAAG,CAAC,WAAW,CAAC;AAEhB,SAAO,EAAE,SAAS,MAAM;AACzB;AA6DO,SAAS,cAAc;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAuB;AACtB,QAAM,eAAe,OAAuB,IAAI;AAEhD,QAAM,2BAA2B,OAAO,qBAAqB;AAC7D,QAAM,wBAAwB,OAAO,kBAAkB;AACvD,QAAM,iBAAiB,OAAO,WAAW;AACzC,QAAM,qBAAqB,OAAO,eAAe;AACjD,QAAM,wBAAwB,OAAO,kBAAkB;AACvD,QAAM,sBAAsB,OAAO,gBAAgB;AACnD,QAAM,oBAAoB,OAAO,cAAc;AAE/C,YAAU,MAAM;AACf,6BAAyB,UAAU;AAAA,EACpC,GAAG,CAAC,qBAAqB,CAAC;AAE1B,YAAU,MAAM;AACf,0BAAsB,UAAU;AAAA,EACjC,GAAG,CAAC,kBAAkB,CAAC;AAEvB,YAAU,MAAM;AACf,mBAAe,UAAU;AAAA,EAC1B,GAAG,CAAC,WAAW,CAAC;AAEhB,YAAU,MAAM;AACf,uBAAmB,UAAU;AAAA,EAC9B,GAAG,CAAC,eAAe,CAAC;AAEpB,YAAU,MAAM;AACf,0BAAsB,UAAU;AAAA,EACjC,GAAG,CAAC,kBAAkB,CAAC;AAEvB,YAAU,MAAM;AACf,wBAAoB,UAAU;AAAA,EAC/B,GAAG,CAAC,gBAAgB,CAAC;AAErB,YAAU,MAAM;AACf,sBAAkB,UAAU;AAAA,EAC7B,GAAG,CAAC,cAAc,CAAC;AAEnB,YAAU,MAAM;AACf,QAAI,CAAC,aAAa,QAAS;AAC3B,UAAM,YAAY,aAAa;AAE/B,QAAI,kBAA0C;AAC9C,QAAI,YAAY;AAEhB,UAAM,4BAA4B,CACjC,SACI;AA/KP;AAgLG,qCAAyB,YAAzB,kDAAmC;AAAA,IACpC;AACA,UAAM,yBAAyB,CAAC,SAAuC;AAlLzE;AAmLG,kCAAsB,YAAtB,+CAAgC;AAAA,IACjC;AACA,UAAM,kBAAkB,CAAC,SAAuC;AArLlE;AAsLG,2BAAe,YAAf,wCAAyB;AAAA,IAC1B;AACA,UAAM,sBAAsB,CAAC,SAAoC;AAxLnE;AAyLG,+BAAmB,YAAnB,4CAA6B;AAAA,IAC9B;AACA,UAAM,yBAAyB,CAAC,SAAuC;AA3LzE;AA4LG,kCAAsB,YAAtB,+CAAgC;AAAA,IACjC;AACA,UAAM,uBAAuB,CAAC,SAAqC;AA9LrE;AA+LG,gCAAoB,YAApB,6CAA8B;AAAA,IAC/B;AACA,UAAM,qBAAqB,CAAC,SAAmC;AAjMjE;AAkMG,8BAAkB,YAAlB,2CAA4B;AAAA,IAC7B;AAEA,gBAAY,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa;AAC/C,UAAI,UAAW;AACf,wBAAkB;AAElB,eAAS,GAAG,uBAAuB,yBAAyB;AAC5D,eAAS,GAAG,oBAAoB,sBAAsB;AACtD,eAAS,GAAG,oBAAoB,eAAe;AAC/C,eAAS,GAAG,iBAAiB,mBAAmB;AAChD,eAAS,GAAG,oBAAoB,sBAAsB;AACtD,eAAS,GAAG,kBAAkB,oBAAoB;AAClD,eAAS,GAAG,gBAAgB,kBAAkB;AAE9C,eAAS,WAAW;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACZ,kBAAY;AACZ,UAAI,iBAAiB;AACpB,wBAAgB,IAAI,uBAAuB,yBAAyB;AACpE,wBAAgB,IAAI,oBAAoB,sBAAsB;AAC9D,wBAAgB,IAAI,oBAAoB,eAAe;AACvD,wBAAgB,IAAI,iBAAiB,mBAAmB;AACxD,wBAAgB,IAAI,oBAAoB,sBAAsB;AAC9D,wBAAgB,IAAI,kBAAkB,oBAAoB;AAC1D,wBAAgB,IAAI,gBAAgB,kBAAkB;AACtD,wBAAgB,QAAQ,SAAS;AAAA,MAClC;AAAA,IACD;AAAA,EAGD,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAED,SAAO,oBAAC,SAAI,KAAK,cAAc,WAAsB,OAAc;AACpE;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/react.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { loadTapipay } from \"./loader\";\nimport type {\n\tLoadTapipayOptions,\n\tTapipayAutopayActivatedEvent,\n\tTapipayAutopayErrorEvent,\n\tTapipayAutopayLoadedEvent,\n\tTapipayAutopayRemovedEvent,\n\tTapipayDomiciliationAccountCheckFailedEvent,\n\tTapipayDomiciliationBankSelectedEvent,\n\tTapipayDomiciliationConfirmedEvent,\n\tTapipayDomiciliationFormCompletedEvent,\n\tTapipayDomiciliationVerificationCompletedEvent,\n\tTapipayEnvironment,\n\tTapipayInstance,\n\tTapipayOptions,\n\tTapipayPaymentCancelledEvent,\n\tTapipayPaymentSubmittedEvent,\n\tTapipayPaymentWindowOpenedEvent,\n} from \"./types\";\n\n// ─── useTapipay hook ──────────────────────────────────────────────────────────\n\n/**\n * Hook de bajo nivel que carga el SDK y retorna la instancia.\n * Útil cuando necesitas control manual sobre initialize/destroy.\n *\n * @example\n * const { tapipay, error } = useTapipay();\n * const { tapipay, error } = useTapipay({ environment: 'homo' });\n */\nexport function useTapipay(options?: LoadTapipayOptions): {\n\ttapipay: TapipayInstance | null;\n\terror: Error | null;\n} {\n\tconst [tapipay, setTapipay] = useState<TapipayInstance | null>(null);\n\tconst [error, setError] = useState<Error | null>(null);\n\tconst environment = options?.environment;\n\n\tuseEffect(() => {\n\t\tlet cancelled = false;\n\t\tloadTapipay({ environment })\n\t\t\t.then((instance) => {\n\t\t\t\tif (!cancelled) setTapipay(instance);\n\t\t\t})\n\t\t\t.catch((err: Error) => {\n\t\t\t\tif (!cancelled) setError(err);\n\t\t\t});\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [environment]);\n\n\treturn { tapipay, error };\n}\n\n// ─── TapipayWidget component ──────────────────────────────────────────────────\n\nexport interface TapipayWidgetProps extends Omit<TapipayOptions, \"container\"> {\n\t/** Entorno del SDK a cargar. Por defecto `'production'`. Usar `'homo'` para homologación. */\n\tenvironment?: TapipayEnvironment;\n\t/** Callback invocado cuando el popup de Yuno se abre exitosamente. */\n\tonPaymentWindowOpened?: (data: TapipayPaymentWindowOpenedEvent) => void;\n\t/** Callback invocado cuando el usuario completó el formulario de Yuno y fue redirigido al callback. */\n\tonPaymentSubmitted?: (data: TapipayPaymentSubmittedEvent) => void;\n\t/** Callback invocado cuando el usuario cierra el popup sin completar el pago. */\n\tonCancelled?: (data: TapipayPaymentCancelledEvent) => void;\n\t/** (Vista autopay) Callback con el conjunto de adhesiones activas; se reinvoca cuando la lista cambia. */\n\tonAutopayLoaded?: (data: TapipayAutopayLoadedEvent) => void;\n\t/** (Vista autopay) Callback cuando una nueva adhesión queda activa (una sola vez por adhesión nueva). */\n\tonAutopayActivated?: (data: TapipayAutopayActivatedEvent) => void;\n\t/** (Vista autopay) Callback cuando el usuario desadhiere un medio con éxito. */\n\tonAutopayRemoved?: (data: TapipayAutopayRemovedEvent) => void;\n\t/** (Vista autopay) Callback ante un error de carga de adhesiones o de desadhesión. */\n\tonAutopayError?: (data: TapipayAutopayErrorEvent) => void;\n\t/** (Vista autopay) El usuario eligió su banco en el alta de domiciliación. Emite en cada cambio de selección. */\n\tonDomiciliationBankSelected?: (\n\t\tdata: TapipayDomiciliationBankSelectedEvent,\n\t) => void;\n\t/** (Vista autopay) Los datos de la cuenta pasaron la validación del backend. Ojo: dispara al confirmar el método de verificación, no al salir del formulario. */\n\tonDomiciliationFormCompleted?: (\n\t\tdata: TapipayDomiciliationFormCompletedEvent,\n\t) => void;\n\t/** (Vista autopay) La verificación llegó a un desenlace. Solo emite al outcome final: un intento fallido con reintentos disponibles NO dispara el evento. */\n\tonDomiciliationVerificationCompleted?: (\n\t\tdata: TapipayDomiciliationVerificationCompletedEvent,\n\t) => void;\n\t/** (Vista autopay) El usuario confirmó la domiciliación. NO significa que quedó registrada — la confirmación real llega por `onAutopayActivated`. */\n\tonDomiciliationConfirmed?: (data: TapipayDomiciliationConfirmedEvent) => void;\n\t/** (Vista autopay) El chequeo en vivo (debounceado) de la CLABE/tarjeta rechazó el valor actual. No es un hito: puede dispararse cero, una o muchas veces. */\n\tonDomiciliationAccountCheckFailed?: (\n\t\tdata: TapipayDomiciliationAccountCheckFailedEvent,\n\t) => void;\n\t/** Clases CSS adicionales para el contenedor del widget. */\n\tclassName?: string;\n\t/** Estilos inline adicionales para el contenedor del widget. */\n\tstyle?: React.CSSProperties;\n}\n\n/**\n * Componente React que encapsula el widget de pago TapiPay.\n *\n * Maneja internamente la carga del SDK, el ciclo de vida del widget\n * y el cleanup al desmontar. Compatible con React Strict Mode.\n *\n * Se requiere `identifier` + UNO de `{ organization, companyCode }`.\n * Si se pasan ambos, `companyCode` tiene prioridad.\n *\n * @example\n * // Vista de pagos (default)\n * <TapipayWidget\n * organization=\"acme\"\n * identifier=\"CLI-001\"\n * externalRequestId=\"FAC-2024-001\"\n * onPaymentSubmitted={(data) => console.log(\"Pago enviado\", data)}\n * onCancelled={() => console.log(\"Pago cancelado por el usuario\")}\n * />\n *\n * @example\n * // Usando companyCode en lugar de organization\n * <TapipayWidget companyCode=\"acme-mx\" identifier=\"CLI-001\" />\n *\n * @example\n * // Vista de gestión de adhesiones de autopay\n * <TapipayWidget\n * organization=\"acme\"\n * identifier=\"CLI-001\"\n * view=\"autopay\"\n * onAutopayLoaded={(data) => console.log(\"Adhesiones\", data.count)}\n * onAutopayActivated={(data) => console.log(\"Adhesión activada\", data.id)}\n * onAutopayRemoved={(data) => console.log(\"Adhesión eliminada\", data.id)}\n * onDomiciliationBankSelected={(data) => console.log(\"Banco\", data.name)}\n * onDomiciliationFormCompleted={(data) => console.log(\"Cuenta ****\" + data.lastFour)}\n * onDomiciliationVerificationCompleted={(data) => console.log(\"Verificación\", data.outcome)}\n * onDomiciliationConfirmed={() => console.log(\"Enviado — esperar onAutopayActivated\")}\n * />\n */\nexport function TapipayWidget({\n\torganization,\n\tcompanyCode,\n\tidentifier,\n\texternalRequestId,\n\tselectionStrategy,\n\tview,\n\tenvironment,\n\tonPaymentWindowOpened,\n\tonPaymentSubmitted,\n\tonCancelled,\n\tonAutopayLoaded,\n\tonAutopayActivated,\n\tonAutopayRemoved,\n\tonAutopayError,\n\tonDomiciliationBankSelected,\n\tonDomiciliationFormCompleted,\n\tonDomiciliationVerificationCompleted,\n\tonDomiciliationConfirmed,\n\tonDomiciliationAccountCheckFailed,\n\tclassName,\n\tstyle,\n}: TapipayWidgetProps) {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\t// Refs para evitar re-renders innecesarios y closures estáticos en useEffect\n\tconst onPaymentWindowOpenedRef = useRef(onPaymentWindowOpened);\n\tconst onPaymentSubmittedRef = useRef(onPaymentSubmitted);\n\tconst onCancelledRef = useRef(onCancelled);\n\tconst onAutopayLoadedRef = useRef(onAutopayLoaded);\n\tconst onAutopayActivatedRef = useRef(onAutopayActivated);\n\tconst onAutopayRemovedRef = useRef(onAutopayRemoved);\n\tconst onAutopayErrorRef = useRef(onAutopayError);\n\tconst onDomiciliationBankSelectedRef = useRef(onDomiciliationBankSelected);\n\tconst onDomiciliationFormCompletedRef = useRef(onDomiciliationFormCompleted);\n\tconst onDomiciliationVerificationCompletedRef = useRef(\n\t\tonDomiciliationVerificationCompleted,\n\t);\n\tconst onDomiciliationConfirmedRef = useRef(onDomiciliationConfirmed);\n\tconst onDomiciliationAccountCheckFailedRef = useRef(\n\t\tonDomiciliationAccountCheckFailed,\n\t);\n\n\tuseEffect(() => {\n\t\tonPaymentWindowOpenedRef.current = onPaymentWindowOpened;\n\t}, [onPaymentWindowOpened]);\n\n\tuseEffect(() => {\n\t\tonPaymentSubmittedRef.current = onPaymentSubmitted;\n\t}, [onPaymentSubmitted]);\n\n\tuseEffect(() => {\n\t\tonCancelledRef.current = onCancelled;\n\t}, [onCancelled]);\n\n\tuseEffect(() => {\n\t\tonAutopayLoadedRef.current = onAutopayLoaded;\n\t}, [onAutopayLoaded]);\n\n\tuseEffect(() => {\n\t\tonAutopayActivatedRef.current = onAutopayActivated;\n\t}, [onAutopayActivated]);\n\n\tuseEffect(() => {\n\t\tonAutopayRemovedRef.current = onAutopayRemoved;\n\t}, [onAutopayRemoved]);\n\n\tuseEffect(() => {\n\t\tonAutopayErrorRef.current = onAutopayError;\n\t}, [onAutopayError]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationBankSelectedRef.current = onDomiciliationBankSelected;\n\t}, [onDomiciliationBankSelected]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationFormCompletedRef.current = onDomiciliationFormCompleted;\n\t}, [onDomiciliationFormCompleted]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationVerificationCompletedRef.current =\n\t\t\tonDomiciliationVerificationCompleted;\n\t}, [onDomiciliationVerificationCompleted]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationConfirmedRef.current = onDomiciliationConfirmed;\n\t}, [onDomiciliationConfirmed]);\n\n\tuseEffect(() => {\n\t\tonDomiciliationAccountCheckFailedRef.current =\n\t\t\tonDomiciliationAccountCheckFailed;\n\t}, [onDomiciliationAccountCheckFailed]);\n\n\tuseEffect(() => {\n\t\tif (!containerRef.current) return;\n\t\tconst container = containerRef.current;\n\n\t\tlet tapipayInstance: TapipayInstance | null = null;\n\t\tlet cancelled = false;\n\n\t\tconst handlePaymentWindowOpened = (\n\t\t\tdata: TapipayPaymentWindowOpenedEvent,\n\t\t) => {\n\t\t\tonPaymentWindowOpenedRef.current?.(data);\n\t\t};\n\t\tconst handlePaymentSubmitted = (data: TapipayPaymentSubmittedEvent) => {\n\t\t\tonPaymentSubmittedRef.current?.(data);\n\t\t};\n\t\tconst handleCancelled = (data: TapipayPaymentCancelledEvent) => {\n\t\t\tonCancelledRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayLoaded = (data: TapipayAutopayLoadedEvent) => {\n\t\t\tonAutopayLoadedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayActivated = (data: TapipayAutopayActivatedEvent) => {\n\t\t\tonAutopayActivatedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayRemoved = (data: TapipayAutopayRemovedEvent) => {\n\t\t\tonAutopayRemovedRef.current?.(data);\n\t\t};\n\t\tconst handleAutopayError = (data: TapipayAutopayErrorEvent) => {\n\t\t\tonAutopayErrorRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationBankSelected = (\n\t\t\tdata: TapipayDomiciliationBankSelectedEvent,\n\t\t) => {\n\t\t\tonDomiciliationBankSelectedRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationFormCompleted = (\n\t\t\tdata: TapipayDomiciliationFormCompletedEvent,\n\t\t) => {\n\t\t\tonDomiciliationFormCompletedRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationVerificationCompleted = (\n\t\t\tdata: TapipayDomiciliationVerificationCompletedEvent,\n\t\t) => {\n\t\t\tonDomiciliationVerificationCompletedRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationConfirmed = (\n\t\t\tdata: TapipayDomiciliationConfirmedEvent,\n\t\t) => {\n\t\t\tonDomiciliationConfirmedRef.current?.(data);\n\t\t};\n\t\tconst handleDomiciliationAccountCheckFailed = (\n\t\t\tdata: TapipayDomiciliationAccountCheckFailedEvent,\n\t\t) => {\n\t\t\tonDomiciliationAccountCheckFailedRef.current?.(data);\n\t\t};\n\n\t\tloadTapipay({ environment }).then((instance) => {\n\t\t\tif (cancelled) return;\n\t\t\ttapipayInstance = instance;\n\n\t\t\tinstance.on(\"paymentWindowOpened\", handlePaymentWindowOpened);\n\t\t\tinstance.on(\"paymentSubmitted\", handlePaymentSubmitted);\n\t\t\tinstance.on(\"paymentCancelled\", handleCancelled);\n\t\t\tinstance.on(\"autopayLoaded\", handleAutopayLoaded);\n\t\t\tinstance.on(\"autopayActivated\", handleAutopayActivated);\n\t\t\tinstance.on(\"autopayRemoved\", handleAutopayRemoved);\n\t\t\tinstance.on(\"autopayError\", handleAutopayError);\n\t\t\tinstance.on(\"domiciliationBankSelected\", handleDomiciliationBankSelected);\n\t\t\tinstance.on(\n\t\t\t\t\"domiciliationFormCompleted\",\n\t\t\t\thandleDomiciliationFormCompleted,\n\t\t\t);\n\t\t\tinstance.on(\n\t\t\t\t\"domiciliationVerificationCompleted\",\n\t\t\t\thandleDomiciliationVerificationCompleted,\n\t\t\t);\n\t\t\tinstance.on(\"domiciliationConfirmed\", handleDomiciliationConfirmed);\n\t\t\tinstance.on(\n\t\t\t\t\"domiciliationAccountCheckFailed\",\n\t\t\t\thandleDomiciliationAccountCheckFailed,\n\t\t\t);\n\n\t\t\tinstance.initialize({\n\t\t\t\tcontainer,\n\t\t\t\torganization,\n\t\t\t\tcompanyCode,\n\t\t\t\tidentifier,\n\t\t\t\texternalRequestId,\n\t\t\t\tselectionStrategy,\n\t\t\t\tview,\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t\tif (tapipayInstance) {\n\t\t\t\ttapipayInstance.off(\"paymentWindowOpened\", handlePaymentWindowOpened);\n\t\t\t\ttapipayInstance.off(\"paymentSubmitted\", handlePaymentSubmitted);\n\t\t\t\ttapipayInstance.off(\"paymentCancelled\", handleCancelled);\n\t\t\t\ttapipayInstance.off(\"autopayLoaded\", handleAutopayLoaded);\n\t\t\t\ttapipayInstance.off(\"autopayActivated\", handleAutopayActivated);\n\t\t\t\ttapipayInstance.off(\"autopayRemoved\", handleAutopayRemoved);\n\t\t\t\ttapipayInstance.off(\"autopayError\", handleAutopayError);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationBankSelected\",\n\t\t\t\t\thandleDomiciliationBankSelected,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationFormCompleted\",\n\t\t\t\t\thandleDomiciliationFormCompleted,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationVerificationCompleted\",\n\t\t\t\t\thandleDomiciliationVerificationCompleted,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationConfirmed\",\n\t\t\t\t\thandleDomiciliationConfirmed,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.off(\n\t\t\t\t\t\"domiciliationAccountCheckFailed\",\n\t\t\t\t\thandleDomiciliationAccountCheckFailed,\n\t\t\t\t);\n\t\t\t\ttapipayInstance.destroy(container);\n\t\t\t}\n\t\t};\n\t\t// El widget se re-monta si cambian los parámetros de identificación o entorno\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\torganization,\n\t\tcompanyCode,\n\t\tidentifier,\n\t\texternalRequestId,\n\t\tselectionStrategy,\n\t\tview,\n\t\tenvironment,\n\t]);\n\n\treturn <div ref={containerRef} className={className} style={style} />;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -77,7 +77,7 @@ type TapipayPaymentCancelledEvent = Record<string, never>;
|
|
|
77
77
|
* Tipo de medio adherido expuesto al sitio cliente.
|
|
78
78
|
* Solo se expone el tipo lógico, nunca la marca ni el banco.
|
|
79
79
|
*/
|
|
80
|
-
type TapipayAutopayMediaType = "card" | "bank_account";
|
|
80
|
+
type TapipayAutopayMediaType = "card" | "bank_account" | "debit_card";
|
|
81
81
|
/**
|
|
82
82
|
* Resumen mínimo y seguro de una adhesión activa.
|
|
83
83
|
* Privacidad: solo tipo de medio + últimos 4 dígitos. El `id` es un hash opaco
|
|
@@ -140,6 +140,91 @@ interface TapipayAutopayErrorEvent {
|
|
|
140
140
|
/** Mensaje neutral para el host. */
|
|
141
141
|
message: string;
|
|
142
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Tipo de cuenta adherida, derivado de la longitud del identificador ingresado.
|
|
145
|
+
* 18 dígitos = CLABE, 16 = tarjeta de débito.
|
|
146
|
+
*/
|
|
147
|
+
type TapipayDomiciliationAccountType = "BANK_ACCOUNT" | "DEBIT_CARD";
|
|
148
|
+
/** Método con el que se verificó la cuenta en el alta de domiciliación. */
|
|
149
|
+
type TapipayDomiciliationVerificationMethod = "penny" | "kyc" | "transfer";
|
|
150
|
+
/**
|
|
151
|
+
* Payload del evento domiciliationBankSelected.
|
|
152
|
+
* El usuario eligió su banco en el alta de domiciliación. Emite en cada cambio
|
|
153
|
+
* de selección.
|
|
154
|
+
*/
|
|
155
|
+
interface TapipayDomiciliationBankSelectedEvent {
|
|
156
|
+
/** Id del banco en el catálogo de TapiPay. */
|
|
157
|
+
bankId: string;
|
|
158
|
+
/** Clave SPEI del banco. */
|
|
159
|
+
speiCode: string;
|
|
160
|
+
/** Nombre comercial del banco. */
|
|
161
|
+
name: string;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Payload del evento domiciliationFormCompleted.
|
|
165
|
+
*
|
|
166
|
+
* Los datos de la cuenta pasaron la validación del backend. Ojo con el timing:
|
|
167
|
+
* NO se dispara al salir de la pantalla del formulario, sino al confirmar el
|
|
168
|
+
* método de verificación — que es cuando la cuenta se registra contra el
|
|
169
|
+
* backend. Si los datos son inválidos, el evento no llega.
|
|
170
|
+
*
|
|
171
|
+
* Nunca incluye la CLABE ni el número de tarjeta completos.
|
|
172
|
+
*/
|
|
173
|
+
interface TapipayDomiciliationFormCompletedEvent {
|
|
174
|
+
bankId: string;
|
|
175
|
+
/** Tipo de cuenta derivado de la longitud del identificador. */
|
|
176
|
+
accountType: TapipayDomiciliationAccountType;
|
|
177
|
+
/** Últimos 4 dígitos de la CLABE o tarjeta. `null` si no está disponible. */
|
|
178
|
+
lastFour: string | null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Payload del evento domiciliationVerificationCompleted.
|
|
182
|
+
*
|
|
183
|
+
* La verificación de la cuenta llegó a un DESENLACE. Dos aclaraciones que
|
|
184
|
+
* importan para interpretarlo:
|
|
185
|
+
*
|
|
186
|
+
* 1. Solo emite al outcome final. Un intento de monto incorrecto que aún deja
|
|
187
|
+
* reintentos disponibles NO dispara el evento: `outcome: "failed"` llega
|
|
188
|
+
* recién cuando se agotan los intentos. Ausencia de evento NO significa que
|
|
189
|
+
* el usuario se frenó — puede estar reintentando.
|
|
190
|
+
* 2. Es method-agnostic y cubre el caso en que el paso de verificación no
|
|
191
|
+
* aparece en pantalla (banco que no la requiere, o método `kyc`/`transfer`):
|
|
192
|
+
* ahí también se emite, para que la secuencia no quede incompleta.
|
|
193
|
+
*/
|
|
194
|
+
interface TapipayDomiciliationVerificationCompletedEvent {
|
|
195
|
+
method: TapipayDomiciliationVerificationMethod;
|
|
196
|
+
outcome: "approved" | "failed";
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Payload del evento domiciliationConfirmed.
|
|
200
|
+
*
|
|
201
|
+
* El usuario confirmó la domiciliación. **No significa que quedó registrada:**
|
|
202
|
+
* se emite al click, sin esperar la respuesta del backend, que procesa el alta
|
|
203
|
+
* de forma asíncrona. La confirmación real llega por `autopayActivated`.
|
|
204
|
+
*/
|
|
205
|
+
interface TapipayDomiciliationConfirmedEvent {
|
|
206
|
+
/** True si adhirió todas las deudas en vez de una selección. */
|
|
207
|
+
enrollAllDebts: boolean;
|
|
208
|
+
selectedProductsCount: number;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Payload del evento domiciliationAccountCheckFailed.
|
|
212
|
+
*
|
|
213
|
+
* El chequeo en vivo (debounceado) de la CLABE/tarjeta ingresada en el step de
|
|
214
|
+
* datos de cuenta rechazó el valor actual. No es un hito de la secuencia
|
|
215
|
+
* anterior: puede dispararse cero, una o muchas veces mientras el usuario
|
|
216
|
+
* tipea — es el equivalente, para este flujo, de `autopayError`.
|
|
217
|
+
*
|
|
218
|
+
* Nunca incluye la CLABE/tarjeta ingresada ni el mensaje de error en español
|
|
219
|
+
* (ese texto es UI, puede cambiar sin aviso): solo el `bankId` seleccionado y
|
|
220
|
+
* el `reason` categorizado.
|
|
221
|
+
*/
|
|
222
|
+
interface TapipayDomiciliationAccountCheckFailedEvent {
|
|
223
|
+
/** Id del banco seleccionado en el catálogo de TapiPay. */
|
|
224
|
+
bankId: string;
|
|
225
|
+
/** Motivo categorizado del rechazo. */
|
|
226
|
+
reason: "checksum" | "luhn" | "card_type_blocked" | "bank_mismatch";
|
|
227
|
+
}
|
|
143
228
|
/**
|
|
144
229
|
* Instancia del SDK TapiPay expuesta en window.tapipay y retornada por loadTapipay().
|
|
145
230
|
*/
|
|
@@ -153,6 +238,11 @@ interface TapipayInstance {
|
|
|
153
238
|
on(event: "autopayActivated", handler: (data: TapipayAutopayActivatedEvent) => void): void;
|
|
154
239
|
on(event: "autopayRemoved", handler: (data: TapipayAutopayRemovedEvent) => void): void;
|
|
155
240
|
on(event: "autopayError", handler: (data: TapipayAutopayErrorEvent) => void): void;
|
|
241
|
+
on(event: "domiciliationBankSelected", handler: (data: TapipayDomiciliationBankSelectedEvent) => void): void;
|
|
242
|
+
on(event: "domiciliationFormCompleted", handler: (data: TapipayDomiciliationFormCompletedEvent) => void): void;
|
|
243
|
+
on(event: "domiciliationVerificationCompleted", handler: (data: TapipayDomiciliationVerificationCompletedEvent) => void): void;
|
|
244
|
+
on(event: "domiciliationConfirmed", handler: (data: TapipayDomiciliationConfirmedEvent) => void): void;
|
|
245
|
+
on(event: "domiciliationAccountCheckFailed", handler: (data: TapipayDomiciliationAccountCheckFailedEvent) => void): void;
|
|
156
246
|
off(event: "paymentWindowOpened", handler: (data: TapipayPaymentWindowOpenedEvent) => void): void;
|
|
157
247
|
off(event: "paymentSubmitted", handler: (data: TapipayPaymentSubmittedEvent) => void): void;
|
|
158
248
|
off(event: "paymentCancelled", handler: (data: TapipayPaymentCancelledEvent) => void): void;
|
|
@@ -160,6 +250,11 @@ interface TapipayInstance {
|
|
|
160
250
|
off(event: "autopayActivated", handler: (data: TapipayAutopayActivatedEvent) => void): void;
|
|
161
251
|
off(event: "autopayRemoved", handler: (data: TapipayAutopayRemovedEvent) => void): void;
|
|
162
252
|
off(event: "autopayError", handler: (data: TapipayAutopayErrorEvent) => void): void;
|
|
253
|
+
off(event: "domiciliationBankSelected", handler: (data: TapipayDomiciliationBankSelectedEvent) => void): void;
|
|
254
|
+
off(event: "domiciliationFormCompleted", handler: (data: TapipayDomiciliationFormCompletedEvent) => void): void;
|
|
255
|
+
off(event: "domiciliationVerificationCompleted", handler: (data: TapipayDomiciliationVerificationCompletedEvent) => void): void;
|
|
256
|
+
off(event: "domiciliationConfirmed", handler: (data: TapipayDomiciliationConfirmedEvent) => void): void;
|
|
257
|
+
off(event: "domiciliationAccountCheckFailed", handler: (data: TapipayDomiciliationAccountCheckFailedEvent) => void): void;
|
|
163
258
|
off(event: string, handler: (...args: unknown[]) => unknown): void;
|
|
164
259
|
/** Cola interna usada por el stub antes de que cargue el SDK real. */
|
|
165
260
|
_q?: [string, unknown[]][];
|
|
@@ -170,4 +265,4 @@ declare global {
|
|
|
170
265
|
}
|
|
171
266
|
}
|
|
172
267
|
|
|
173
|
-
export type { LoadTapipayOptions as L, TapipayInstance as T, TapipayAutopayActivatedEvent as a, TapipayAutopayAdhesionSummary as b, TapipayAutopayErrorEvent as c, TapipayAutopayLoadedEvent as d, TapipayAutopayMediaType as e, TapipayAutopayRemovedEvent as f,
|
|
268
|
+
export type { LoadTapipayOptions as L, TapipayInstance as T, TapipayAutopayActivatedEvent as a, TapipayAutopayAdhesionSummary as b, TapipayAutopayErrorEvent as c, TapipayAutopayLoadedEvent as d, TapipayAutopayMediaType as e, TapipayAutopayRemovedEvent as f, TapipayDomiciliationAccountCheckFailedEvent as g, TapipayDomiciliationAccountType as h, TapipayDomiciliationBankSelectedEvent as i, TapipayDomiciliationConfirmedEvent as j, TapipayDomiciliationFormCompletedEvent as k, TapipayDomiciliationVerificationCompletedEvent as l, TapipayDomiciliationVerificationMethod as m, TapipayEnvironment as n, TapipayOptions as o, TapipayPaymentCancelledEvent as p, TapipayPaymentSubmittedEvent as q, TapipayPaymentWindowOpenedEvent as r, TapipayView as s };
|
|
@@ -77,7 +77,7 @@ type TapipayPaymentCancelledEvent = Record<string, never>;
|
|
|
77
77
|
* Tipo de medio adherido expuesto al sitio cliente.
|
|
78
78
|
* Solo se expone el tipo lógico, nunca la marca ni el banco.
|
|
79
79
|
*/
|
|
80
|
-
type TapipayAutopayMediaType = "card" | "bank_account";
|
|
80
|
+
type TapipayAutopayMediaType = "card" | "bank_account" | "debit_card";
|
|
81
81
|
/**
|
|
82
82
|
* Resumen mínimo y seguro de una adhesión activa.
|
|
83
83
|
* Privacidad: solo tipo de medio + últimos 4 dígitos. El `id` es un hash opaco
|
|
@@ -140,6 +140,91 @@ interface TapipayAutopayErrorEvent {
|
|
|
140
140
|
/** Mensaje neutral para el host. */
|
|
141
141
|
message: string;
|
|
142
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Tipo de cuenta adherida, derivado de la longitud del identificador ingresado.
|
|
145
|
+
* 18 dígitos = CLABE, 16 = tarjeta de débito.
|
|
146
|
+
*/
|
|
147
|
+
type TapipayDomiciliationAccountType = "BANK_ACCOUNT" | "DEBIT_CARD";
|
|
148
|
+
/** Método con el que se verificó la cuenta en el alta de domiciliación. */
|
|
149
|
+
type TapipayDomiciliationVerificationMethod = "penny" | "kyc" | "transfer";
|
|
150
|
+
/**
|
|
151
|
+
* Payload del evento domiciliationBankSelected.
|
|
152
|
+
* El usuario eligió su banco en el alta de domiciliación. Emite en cada cambio
|
|
153
|
+
* de selección.
|
|
154
|
+
*/
|
|
155
|
+
interface TapipayDomiciliationBankSelectedEvent {
|
|
156
|
+
/** Id del banco en el catálogo de TapiPay. */
|
|
157
|
+
bankId: string;
|
|
158
|
+
/** Clave SPEI del banco. */
|
|
159
|
+
speiCode: string;
|
|
160
|
+
/** Nombre comercial del banco. */
|
|
161
|
+
name: string;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Payload del evento domiciliationFormCompleted.
|
|
165
|
+
*
|
|
166
|
+
* Los datos de la cuenta pasaron la validación del backend. Ojo con el timing:
|
|
167
|
+
* NO se dispara al salir de la pantalla del formulario, sino al confirmar el
|
|
168
|
+
* método de verificación — que es cuando la cuenta se registra contra el
|
|
169
|
+
* backend. Si los datos son inválidos, el evento no llega.
|
|
170
|
+
*
|
|
171
|
+
* Nunca incluye la CLABE ni el número de tarjeta completos.
|
|
172
|
+
*/
|
|
173
|
+
interface TapipayDomiciliationFormCompletedEvent {
|
|
174
|
+
bankId: string;
|
|
175
|
+
/** Tipo de cuenta derivado de la longitud del identificador. */
|
|
176
|
+
accountType: TapipayDomiciliationAccountType;
|
|
177
|
+
/** Últimos 4 dígitos de la CLABE o tarjeta. `null` si no está disponible. */
|
|
178
|
+
lastFour: string | null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Payload del evento domiciliationVerificationCompleted.
|
|
182
|
+
*
|
|
183
|
+
* La verificación de la cuenta llegó a un DESENLACE. Dos aclaraciones que
|
|
184
|
+
* importan para interpretarlo:
|
|
185
|
+
*
|
|
186
|
+
* 1. Solo emite al outcome final. Un intento de monto incorrecto que aún deja
|
|
187
|
+
* reintentos disponibles NO dispara el evento: `outcome: "failed"` llega
|
|
188
|
+
* recién cuando se agotan los intentos. Ausencia de evento NO significa que
|
|
189
|
+
* el usuario se frenó — puede estar reintentando.
|
|
190
|
+
* 2. Es method-agnostic y cubre el caso en que el paso de verificación no
|
|
191
|
+
* aparece en pantalla (banco que no la requiere, o método `kyc`/`transfer`):
|
|
192
|
+
* ahí también se emite, para que la secuencia no quede incompleta.
|
|
193
|
+
*/
|
|
194
|
+
interface TapipayDomiciliationVerificationCompletedEvent {
|
|
195
|
+
method: TapipayDomiciliationVerificationMethod;
|
|
196
|
+
outcome: "approved" | "failed";
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Payload del evento domiciliationConfirmed.
|
|
200
|
+
*
|
|
201
|
+
* El usuario confirmó la domiciliación. **No significa que quedó registrada:**
|
|
202
|
+
* se emite al click, sin esperar la respuesta del backend, que procesa el alta
|
|
203
|
+
* de forma asíncrona. La confirmación real llega por `autopayActivated`.
|
|
204
|
+
*/
|
|
205
|
+
interface TapipayDomiciliationConfirmedEvent {
|
|
206
|
+
/** True si adhirió todas las deudas en vez de una selección. */
|
|
207
|
+
enrollAllDebts: boolean;
|
|
208
|
+
selectedProductsCount: number;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Payload del evento domiciliationAccountCheckFailed.
|
|
212
|
+
*
|
|
213
|
+
* El chequeo en vivo (debounceado) de la CLABE/tarjeta ingresada en el step de
|
|
214
|
+
* datos de cuenta rechazó el valor actual. No es un hito de la secuencia
|
|
215
|
+
* anterior: puede dispararse cero, una o muchas veces mientras el usuario
|
|
216
|
+
* tipea — es el equivalente, para este flujo, de `autopayError`.
|
|
217
|
+
*
|
|
218
|
+
* Nunca incluye la CLABE/tarjeta ingresada ni el mensaje de error en español
|
|
219
|
+
* (ese texto es UI, puede cambiar sin aviso): solo el `bankId` seleccionado y
|
|
220
|
+
* el `reason` categorizado.
|
|
221
|
+
*/
|
|
222
|
+
interface TapipayDomiciliationAccountCheckFailedEvent {
|
|
223
|
+
/** Id del banco seleccionado en el catálogo de TapiPay. */
|
|
224
|
+
bankId: string;
|
|
225
|
+
/** Motivo categorizado del rechazo. */
|
|
226
|
+
reason: "checksum" | "luhn" | "card_type_blocked" | "bank_mismatch";
|
|
227
|
+
}
|
|
143
228
|
/**
|
|
144
229
|
* Instancia del SDK TapiPay expuesta en window.tapipay y retornada por loadTapipay().
|
|
145
230
|
*/
|
|
@@ -153,6 +238,11 @@ interface TapipayInstance {
|
|
|
153
238
|
on(event: "autopayActivated", handler: (data: TapipayAutopayActivatedEvent) => void): void;
|
|
154
239
|
on(event: "autopayRemoved", handler: (data: TapipayAutopayRemovedEvent) => void): void;
|
|
155
240
|
on(event: "autopayError", handler: (data: TapipayAutopayErrorEvent) => void): void;
|
|
241
|
+
on(event: "domiciliationBankSelected", handler: (data: TapipayDomiciliationBankSelectedEvent) => void): void;
|
|
242
|
+
on(event: "domiciliationFormCompleted", handler: (data: TapipayDomiciliationFormCompletedEvent) => void): void;
|
|
243
|
+
on(event: "domiciliationVerificationCompleted", handler: (data: TapipayDomiciliationVerificationCompletedEvent) => void): void;
|
|
244
|
+
on(event: "domiciliationConfirmed", handler: (data: TapipayDomiciliationConfirmedEvent) => void): void;
|
|
245
|
+
on(event: "domiciliationAccountCheckFailed", handler: (data: TapipayDomiciliationAccountCheckFailedEvent) => void): void;
|
|
156
246
|
off(event: "paymentWindowOpened", handler: (data: TapipayPaymentWindowOpenedEvent) => void): void;
|
|
157
247
|
off(event: "paymentSubmitted", handler: (data: TapipayPaymentSubmittedEvent) => void): void;
|
|
158
248
|
off(event: "paymentCancelled", handler: (data: TapipayPaymentCancelledEvent) => void): void;
|
|
@@ -160,6 +250,11 @@ interface TapipayInstance {
|
|
|
160
250
|
off(event: "autopayActivated", handler: (data: TapipayAutopayActivatedEvent) => void): void;
|
|
161
251
|
off(event: "autopayRemoved", handler: (data: TapipayAutopayRemovedEvent) => void): void;
|
|
162
252
|
off(event: "autopayError", handler: (data: TapipayAutopayErrorEvent) => void): void;
|
|
253
|
+
off(event: "domiciliationBankSelected", handler: (data: TapipayDomiciliationBankSelectedEvent) => void): void;
|
|
254
|
+
off(event: "domiciliationFormCompleted", handler: (data: TapipayDomiciliationFormCompletedEvent) => void): void;
|
|
255
|
+
off(event: "domiciliationVerificationCompleted", handler: (data: TapipayDomiciliationVerificationCompletedEvent) => void): void;
|
|
256
|
+
off(event: "domiciliationConfirmed", handler: (data: TapipayDomiciliationConfirmedEvent) => void): void;
|
|
257
|
+
off(event: "domiciliationAccountCheckFailed", handler: (data: TapipayDomiciliationAccountCheckFailedEvent) => void): void;
|
|
163
258
|
off(event: string, handler: (...args: unknown[]) => unknown): void;
|
|
164
259
|
/** Cola interna usada por el stub antes de que cargue el SDK real. */
|
|
165
260
|
_q?: [string, unknown[]][];
|
|
@@ -170,4 +265,4 @@ declare global {
|
|
|
170
265
|
}
|
|
171
266
|
}
|
|
172
267
|
|
|
173
|
-
export type { LoadTapipayOptions as L, TapipayInstance as T, TapipayAutopayActivatedEvent as a, TapipayAutopayAdhesionSummary as b, TapipayAutopayErrorEvent as c, TapipayAutopayLoadedEvent as d, TapipayAutopayMediaType as e, TapipayAutopayRemovedEvent as f,
|
|
268
|
+
export type { LoadTapipayOptions as L, TapipayInstance as T, TapipayAutopayActivatedEvent as a, TapipayAutopayAdhesionSummary as b, TapipayAutopayErrorEvent as c, TapipayAutopayLoadedEvent as d, TapipayAutopayMediaType as e, TapipayAutopayRemovedEvent as f, TapipayDomiciliationAccountCheckFailedEvent as g, TapipayDomiciliationAccountType as h, TapipayDomiciliationBankSelectedEvent as i, TapipayDomiciliationConfirmedEvent as j, TapipayDomiciliationFormCompletedEvent as k, TapipayDomiciliationVerificationCompletedEvent as l, TapipayDomiciliationVerificationMethod as m, TapipayEnvironment as n, TapipayOptions as o, TapipayPaymentCancelledEvent as p, TapipayPaymentSubmittedEvent as q, TapipayPaymentWindowOpenedEvent as r, TapipayView as s };
|