Guías de Integración
Inicio Rápido
Requisitos Previos
Antes de comenzar, necesita tener:
✓Certificado X.509 (archivo
.pem) vinculado a su cuenta✓Credenciales OAuth (
clientId y clientSecret)Solicite sus credenciales y certificado a través del Dashboard de LF Gateway.
1. Configurar el Entorno
Cree un archivo .env con sus credenciales:
LFGATEWAY_CLIENT_ID=account-93-your-id
LFGATEWAY_CLIENT_SECRET=your-secret-password
LFGATEWAY_API_URL=https://api.lfgateway.com.brGuarde su certificado como client-cert.pem en el directorio del proyecto.
2. Instalar Dependencias
npm install axios dotenvpip install requests python-dotenv3. Código Completo
El siguiente ejemplo se autentica, consulta el saldo y crea un cobro PIX:
require('dotenv').config();
const axios = require('axios');
const fs = require('fs');
const API_URL = process.env.LFGATEWAY_API_URL;
const certificate = fs.readFileSync('./client-cert.pem', 'utf8');
const encodedCert = encodeURIComponent(certificate);
// 1. Get token
async function getToken() {
const response = await axios.post(`${API_URL}/api/auth/token`, {
clientId: process.env.LFGATEWAY_CLIENT_ID,
clientSecret: process.env.LFGATEWAY_CLIENT_SECRET
}, {
headers: {
'Content-Type': 'application/json',
'X-SSL-Client-Cert': encodedCert
}
});
return response.data.access_token;
}
// 2. Check balance
async function getBalance(token) {
const response = await axios.get(`${API_URL}/api/balance`, {
headers: { 'Authorization': `Bearer ${token}` }
});
return response.data;
}
// 3. Create PIX charge
async function createPixCharge(token, value, description, externalId, payer) {
const response = await axios.post(`${API_URL}/api/pix/cash-in`, {
transaction: {
value,
description,
externalId,
expirationTime: 3600, // 1 hour
generateQrCode: true
},
payer: {
fullName: payer.name,
document: payer.document
}
}, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
return response.data;
}
// Run
async function main() {
try {
// Authenticate
console.log('Authenticating...');
const token = await getToken();
console.log('Token obtained successfully!');
// Check balance
console.log('\nChecking balance...');
const balance = await getBalance(token);
console.log(`Available balance: R$ ${balance.netBalance.toFixed(2)}`);
// Create charge
console.log('\nCreating PIX charge...');
const charge = await createPixCharge(token, 100.00, 'Integration test', 'ORDER-001', {
name: 'John Smith',
document: '12345678901'
});
console.log(`\nCharge created!`);
console.log(`ID: ${charge.transactionId}`);
console.log(`Status: ${charge.status}`);
console.log(`PIX Copy and Paste: ${charge.pixCode}`);
console.log(`Expires at: ${charge.expirationDate}`);
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
}
main();import os
import urllib.parse
import requests
from dotenv import load_dotenv
load_dotenv()
API_URL = os.getenv('LFGATEWAY_API_URL')
# Load certificate
with open('client-cert.pem', 'r') as f:
certificate = f.read()
encoded_cert = urllib.parse.quote(certificate)
# 1. Get token
def get_token():
response = requests.post(f'{API_URL}/api/auth/token',
json={
'clientId': os.getenv('LFGATEWAY_CLIENT_ID'),
'clientSecret': os.getenv('LFGATEWAY_CLIENT_SECRET')
},
headers={
'Content-Type': 'application/json',
'X-SSL-Client-Cert': encoded_cert
}
)
response.raise_for_status()
return response.json()['access_token']
# 2. Check balance
def get_balance(token):
response = requests.get(f'{API_URL}/api/balance',
headers={'Authorization': f'Bearer {token}'}
)
response.raise_for_status()
return response.json()
# 3. Create PIX charge
def create_pix_charge(token, value, description, external_id, payer_name, payer_document):
response = requests.post(f'{API_URL}/api/pix/cash-in',
json={
'transaction': {
'value': value,
'description': description,
'externalId': external_id,
'expirationTime': 3600,
'generateQrCode': True
},
'payer': {
'fullName': payer_name,
'document': payer_document
}
},
headers={
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
)
response.raise_for_status()
return response.json()
# Run
def main():
try:
# Authenticate
print('Authenticating...')
token = get_token()
print('Token obtained successfully!')
# Check balance
print('\nChecking balance...')
balance = get_balance(token)
print(f"Available balance: R$ {balance['netBalance']:.2f}")
# Create charge
print('\nCreating PIX charge...')
charge = create_pix_charge(
token,
100.00,
'Integration test',
'ORDER-001',
'John Smith',
'12345678901'
)
print(f"\nCharge created!")
print(f"ID: {charge['transactionId']}")
print(f"Status: {charge['status']}")
print(f"PIX Copy and Paste: {charge['pixCode']}")
print(f"Expires at: {charge['expirationDate']}")
except requests.exceptions.RequestException as e:
print(f'Error: {e.response.json() if e.response else e}')
if __name__ == '__main__':
main()4. Ejecutar
node quickstart.jspython quickstart.pySalida esperada:
Authenticating...
Token obtained successfully!
Checking balance...
Available balance: R$ 48734.90
Creating PIX charge...
Charge created!
ID: 7845
Status: PENDING
PIX Copy and Paste: 00020126580014br.gov.bcb.pix...
Expires at: 2024-01-20T14:30:00.000Z5. Recibir Notificaciones (Webhook)
Configure un endpoint para recibir notificaciones cuando se confirma un pago:
// Express.js
app.post('/webhook/lfgateway', (req, res) => {
const { event, transactionId, status, finalAmount } = req.body;
if (event === 'CashIn' && status === 'CONFIRMED') {
console.log(`Payment ${transactionId} confirmed: R$ ${finalAmount}`);
// Update order in your system
}
res.status(200).send('OK');
});Configure la URL del webhook en el Dashboard de LF Gateway. Consulte la Guía de Webhooks para más detalles.
Próximos Pasos
Autenticación
Comprenda el flujo de autenticación en detalle
PIX Cash-In
Explore todas las opciones de cobro PIX
PIX Cash-Out
Envíe pagos PIX
Cash-Out vía QR Code
Pague mediante QR Code PIX
Webhooks
Configure notificaciones en tiempo real