UNPKG

n8n-nodes-efibank

Version:

Nó personalizado para integração com as APIs Cobranças e Pix do Efi Bank, permitindo operações de pagamentos, recebimentos e gerenciamento de transações financeiras.

134 lines 5.62 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.EfiBankPixApi = void 0; const forge = __importStar(require("node-forge")); class EfiBankPixApi { constructor() { this.name = 'EfiBankPixApi'; this.displayName = 'Efí Bank | API Pix'; this.documentationUrl = 'https://dev.efipay.com.br/docs/api-pix/credenciais'; this.properties = [ { displayName: 'Ambiente', name: 'environment', type: 'options', options: [ { name: 'Homologação', value: 'homolog' }, { name: 'Produção', value: 'prod' }, ], default: 'homolog', required: true, description: 'Selecione o ambiente correto para suas credenciais', }, { displayName: 'Chave Client ID Produção', name: 'clientIdProd', type: 'string', default: '', required: true, }, { displayName: 'Chave Client Secret Produção', name: 'clientSecretProd', type: 'string', default: '', required: true, }, { displayName: 'Chave Client ID Homologação', name: 'clientIdHomolog', type: 'string', default: '', required: true, }, { displayName: 'Chave Client Secret Homologação', name: 'clientSecretHomolog', type: 'string', default: '', required: true, }, { displayName: 'Certificado', name: 'certificatePem', type: 'string', default: '', required: true, description: 'Cole o conteúdo completo do certificado PEM (BEGIN/END)', }, { displayName: 'Key', name: 'keyPem', type: 'string', default: '', required: true, description: 'Cole o conteúdo completo da chave privada PEM (BEGIN/END)', }, ]; } convertPemToP12Base64(credentials) { try { const certificatePem = String(credentials.certificatePem || "").replace(/\\n/g, "\n"); const keyPem = String(credentials.keyPem || "").replace(/\\n/g, "\n"); const certificate = forge.pki.certificateFromPem(certificatePem); const privateKey = forge.pki.privateKeyFromPem(keyPem); const p12Asn1 = forge.pkcs12.toPkcs12Asn1(privateKey, [certificate], '', { friendlyName: 'Efi Bank Certificate', generateLocalKeyId: true, }); const p12Der = forge.asn1.toDer(p12Asn1).getBytes(); const certificate_base64 = Buffer.from(p12Der, 'binary').toString('base64'); return certificate_base64; } catch (error) { console.error('Erro ao converter PEM para P12 Base64:', error); throw new Error(`Falha na conversão de certificados: ${error.message}`); } } async authenticate(credentials, requestOptions) { const isProd = credentials.environment === "prod"; const clientId = isProd ? credentials.clientIdProd : credentials.clientIdHomolog; const clientSecret = isProd ? credentials.clientSecretProd : credentials.clientSecretHomolog; const encodedApiKey = Buffer.from(`${clientId}:${clientSecret}`).toString("base64"); const certificate_base64 = this.convertPemToP12Base64(credentials); requestOptions.headers = requestOptions.headers || {}; requestOptions.body = requestOptions.body || {}; requestOptions.headers.Authorization = `Basic ${encodedApiKey}`; requestOptions.headers["Content-Type"] = "application/json"; const bodyData = requestOptions.body; bodyData.grant_type = "client_credentials"; bodyData.certificate_base64 = certificate_base64; console.log("Request Options:", { url: requestOptions.url, method: requestOptions.method, headers: requestOptions.headers, bodyKeys: Object.keys(bodyData), }); return requestOptions; } } exports.EfiBankPixApi = EfiBankPixApi; //# sourceMappingURL=EfiBankPixApi.credentials.js.map