{"_id":"tumipay-cards-js","_rev":"32-a81902b476057142d180a76d89e31b86","name":"tumipay-cards-js","dist-tags":{"latest":"3.0.4"},"versions":{"2.0.13":{"name":"tumipay-cards-js","version":"2.0.13","keywords":["tumipay","payments","cards","typescript","sdk"],"author":"","license":"MIT","_id":"tumipay-cards-js@2.0.13","maintainers":[{"name":"tumipay","email":"admin.ti@tumipay.co"}],"dist":{"shasum":"bc8bc1fbe63317f75de1a1be7ef682f131165599","tarball":"https://registry.npmjs.org/tumipay-cards-js/-/tumipay-cards-js-2.0.13.tgz","fileCount":310,"integrity":"sha512-RMzPxm9O48Ir07NXmUWQk3K8pyi+Vf4B0Al/ODzUofoW2ReYGQMMJPZhFs/9+5E/ZGo8e9f/twJtPJniRagfFQ==","signatures":[{"sig":"MEUCIQCTuxZnzAHCO8dOAsE1HRCMPbPsKL+Fl2LEgo6CY4XT+gIgXFOjxu5B8sjV3T1kpLL7PLQIc4T2j3/8vVmQsiftafE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":313986},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6542a689f0b2c46a46c5c155a85dae7fd551ee7b","scripts":{"lint":"tsc --noEmit","test":"node --test","build":"npm run clean && node scripts/generate-env.js && tsc","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","build:staging":"npm run build","prepublishOnly":"npm run build:production","build:production":"npm run build"},"_npmUser":{"name":"tumipay","email":"admin.ti@tumipay.co"},"_npmVersion":"10.8.2","description":"TypeScript SDK for TumiPay card payment processing","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@kushki/js":"^1.40.1"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^17.3.1","rollup":"^4.59.0","cross-env":"^10.1.0","typescript":"^5.6.3","@types/node":"^20.0.0","rollup-plugin-dts":"^6.3.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/tumipay-cards-js_2.0.13_1771943880312_0.9143758703667326","host":"s3://npm-registry-packages-npm-production"}},"2.0.14":{"name":"tumipay-cards-js","version":"2.0.14","keywords":["tumipay","payments","cards","typescript","sdk"],"author":"","license":"MIT","_id":"tumipay-cards-js@2.0.14","maintainers":[{"name":"tumipay","email":"admin.ti@tumipay.co"}],"dist":{"shasum":"0dddd02af2160c2a6532e7d46a02e488b64186c3","tarball":"https://registry.npmjs.org/tumipay-cards-js/-/tumipay-cards-js-2.0.14.tgz","fileCount":314,"integrity":"sha512-p/Z4F3L+2bANiKOTBqsDCcFmkGW7i5UQnGgLaXIjlpWl6mVdShO11dPijjLomiFmO72kBTflB9B6ueFzuRDCsA==","signatures":[{"sig":"MEUCIGN/HG4HJwNXZtF5ok1yXZ1m+3wX/Jts5/pY1+X797lSAiEAxHus5RXItO9AIxnoVFRvv3+V7K1y4eVZPSYxigvaBB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334917},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f4105c6a1e5a9c69b481f43dd663facda146e75e","scripts":{"lint":"tsc --noEmit","test":"node --test","build":"npm run clean && node scripts/generate-env.js && tsc","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","playground":"vite","build:staging":"npm run build","prepublishOnly":"npm run build:production","build:production":"npm run build"},"_npmUser":{"name":"tumipay","email":"admin.ti@tumipay.co"},"_npmVersion":"10.8.2","description":"TypeScript SDK for TumiPay card payment processing","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@kushki/js":"^1.40.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","dotenv":"^17.3.1","rollup":"^4.59.0","cross-env":"^10.1.0","typescript":"^5.6.3","@types/node":"^20.0.0","rollup-plugin-dts":"^6.3.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/tumipay-cards-js_2.0.14_1771956292884_0.3826520174915169","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"tumipay-cards-js","version":"3.0.0","keywords":["tumipay","payments","cards","typescript","sdk"],"author":"","license":"MIT","_id":"tumipay-cards-js@3.0.0","maintainers":[{"name":"tumipay","email":"admin.ti@tumipay.co"}],"dist":{"shasum":"59c3ff8499e1a6d08750039e2dff510cade0a243","tarball":"https://registry.npmjs.org/tumipay-cards-js/-/tumipay-cards-js-3.0.0.tgz","fileCount":342,"integrity":"sha512-DK0ly+bkuAZitwAkarAHcuVInUqGBG5H6Vpg41qcpR/oyGopzggMRpc1/HUhnl69sO+zn52yy8REsrhR/zRuzA==","signatures":[{"sig":"MEUCIQDOPWnzdD7zDrimYk3mhpwoIjkqi60guDeyGQ/fXnaZxAIgfzjCnfa56smc8KvGvuTZr09fEsJXari+/zWGU30415A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347304},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"976d738ebcd9e2d5721f51beb5a70d7d0d5d19a1","scripts":{"lint":"tsc --noEmit","test":"node --test","build":"npm run clean && node scripts/generate-env.js && tsc","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","playground":"vite","build:staging":"npm run build","prepublishOnly":"npm run build:production","build:production":"npm run build"},"_npmUser":{"name":"tumipay","email":"admin.ti@tumipay.co"},"_npmVersion":"10.8.2","description":"TypeScript SDK for TumiPay card payment processing","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@kushki/js":"^1.40.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","dotenv":"^17.3.1","rollup":"^4.59.0","cross-env":"^10.1.0","typescript":"^5.6.3","@types/node":"^20.0.0","rollup-plugin-dts":"^6.3.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/tumipay-cards-js_3.0.0_1772729578686_0.29909860339920846","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"tumipay-cards-js","version":"3.0.1","keywords":["tumipay","payments","cards","typescript","sdk"],"author":"","license":"MIT","_id":"tumipay-cards-js@3.0.1","maintainers":[{"name":"tumipay","email":"admin.ti@tumipay.co"}],"dist":{"shasum":"2c07873d8452160929e0dd6305ee25832a073551","tarball":"https://registry.npmjs.org/tumipay-cards-js/-/tumipay-cards-js-3.0.1.tgz","fileCount":342,"integrity":"sha512-CiuaYQLMcrfGauOFTsDsUvFH1Wvxz9ZPgDXvIQtB6ryqTHi0xQNU7ylnCnuXkMpOtRgJhfI+CYrML+fB7eAgvQ==","signatures":[{"sig":"MEUCIQDk5+fsuVWjdwOm+UeiOGoyzn7JHoENyCHCvV9RSmrU+gIgYK+azJXv/IBNtDyaWdIrfHkkNoDfSvhVm9s6wosreiE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332663},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1b23a7b38e81a97171cb6b94f2baf095848d2f81","scripts":{"lint":"tsc --noEmit","test":"node --test","build":"npm run clean && node scripts/generate-env.js && tsc","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","playground":"vite","build:staging":"npm run build","prepublishOnly":"npm run build:production","build:production":"npm run build"},"_npmUser":{"name":"tumipay","email":"admin.ti@tumipay.co"},"_npmVersion":"10.8.2","description":"TypeScript SDK for TumiPay card payment processing","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@kushki/js":"^1.40.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","dotenv":"^17.3.1","rollup":"^4.59.0","cross-env":"^10.1.0","typescript":"^5.6.3","@types/node":"^20.0.0","rollup-plugin-dts":"^6.3.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/tumipay-cards-js_3.0.1_1773852717927_0.07627922958794842","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"tumipay-cards-js","version":"3.0.2","keywords":["tumipay","payments","cards","typescript","sdk"],"author":"","license":"MIT","_id":"tumipay-cards-js@3.0.2","maintainers":[{"name":"tumipay","email":"admin.ti@tumipay.co"}],"dist":{"shasum":"d4d95b7ef2c2578ab8588fcc376d98a5e01b51db","tarball":"https://registry.npmjs.org/tumipay-cards-js/-/tumipay-cards-js-3.0.2.tgz","fileCount":342,"integrity":"sha512-DyLt1sb/l9uaCLViyf0eHmBqPPwPdC11ZvQEHuFLd8LP3B837DCI1wd5UhYkw2xRI7ZVKWxyxMZ68SQZFzESnw==","signatures":[{"sig":"MEUCIQDEdGgx3xj/HkVDSbbF9ZmG0vbFVbTvSB6VkppjcFBUPQIgUS7upXoDpETNfOaEgj9LiGyyCQyYLleKPkO+3RQRISo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332924},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1b23a7b38e81a97171cb6b94f2baf095848d2f81","scripts":{"lint":"tsc --noEmit","test":"node --test","build":"npm run clean && node scripts/generate-env.js && tsc","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","playground":"vite","build:staging":"npm run build","prepublishOnly":"npm run build:production","build:production":"npm run build"},"_npmUser":{"name":"tumipay","email":"admin.ti@tumipay.co"},"_npmVersion":"10.8.2","description":"TypeScript SDK for TumiPay card payment processing","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@kushki/js":"^1.40.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","dotenv":"^17.3.1","rollup":"^4.59.0","cross-env":"^10.1.0","typescript":"^5.6.3","@types/node":"^20.0.0","rollup-plugin-dts":"^6.3.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/tumipay-cards-js_3.0.2_1773854343965_0.914801468295587","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"tumipay-cards-js","version":"3.0.3","keywords":["tumipay","payments","cards","typescript","sdk"],"author":"","license":"MIT","_id":"tumipay-cards-js@3.0.3","maintainers":[{"name":"tumipay","email":"admin.ti@tumipay.co"}],"dist":{"shasum":"25679a3499c0ee7cc3d30f120867842e50e46f2f","tarball":"https://registry.npmjs.org/tumipay-cards-js/-/tumipay-cards-js-3.0.3.tgz","fileCount":342,"integrity":"sha512-E2ENdYZ4CnQvBnsiguPzgrO8SbXnXRQuiDZMwuEWuzKMCtOtSB98tlVHXF3tvId2Q4d/2o0f5YnzCgA6bqE3+Q==","signatures":[{"sig":"MEQCICueDZj3+bJpfjQxl8+GH6cHxPiTaQB+jfNyOwktqJMQAiA+/X9HN3WDmmDloVT8CfzIQNjRCEpshMrlGRXWC4c5kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332498},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e4524fd8d4cff10a600a5da01cc294712ce1096b","scripts":{"lint":"tsc --noEmit","test":"node --test","build":"npm run clean && node scripts/generate-env.js && tsc","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","playground":"vite","build:staging":"npm run build","prepublishOnly":"npm run build:production","build:production":"npm run build"},"_npmUser":{"name":"tumipay","email":"admin.ti@tumipay.co"},"_npmVersion":"10.8.2","description":"TypeScript SDK for TumiPay card payment processing","directories":{},"_nodeVersion":"20.19.0","dependencies":{"@kushki/js":"^1.40.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","dotenv":"^17.3.1","rollup":"^4.59.0","cross-env":"^10.1.0","typescript":"^5.6.3","@types/node":"^20.0.0","rollup-plugin-dts":"^6.3.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/tumipay-cards-js_3.0.3_1777300502909_0.3476277104908807","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"tumipay-cards-js","version":"3.0.4","description":"TypeScript SDK for TumiPay card payment processing","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"npm run clean && node scripts/generate-env.js && tsc","build:staging":"npm run build","build:production":"npm run build","test":"node --test","lint":"tsc --noEmit","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","prepublishOnly":"npm run build:production","playground":"vite"},"keywords":["tumipay","payments","cards","typescript","sdk"],"author":"","license":"MIT","devDependencies":{"@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-typescript":"^12.3.0","@types/node":"^20.0.0","cross-env":"^10.1.0","dotenv":"^17.3.1","rollup":"^4.59.0","rollup-plugin-dts":"^6.3.0","typescript":"^5.6.3","vite":"^7.3.1"},"engines":{"node":">=18.0.0"},"dependencies":{"@kushki/js":"^1.40.1"},"_id":"tumipay-cards-js@3.0.4","gitHead":"acc343afb872f254b5b033ccfbb4d2f33ab283ab","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ibGBX3DPK4gNAI1aZubWtqbZ5VQvXIUPBgrHPjN7G4s+3Jdq3F4x6wXZq4WnM2f/dzR/Fll4HYY6PNpZHKRipw==","shasum":"a4fe2297161348ecd77ddbd71a9b2a16e8b8e0f1","tarball":"https://registry.npmjs.org/tumipay-cards-js/-/tumipay-cards-js-3.0.4.tgz","fileCount":342,"unpackedSize":332696,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEmEtTBt9tdb3SEMNNcxkvh9pD/IsRmitUWlHjSTEiZjAiEAxu6wNNb+ZfYfvqqdZWKzVxbDxCEZ0v/GVryExd49k2I="}]},"_npmUser":{"name":"tumipay","email":"admin.ti@tumipay.co"},"directories":{},"maintainers":[{"name":"tumipay","email":"admin.ti@tumipay.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tumipay-cards-js_3.0.4_1777381548381_0.8477373938944472"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-23T20:23:35.862Z","modified":"2026-04-28T13:05:48.647Z","2.0.1":"2026-02-23T20:23:36.061Z","2.0.2":"2026-02-23T20:29:07.260Z","2.0.3":"2026-02-23T20:48:40.203Z","2.0.4":"2026-02-23T22:26:00.387Z","2.0.5":"2026-02-23T22:36:44.952Z","2.0.6":"2026-02-24T00:46:27.928Z","2.0.7":"2026-02-24T00:53:04.612Z","2.0.8":"2026-02-24T01:04:59.918Z","2.0.9":"2026-02-24T01:12:43.429Z","2.0.10":"2026-02-24T01:31:46.924Z","2.0.11":"2026-02-24T01:50:02.403Z","2.0.12":"2026-02-24T02:00:18.339Z","2.0.13":"2026-02-24T14:38:00.461Z","2.0.14":"2026-02-24T18:04:53.044Z","3.0.0":"2026-03-05T16:52:58.892Z","3.0.1":"2026-03-18T16:51:58.077Z","3.0.2":"2026-03-18T17:19:04.115Z","3.0.3":"2026-04-27T14:35:03.060Z","3.0.4":"2026-04-28T13:05:48.553Z"},"license":"MIT","keywords":["tumipay","payments","cards","typescript","sdk"],"description":"TypeScript SDK for TumiPay card payment processing","maintainers":[{"name":"tumipay","email":"admin.ti@tumipay.co"}],"readme":"# tumipay-cards-js\r\n\r\nSDK JavaScript/TypeScript para tokenización segura de tarjetas de crédito y débito con TumiPay.\r\n\r\n## Instalación\r\n\r\n```bash\r\nnpm install tumipay-cards-js\r\n```\r\n\r\n## Inicio Rápido\r\n\r\n```typescript\r\nimport { TumiPayCardPaymentSDK } from 'tumipay-cards-js';\r\n\r\n// 1. Crear instancia\r\nconst sdk = new TumiPayCardPaymentSDK({\r\n  environment: 'staging',   // \"staging\" | \"production\"\r\n  currency: 'COP',\r\n});\r\n\r\n// 2. Inicializar con las credenciales de TumiPay\r\nawait sdk.initialize({\r\n  merchantId: 'tu-merchant-id',\r\n  tokenTop: 'tu-token-top',\r\n  basicAuthUser: 'tu-usuario',\r\n  basicAuthPass: 'tu-contraseña'\r\n});\r\n\r\n// 3. Validar tarjeta (no requiere inicialización)\r\nconst validation = sdk.validateCard({\r\n  cardNumber: '4111111111111111',\r\n  cardHolderName: 'Juan Perez',\r\n  expirationMonth: '12',\r\n  expirationYear: '29',\r\n  cvv: '123',\r\n});\r\n\r\nif (!validation.status) {\r\n  console.error(validation.errors);\r\n  return;\r\n}\r\n\r\n// 4. Autenticar tarjeta — el resultado incluye el token de suscripción\r\nconst auth = await sdk.authenticateCard({\r\n  cardNumber: '4111111111111111',\r\n  cardHolderName: 'Juan Perez',\r\n  expirationMonth: '12',\r\n  expirationYear: '29',\r\n  cvv: '123',\r\n}, {\r\n  callbackUrl: 'https://tuapp.com/3ds-callback', // Requerido en producción\r\n});\r\n\r\n// 4a. Producción — siempre authType === '3ds' y llega redirectUrl\r\nif (auth.data?.authType === '3ds' && auth.data.redirectUrl) {\r\n  const token = auth.data.token; // usar para crear la suscripción\r\n  window.location.href = auth.data.redirectUrl;\r\n\r\n// 4b. Staging con 3DS modal — token disponible directo en la respuesta\r\n} else if (auth.data?.authType === '3ds' && !auth.data.redirectUrl) {\r\n  const token = auth.data.token;\r\n  console.log(token);\r\n\r\n// 4c. Staging sin autenticación adicional — solo puede ocurrir en staging\r\n} else if (auth.data?.authType === 'none') {\r\n  const token = auth.data.token;\r\n  console.log(token);\r\n}\r\n```\r\n\r\n---\r\n\r\n## API Reference\r\n\r\n### `new TumiPayCardPaymentSDK(config)`\r\n\r\nCrea una instancia del SDK. No realiza llamadas a la red.\r\n\r\n```typescript\r\ninterface SdkConfig {\r\n  environment: 'staging' | 'production';\r\n  currency: string;  // Ej: \"COP\", \"USD\"\r\n}\r\n```\r\n\r\n---\r\n\r\n### `sdk.initialize({ merchantId, tokenTop, basicAuthUser, basicAuthPass })`\r\n\r\nLlama a `/api/configuration` y carga las credenciales internas del SDK.\r\n\r\n**Debe llamarse antes de** `authenticateCard` y `getBinInfo`.\r\n\r\n```typescript\r\nconst result = await sdk.initialize({\r\n  merchantId: 'tu-merchant-id',\r\n  tokenTop: 'tu-token-top',\r\n  basicAuthUser: 'tu-usuario',\r\n  basicAuthPass: 'tu-contraseña'\r\n});\r\n```\r\n\r\n**Response:**\r\n```json\r\n{\r\n  \"initialized\": true,\r\n  \"code\": \"SUCCESS\",\r\n  \"status\": true,\r\n  \"message\": \"Configuración obtenida correctamente\",\r\n  \"data\": {\r\n    \"payment_provider\": {\r\n      \"external_merchant_id\": \"...\",\r\n      \"public_key\": \"...\",\r\n      \"environment\": \"uat\"\r\n    },\r\n    \"otp_config\": {\r\n      \"id_credentials\": \"...\",\r\n      \"public_key\": \"...\",\r\n      \"private_key\": \"...\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n---\r\n\r\n### `sdk.validateCard(request)`\r\n\r\nValida los datos de tarjeta **localmente** (sin llamadas a la red). No requiere inicialización.\r\n\r\n```typescript\r\nsdk.validateCard({\r\n  cardNumber: '4111111111111111',\r\n  cardHolderName: 'Juan Perez',\r\n  expirationMonth: '12',\r\n  expirationYear: '29',\r\n  cvv: '123',\r\n});\r\n```\r\n\r\n**Marcas soportadas:** `visa`, `mastercard`, `amex`, `discover`, `diners`, `jcb`\r\n\r\n---\r\n\r\n### `sdk.authenticateCard(card, options?)`\r\n\r\nAutentica la tarjeta con el banco a través de Kushki (3DS). **Requiere inicialización previa.**\r\n\r\nEl comportamiento final depende del ambiente:\r\n- **Producción** → siempre retorna `authType: \"3ds\"`, incluso si el banco indica que no se requiere autenticación. La respuesta incluye `data.token` y `data.redirectUrl`. `callbackUrl` **requerida** (HTTPS).\r\n- **Staging con 3DS** → challenge modal inline → `data.token` disponible directo.\r\n- **Staging sin 3DS** → retorna `authType: \"none\"` → `data.token` disponible directo.\r\n\r\n```typescript\r\nconst auth = await sdk.authenticateCard(card, {\r\n  callbackUrl: 'https://tuapp.com/3ds-callback',  // Requerido en producción (HTTPS)\r\n  documentNumber: '1234567890',                    // Opcional\r\n  email: 'usuario@correo.com',                     // Opcional\r\n});\r\n```\r\n\r\n**Response (authType \"none\" — solo staging):**\r\n```json\r\n{\r\n  \"code\": \"SUCCESS\",\r\n  \"status\": true,\r\n  \"message\": \"Autenticación no requerida por el banco\",\r\n  \"data\": {\r\n    \"authType\": \"none\",\r\n    \"token\": \"406aea95...\"\r\n  }\r\n}\r\n```\r\n\r\n**Response (authType \"3ds\" — staging):**\r\n```json\r\n{\r\n  \"code\": \"SUCCESS\",\r\n  \"status\": true,\r\n  \"message\": \"Autenticación 3DS completada correctamente\",\r\n  \"data\": {\r\n    \"authType\": \"3ds\",\r\n    \"token\": \"406aea95...\"\r\n  }\r\n}\r\n```\r\n\r\n**Response (authType \"3ds\" producción):**\r\n```json\r\n{\r\n  \"code\": \"SUCCESS\",\r\n  \"status\": true,\r\n  \"message\": \"Autenticación 3DS requerida\",\r\n  \"data\": {\r\n    \"authType\": \"3ds\",\r\n    \"token\": \"406aea95...\",\r\n    \"redirectUrl\": \"https://kushki-3ds.com/...\"\r\n  }\r\n}\r\n```\r\n\r\n---\r\n\r\n### `sdk.getBinInfo(bin)`\r\n\r\nConsulta información del BIN en Kushki. **Requiere inicialización previa.**\r\n\r\n```typescript\r\nconst result = await sdk.getBinInfo('411111');\r\n```\r\n\r\n---\r\n\r\n### `sdk.isInitialized()` / `sdk.getConfig()`\r\n\r\n```typescript\r\nsdk.isInitialized(); // boolean\r\nsdk.getConfig();     // { environment, currency }\r\n```\r\n\r\n---\r\n\r\n## Flujo Completo con Autenticación\r\n\r\n```typescript\r\nimport {\r\n  TumiPayCardPaymentSDK,\r\n  type AuthenticateCardResult,\r\n} from 'tumipay-cards-js';\r\n\r\nconst sdk = new TumiPayCardPaymentSDK({ environment: 'staging', currency: 'COP' });\r\nawait sdk.initialize({\r\n  merchantId: 'tu-merchant-id',\r\n  tokenTop: 'tu-token-top',\r\n  basicAuthUser: 'tu-usuario',\r\n  basicAuthPass: 'tu-contraseña'\r\n});\r\n\r\nconst card = {\r\n  cardNumber: '4111111111111111', cardHolderName: 'Juan Perez',\r\n  expirationMonth: '12', expirationYear: '29', cvv: '123',\r\n};\r\n\r\n// Paso 1 — Validar localmente\r\nconst validation = sdk.validateCard(card);\r\nif (!validation.status) { /* mostrar errores */ return; }\r\n\r\n// Paso 2 — Autenticar (obtiene el token de suscripción directamente)\r\nconst auth = await sdk.authenticateCard(card, {\r\n  callbackUrl: 'https://tuapp.com/3ds',  // Requerido en producción para 3DS redirect\r\n});\r\n\r\nlet token: string | undefined;\r\n\r\nif (auth.data?.authType === '3ds' && auth.data.redirectUrl) {\r\n  // Producción — este es el único flujo posible en producción\r\n  token = auth.data.token;\r\n  window.location.href = auth.data.redirectUrl;\r\n\r\n} else if (auth.data?.authType === '3ds' && !auth.data.redirectUrl) {\r\n  // Staging — 3DS modal completado inline, token disponible\r\n  token = auth.data.token;\r\n\r\n} else if (auth.data?.authType === 'none') {\r\n  // Solo en staging — este flujo nunca ocurre en producción\r\n  token = auth.data.token;\r\n}\r\n\r\n// Enviar `token` al backend\r\nif (token) {\r\n  await fetch('/api/suscripcion', {\r\n    method: 'POST',\r\n    body: JSON.stringify({ token, merchantId: 'tu-merchant-id' }),\r\n  });\r\n}\r\n```\r\n\r\n---\r\n\r\n## Tipos exportados\r\n\r\n```typescript\r\nimport type {\r\n  SdkConfig,\r\n  SdkInitOptions,\r\n  SdkInitializationResult,\r\n  ValidateCardRequest,\r\n  ValidateCardResult,\r\n  ValidateCardError,\r\n  ValidateCardSuccessData,\r\n  GetBinInfoResult,\r\n  AuthType,\r\n  AuthenticateCardOptions,\r\n  AuthenticateCardResult,\r\n  AuthenticateCardResultData,\r\n  CardBrand,\r\n  BinInfoResult,\r\n  SdkEnvironment,\r\n} from 'tumipay-cards-js';\r\n```\r\n\r\n## Licencia\r\n\r\nMIT\r\n","readmeFilename":"README.md"}