Bezouro / nubank.ts

Biblioteca JS para a api do nubank
23 stars 4 forks source link

Nubank.TS

Realize operações que você faz no app do nubank pelo node.js Baseado na (versão python que é baseada nessa outra versão js)

Instalação

Instale usando o seu gerenciador de pacotes preferido:

npm: npm install nubank.ts yarn: yarn add nubank.ts

AVISO: Este não é um modulo oficial de Nu Pagamentos S.A, Este modulo utiliza da API Publica do Nubank

AVISO²: Este projeto ainda está em desenvolvimento e podem ocorrer mudanças na estrutura do codigo

Como obter o certificado:

Para gerar o certificado necessario para autenticar com o nubank, após adicionar o modulo como dependencia do seu projeto execute o seguinte comando yarn run nubankts create-cert e siga o passo a passo, como resultado você terá um certificado cert.p12 na pasta atual

⚠️ AVISO ⚠️: tome cuidado com o certificado, usuario e senha da sua conta, não commite-os no github Recomendo transformar seu certificado em uma string base64, e armazena-lo no .env, o codigo a seguir mostra como obter o base64, e como utilizar


// Transforma o certificado em uma string base64
const cert: string = fs.readFileSync(path.join(__dirname, 'cert.p12'), { encoding: 'base64' });

// Exibe o base64 no console para que você possa copiar o conteúdo e colocar no .env console.log(cert)

// No seu código, utilize o certificado desta forma: const certificate = Buffer.from(process.env.NUBANK_CERTIFICATE || '', 'base64'); const nubank = new Nubank(USERNAME, PASSWORD, certificate);


# Exemplo de uso
Você pode encontrar mais exemplos [Aqui](/examples/)

Para rodar o exemplo a baixo, é necessario fazer uma validação adicional no certificado para que ele possa realizar transferencias e outras operações que movimentam o saldo na conta, Ações como verificar saldo, gerar e conferir pagamentos pix entre outros que apenas verificam informações na conta não requerem isso e podem ser executadas normalmente com o certificado gerado pelo comando `nubankts create-cert`

```typescript
import Nubank from 'nubank.ts';
import path from 'path';
import fs from 'fs';

const USERNAME = process.env.NUBANK_USERNAME || '';
const PASSWORD = process.env.NUBANK_PASSWORD || '';
const CARD_PASSWORD = process.env.NUBANK_CARD_PASSWORD || '';

const cert = fs.readFileSync(path.join(__dirname, '..', 'cert.p12'));
const nubank = new Nubank(USERNAME, PASSWORD, cert);

async function run(pixKey: string, value: number) {
  const { data } = await nubank.addPixContact(pixKey);

  const account = data.bankAccount;
  const transferOutRequest = await nubank.transferOutPix(account.id, value, CARD_PASSWORD);

  const success = transferOutRequest.__typename === 'TransferOutRequestSuccess';
  let error;

  if (!success) {
    console.log(transferOutRequest);
    error = transferOutRequest.errorHandler.description;
  }

  const result = {
    success,
    bank: account.singleBank.number,
    bankName: account.singleBank.shortName,
    agency: account.branch,
    account: account.number,
    digit: account.digit,
    destinatary: account.name,
    error
  };

  console.log(result);
}

run('11999999999', 0.01);

Output:

{
  success: true,
  bank: null,
  bankName: 'NEON PAGAMENTOS',
  agency: '0000',
  account: '123456',
  digit: '7',
  destinatary: 'Bruno Bezouro',
  error: undefined
}