{"_id":"@diegomax/siro-pagos","_rev":"2-fdb6294e05393ed2fc17058bfa040dbf","name":"@diegomax/siro-pagos","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@diegomax/siro-pagos","version":"0.1.0","keywords":["siro","payments","gateway","typescript"],"license":"UNLICENSED","_id":"@diegomax/siro-pagos@0.1.0","maintainers":[{"name":"diego.massanti","email":"diego@massanti.com"}],"dist":{"shasum":"58493d4eb12ceb276191789b48e7a3d787817b4a","tarball":"https://registry.npmjs.org/@diegomax/siro-pagos/-/siro-pagos-0.1.0.tgz","fileCount":35,"integrity":"sha512-a8IRHs2xV/g9JH7t7kY88lA4hF7JzYmsG19RcUpPjrI3Z8qAEoXl3cr9a4DIJ7+9pBktT9H3YTBf7bC6//sdtA==","signatures":[{"sig":"MEUCIBEvnHsDLm6SdHeg5NlqwLr+VEFPhKZPlUV0mctMbswRAiEA+y/fIFX2sPsqrlZD9FrDaCtwudkFDB4uSwAj8t6iFJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93559},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.check.json --noEmit","test:smoke":"vitest run test/smoke --passWithNoTests","test:watch":"vitest"},"_npmUser":{"name":"diego.massanti","email":"diego@massanti.com"},"_npmVersion":"11.9.0","description":"TypeScript client for the SIRO Pagos API.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.25.28"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.6.0"},"_npmOperationalInternal":{"tmp":"tmp/siro-pagos_0.1.0_1776138911858_0.6444457975724418","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@diegomax/siro-pagos","version":"0.2.0","description":"TypeScript client for the SIRO Pagos API.","type":"module","engines":{"node":">=22"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.check.json --noEmit","test":"vitest run","test:watch":"vitest","test:smoke":"vitest run test/smoke --passWithNoTests"},"keywords":["siro","payments","gateway","typescript"],"repository":{"type":"git","url":"git+https://github.com/DiegoMax/siro-pagos.git"},"license":"UNLICENSED","dependencies":{"zod":"^3.25.28"},"devDependencies":{"@types/node":"^24.6.0","typescript":"^5.9.3","vitest":"^3.2.4"},"gitHead":"1fd18de7fada4c7d365016b10b1d73123dc42eb3","_id":"@diegomax/siro-pagos@0.2.0","bugs":{"url":"https://github.com/DiegoMax/siro-pagos/issues"},"homepage":"https://github.com/DiegoMax/siro-pagos#readme","_nodeVersion":"22.22.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-S90TK8i84yjcNuZAxuVvF9Zmwlq1ujubJeB3Ub/Ai64B5Eo93s7g46D0JKmALCSSHu7Vs/K5h213uYutyLP9Ug==","shasum":"4d7f7640d111c3b473041fcdb73e8aa5e1a62229","tarball":"https://registry.npmjs.org/@diegomax/siro-pagos/-/siro-pagos-0.2.0.tgz","fileCount":35,"unpackedSize":94087,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICr0kveO2DiX3ozkSDR7w8r1W7NtXUqhclShW/gpzA2wAiBiVGTVIO7CKw5sOHsf6C5cdre6M5say1uU8zTHdNWcMg=="}]},"_npmUser":{"name":"diego.massanti","email":"diego@massanti.com"},"directories":{},"maintainers":[{"name":"diego.massanti","email":"diego@massanti.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/siro-pagos_0.2.0_1776202379739_0.9073009144897994"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T03:55:11.799Z","modified":"2026-04-14T21:33:00.019Z","0.1.0":"2026-04-14T03:55:11.994Z","0.2.0":"2026-04-14T21:32:59.892Z"},"license":"UNLICENSED","keywords":["siro","payments","gateway","typescript"],"description":"TypeScript client for the SIRO Pagos API.","maintainers":[{"name":"diego.massanti","email":"diego@massanti.com"}],"readme":"# `@diegomax/siro-pagos`\n\nCliente TypeScript para la API de [SIRO Pagos](https://onlinesiro.com.ar/) usando `fetch` nativo de Node 22.\n\nDocumentacion oficial de la API de SIRO Pagos:\nhttps://siropagos.bancoroela.com.ar/swagger/ui/index\n\n## Caracteristicas\n\n- Solo para Node 22+, paquete ESM-only\n- Transporte con `fetch` nativo y timeouts mediante `AbortController`\n- Manejo de tokens de sesion de SIRO con renovacion automatica antes del vencimiento\n- Validacion estricta en runtime para inputs publicos y respuestas documentadas de SIRO\n- API de TypeScript comoda de usar sin perder los payloads crudos de SIRO en las respuestas\n- Cobertura con unit tests offline y smoke tests condicionados por variables de entorno para el sandbox de SIRO\n\n## Instalacion\n\n```bash\nnpm install @diegomax/siro-pagos\n```\n\n## Inicio Rapido\n\n```ts\nimport { createSiroPagosClient } from \"@diegomax/siro-pagos\";\n\nconst client = createSiroPagosClient({\n  environment: \"sandbox\",\n  credentials: {\n    username: process.env.SIRO_PAGOS_USERNAME ?? \"\",\n    password: process.env.SIRO_PAGOS_PASSWORD ?? \"\"\n  }\n});\n\nconst payment = await client.createPayment({\n  concept: \"Invoice payment\",\n  details: [\n    { description: \"Water\", amount: 25 },\n    { description: \"Gas\", amount: 25 }\n  ],\n  amount: 50,\n  expirationDate: new Date(\"2025-02-20T18:55:27.829Z\"),\n  successUrl: \"https://example.com/ok\",\n  errorUrl: \"https://example.com/error\",\n  receiptNumber: \"12345678911111112502\",\n  operationReferenceId: \"invoice-123\",\n  companyClientNumber: \"0428544445150058293\"\n});\n\nconsole.log(payment.paymentUrl, payment.hash);\n```\n\n## Configuracion Del Cliente\n\n```ts\nconst client = createSiroPagosClient({\n  environment: \"sandbox\",\n  credentials: {\n    username: \"your-user\",\n    password: \"your-password\"\n  },\n  authBaseUrl: \"https://apisesionh.bancoroela.com.ar\",\n  apiBaseUrl: \"https://siropagosh.bancoroela.com.ar\",\n  timeoutMs: 10_000,\n  tokenRefreshSkewMs: 30_000\n});\n```\n\n## API\n\n### `client.authenticate()`\n\nDevuelve la sesion SIRO mapeada y refresca la cache interna del token.\n\n### `client.createPayment(input)`\n\nCrea una intencion de pago y devuelve:\n\n```ts\n{\n  paymentUrl: string;\n  hash: string;\n  raw: {\n    Url: string;\n    Hash: string;\n  };\n}\n```\n\n### `client.createPaymentQrString(input)`\n\nCrea un string QR de pago y devuelve:\n\n```ts\n{\n  qrString: string;\n  hash: string | null;\n  raw: {\n    StringQR: string;\n    Hash?: string;\n  };\n}\n```\n\n### `client.createVoucherPayment(input)`\n\nCrea una intencion de pago a partir de un comprobante o registro de deuda existente.\n\n### `client.createStaticQrString(input)`\n\nObtiene el string QR estatico documentado para una terminal.\n\n### `client.createStaticQrPayment(input)`\n\nCrea un pago usando el flujo de QR estatico. La implementacion apunta a `/api/QREstatico`, en linea con los ejemplos ejecutables del PDF de SIRO.\n\n### `client.getPaymentResult({ hash, resultId })`\n\nObtiene el resultado final del pago asociado al redirect de SIRO.\n\n### `client.searchPayments(input)`\n\nConsulta intentos de pago entre `fromDate` y `toDate`, opcionalmente filtrados por estado de SIRO o `reference id`.\n\n### `client.createOfflineQrString(input)`\n\nSoporta los dos modos documentados de QR offline:\n\n```ts\nawait client.createOfflineQrString({\n  mode: \"due-dates\",\n  companyClientNumber: \"0428544445150058293\",\n  receiptNumber: \"01234567228910121315\",\n  installments: [\n    { dueDate: \"2025-03-31T23:56:52.663Z\", amount: 10 },\n    { dueDate: \"2025-04-05T23:56:52.663Z\", amount: 20 },\n    { dueDate: \"2025-04-10T23:56:52.663Z\", amount: 30 }\n  ]\n});\n\nawait client.createOfflineQrString({\n  mode: \"debt-base\",\n  companyClientNumber: \"0489564755150058293\",\n  receiptNumber: \"96018          96022\"\n});\n```\n\n## Errores\n\nEl cliente lanza errores tipados:\n\n- `SiroPagosValidationError`\n- `SiroPagosAuthError`\n- `SiroPagosHttpError`\n- `SiroPagosResponseValidationError`\n- `SiroPagosRequestError`\n\nLos errores relacionados con HTTP y schemas conservan, cuando esta disponible, el detalle del endpoint, el codigo de estado, el body de la respuesta y los headers.\n\n## Desarrollo\n\n```bash\nnpm install\nnpm run build\nnpm run typecheck\nnpm test\n```\n\n## Smoke Tests\n\nLos smoke tests son opt-in y estan condicionados por variables de entorno.\n\nSmoke de autenticacion solamente:\n\n```bash\nSIRO_PAGOS_USERNAME=... \\\nSIRO_PAGOS_PASSWORD=... \\\nnpm run test:smoke\n```\n\nSmoke de busqueda en modo solo lectura:\n\n```bash\nSIRO_PAGOS_USERNAME=... \\\nSIRO_PAGOS_PASSWORD=... \\\nSIRO_PAGOS_REFERENCE_ID=existing-reference \\\nnpm run test:smoke\n```\n\nLos smoke tests que mutan estado quedan deshabilitados salvo que esten definidas todas estas variables:\n\n```bash\nSIRO_PAGOS_USERNAME=... \\\nSIRO_PAGOS_PASSWORD=... \\\nSIRO_PAGOS_RUN_MUTATING_SMOKE=true \\\nSIRO_PAGOS_MUTATING_REFERENCE_ID=unique-reference \\\nSIRO_PAGOS_COMPANY_CLIENT_NUMBER=company-client-number \\\nnpm run test:smoke\n```\n","readmeFilename":"README.md","homepage":"https://github.com/DiegoMax/siro-pagos#readme","repository":{"type":"git","url":"git+https://github.com/DiegoMax/siro-pagos.git"},"bugs":{"url":"https://github.com/DiegoMax/siro-pagos/issues"}}