sdk-node-apis-efi
Version:
Module for integration with Efi Bank API
146 lines (103 loc) • 4.3 kB
Markdown
SDK oficial para integração com as APIs de Cobranças, Pix, Open Finance, Pagamento de Contas, Abertura de Contas e Extratos da Efí.
- Node.js 22 ou superior.
- Credenciais da aplicação Efí.
- Certificado para as APIs que usam mTLS.
```bash
npm install sdk-node-apis-efi
```
```ts
import EfiPay, {
type PixCreateImmediateChargeBody,
type SdkOptions,
} from 'sdk-node-apis-efi';
const options: SdkOptions = {
sandbox: true,
client_id: 'seu-client-id',
client_secret: 'seu-client-secret',
certificate: '/caminho/para/certificado.p12',
};
const efipay = new EfiPay(options);
const body: PixCreateImmediateChargeBody = {
calendario: { expiracao: 3600 },
valor: { original: '10.00' },
chave: 'sua-chave-pix',
};
const cobranca = await efipay.pixCreateImmediateCharge(body);
```
A classe também pode ser importada pelo nome:
```ts
import { EfiPay } from 'sdk-node-apis-efi';
```
```js
const EfiPay = require('sdk-node-apis-efi');
async function main() {
const efipay = new EfiPay({
sandbox: true,
client_id: 'seu-client-id',
client_secret: 'seu-client-secret',
certificate: '/caminho/para/certificado.p12',
});
const cobranca = await efipay.pixCreateImmediateCharge({
calendario: { expiracao: 3600 },
valor: { original: '10.00' },
chave: 'sua-chave-pix',
});
console.log(cobranca);
}
main().catch(console.error);
```
`const { EfiPay } = require('sdk-node-apis-efi')` também é suportado.
As chamadas seguem uma convenção única:
| Endpoint | Assinatura |
| --- | --- |
| Sem params | `metodo(body, headers?)` |
| Sem body | `metodo(params, headers?)` |
| Com params e body | `metodo(params, body, headers?)` |
| Sem params e body | `metodo(headers?)` |
Chamadas da v1 que enviam `{}` como primeiro argumento continuam disponíveis nesta versão:
```ts
await efipay.pixCreateImmediateCharge({}, body); // legado
await efipay.pixCreateImmediateCharge(body); // recomendado
```
Os overloads legados estão marcados com `@deprecated` nas declarações TypeScript e serão removidos em uma futura versão major. O SDK não emite avisos em runtime.
| Opção | Descrição |
| --- | --- |
| `sandbox` | Seleciona homologação (`true`) ou produção (`false`). |
| `client_id` | Client ID da aplicação. |
| `client_secret` | Client secret da aplicação. |
| `certificate` | Caminho do P12/PEM ou certificado em base64. |
| `pemKey` | Caminho ou conteúdo base64 da chave do certificado PEM. |
| `cert_base64` | Indica que certificado e chave foram fornecidos em base64. |
| `partner_token` | Token de parceiro, quando aplicável. |
| `validateMtls` | Use `false` somente ao configurar webhooks sem validação mTLS. |
| `cache` | Controla o cache de tokens OAuth; padrão `true`. |
| `idempotencyKey` | Chave global de idempotência para Open Finance. |
Todos os tipos e schemas Zod públicos são exportados pela raiz do pacote:
```ts
import {
PixCreateImmediateChargeBodySchema,
type PixCreateImmediateChargeBody,
} from 'sdk-node-apis-efi';
```
Os schemas usam Zod 4. O SDK não valida requests automaticamente em runtime; aplicações podem usar os schemas exportados quando desejarem validação local.
Cada método possui um tipo de resposta específico, também importável pela raiz, como `CreateChargeResponse` e `DetailCarnetResponse`.
Falhas retornadas pelas APIs são rejeitadas preservando o payload de erro da Efí. Erros locais de configuração, certificado ou resolução de rota são instâncias de `Error`.
O repositório contém exemplos equivalentes em TypeScript (`examples/ts`) e CommonJS (`examples/cjs`). Eles não fazem parte do tarball publicado no NPM.
## Migração e mudanças
Consulte [MIGRATION.md](./MIGRATION.md) para migrar da v1 e [CHANGELOG.md](./CHANGELOG.md) para o histórico da versão.
## Desenvolvimento
```bash
npm test
npm run test:package
```
`npm test` executa build, typecheck, auditoria da API pública, testes de transporte, examples e smoke tests CJS/ESM. `npm run test:package` instala o tarball em um projeto temporário e valida CJS, ESM e TypeScript.