UNPKG

@tucupy-tecnologia/cielo-ecommerce-sdk-unofficial

Version:

SDK Não Oficial para interagir com a API Cielo E-commerce usando Bun/Node.js

182 lines (137 loc) 7.83 kB
# SDK Não Oficial Cielo E-commerce para Node.js/Bun.js (TypeScript) [![npm version](https://badge.fury.io/js/@tucupy-tecnologia/cielo-ecommerce-sdk-unofficial.svg)](https://badge.fury.io/js/cielo-ecommerce-sdk-unofficial) **⚠️ AVISO IMPORTANTE: Este SDK NÃO é oficial e NÃO é mantido ou endossado pela Cielo S.A. É um projeto comunitário/independente.** Use por sua conta e risco. Sempre consulte a [documentação oficial da Cielo API E-commerce](https://desenvolvedores.cielo.com.br/) como fonte primária de informação. ## Descrição Este SDK fornece uma interface em TypeScript para interagir com algumas das principais funcionalidades da API Cielo E-commerce V3, facilitando a integração de pagamentos em aplicações Node.js ou Bun.js. ## Funcionalidades Implementadas * **Zero Auth:** * Validação de Cartão (`/1/zeroauth/`) * Validação de Cartão E-Wallet (`/2/zeroauth/`) * **Cartão de Crédito:** * Criação de Pagamento (`POST /1/sales/`) * Captura de Pagamento (`PUT /1/sales/{PaymentId}/capture`) * Cancelamento (Void) por PaymentId (`PUT /1/sales/{PaymentId}/void`) * Cancelamento (Void) por MerchantOrderId (`PUT /1/sales/OrderId/{MerchantOrderId}/void`) * **Pix:** * Criação de Pagamento (Geração de QR Code) (`POST /1/sales/`) * Solicitação de Devolução (Refund) (`PUT /1/sales/{PaymentId}/void`) *(Funcionalidades como consulta, boleto, cartão de débito, etc., podem ser adicionadas no futuro).* ## Instalação Usando Bun: ```bash bun add @tucupy-tecnologia/cielo-ecommerce-sdk-unofficial ```` Usando npm: ```bash npm install @tucupy-tecnologia/cielo-ecommerce-sdk-unofficial ``` Usando yarn: ```bash yarn add @tucupy-tecnologia/cielo-ecommerce-sdk-unofficial ``` ## Configuração O SDK precisa das suas credenciais da Cielo (`MerchantId` e `MerchantKey`) e do ambiente desejado (`SANDBOX` ou `PRODUCTION`). É **altamente recomendado** usar variáveis de ambiente para armazenar suas credenciais, nunca as coloque diretamente no código. Crie um arquivo `.env` na raiz do seu projeto (e adicione-o ao `.gitignore`\!): ```dotenv # .env CIELO_MERCHANT_ID="SEU_MERCHANT_ID_AQUI" CIELO_MERCHANT_KEY="SUA_MERCHANT_KEY_AQUI" ``` ## Uso Básico ```typescript import { CieloEcommerceSDK, Environment, CreditCardPaymentRequest, // ou PixPaymentRequest, ZeroAuthCardRequest, etc. CieloApiError } from 'cielo-ecommerce-sdk-unofficial'; // Substitua pelo nome real do pacote // Carrega as credenciais do ambiente const merchantId = process.env.CIELO_MERCHANT_ID; const merchantKey = process.env.CIELO_MERCHANT_KEY; if (!merchantId || !merchantKey) { throw new Error("Credenciais Cielo não definidas nas variáveis de ambiente."); } // 1. Instancia o SDK const cieloSDK = new CieloEcommerceSDK({ environment: Environment.SANDBOX, // Mude para Environment.PRODUCTION em produção! merchantId: merchantId, merchantKey: merchantKey, }); // 2. Exemplo: Criar um pagamento com cartão de crédito (requer Capture=false para testar captura depois) async function criarPagamento() { const payload: CreditCardPaymentRequest = { MerchantOrderId: `MeuPedido-${Date.now()}`, Payment: { Type: 'CreditCard', Amount: 1000, // R$ 10,00 em centavos Installments: 1, Capture: false, // Apenas autoriza CreditCard: { CardNumber: "4551870000000183", // Cartão de teste Sandbox Holder: "Teste Comprador", ExpirationDate: "12/2030", SecurityCode: "123", Brand: "Visa" } } }; try { console.log("Criando pagamento..."); const response = await cieloSDK.payment.createCreditCardPayment(payload); console.log("Pagamento criado/autorizado!"); console.log("Payment ID:", response.Payment.PaymentId); // Guarde este ID! console.log("Status:", response.Payment.Status); // Exemplo: Capturar o pagamento autorizado (opcional) if (response.Payment.Status === 1 && response.Payment.PaymentId) { // Status 1 = Autorizado console.log("\nCapturando pagamento..."); const captureResponse = await cieloSDK.transaction.captureByPaymentId(response.Payment.PaymentId); console.log("Captura realizada!"); console.log("Novo Status:", captureResponse.Status); // Deve ser 2 (Capturado) } } catch (error) { console.error("Erro ao processar pagamento:", error); if (error instanceof CieloApiError) { console.error("Detalhes do erro da API:", error.errorData); } } } criarPagamento(); ``` ## Serviços Disponíveis A instância do `CieloEcommerceSDK` expõe os seguintes serviços: * `sdk.zeroAuth`: Métodos para validação de cartões. * `validateCard(...)` * `validateEWalletCard(...)` * `sdk.payment`: Métodos para criar pagamentos. * `createCreditCardPayment(...)` * `createPixPayment(...)` * `sdk.transaction`: Métodos para gerenciar transações existentes. * `captureByPaymentId(...)` * `voidByPaymentId(...)` * `voidByMerchantOrderId(...)` * `refundPixByPaymentId(...)` * *(Métodos de consulta podem ser adicionados futuramente)* Consulte os tipos TypeScript exportados para detalhes sobre os payloads de requisição e os formatos de resposta esperados. ## Tratamento de Erros O SDK lança erros customizados: * `CieloApiError`: Ocorre quando a API da Cielo retorna um erro HTTP (status \>= 400). Contém `statusCode`, `statusText` e `errorData` (o corpo da resposta de erro da Cielo, se disponível). * `CieloNetworkError`: Ocorre em caso de falha na comunicação com a API (problemas de rede, DNS, timeout, etc.). Contém a mensagem do erro original e, opcionalmente, o erro `cause`. Sempre envolva as chamadas aos métodos do SDK em blocos `try...catch` para tratar esses erros adequadamente. ## Contribuição Contribuições são bem-vindas\! Se você deseja ajudar a melhorar este SDK, siga estas diretrizes: 1. **Issues:** Antes de iniciar um trabalho ou submeter um Pull Request (PR) para uma nova funcionalidade ou correção significativa, por favor, abra uma [Issue](https://www.google.com/search?q=https://github.com/your-username/your-repo/issues) (substitua pelo link real do seu repositório) para discutir a mudança proposta. 2. **Fork e Branch:** Faça um fork do repositório e crie um branch para sua funcionalidade ou correção (`git checkout -b feature/minha-feature` ou `git checkout -b fix/meu-bug`). 3. **Código:** * Mantenha o estilo de código existente (use linters como ESLint/Prettier, se configurados). * Escreva código claro e comentado quando necessário. * Adicione/atualize os tipos TypeScript correspondentes. * Adicione testes unitários para novas funcionalidades ou correções de bugs. 4. **Testes:** Certifique-se de que todos os testes passam (`bun test`). 5. **Pull Request:** Submeta um Pull Request (PR) para o branch `main` (ou o branch de desenvolvimento principal). Descreva claramente as mudanças realizadas no PR. 6. **Revisão:** Aguarde a revisão do seu PR. Pode ser necessário fazer ajustes com base no feedback. ## Licença Este projeto é distribuído sob a licença MIT. Veja o arquivo `LICENSE` para mais detalhes. ## Contato Para questões gerais, sugestões ou parcerias relacionadas a este SDK (não relacionadas a suporte direto da Cielo), entre em contato: **contato@tucupy.com** **Lembre-se:** Para problemas com sua conta Cielo, transações específicas ou dúvidas sobre as regras de negócio da Cielo, contate diretamente o [suporte oficial da Cielo](https://www.cielo.com.br/atendimento).