SDKs y Librerías
Integra NIIO Payments rápidamente usando nuestras librerías oficiales o la API REST directamente.
Librerías oficiales
SDKs en desarrollo
Estamos trabajando en SDKs oficiales para los lenguajes más populares. Por ahora, puedes usar la API REST directamente con los ejemplos que proporcionamos.
Roadmap de SDKs
| Lenguaje | Estado | Disponibilidad |
|---|---|---|
| Node.js / TypeScript | 🔜 En desarrollo | Q1 2025 |
| Python | 🔜 En desarrollo | Q1 2025 |
| PHP | 📋 Planeado | Q2 2025 |
| Ruby | 📋 Planeado | Q2 2025 |
| Go | 📋 Planeado | Q3 2025 |
Integración directa con la API
Mientras tanto, puedes integrar directamente con nuestra API REST. Aquí tienes ejemplos completos para los lenguajes más comunes.
Node.js
Crea un cliente simple para interactuar con la API:
// niio-client.js
class NiioClient {
constructor(apiKey, apiSecret) {
this.apiKey = apiKey;
this.apiSecret = apiSecret;
this.baseUrl = 'https://api.prod.niiopay.com/api/v1';
}
async request(method, path, body = null) {
const options = {
method,
headers: {
'X-Api-Key': this.apiKey,
'X-Api-Secret': this.apiSecret,
'Content-Type': 'application/json',
},
};
if (body) {
options.body = JSON.stringify(body);
}
const response = await fetch(`${this.baseUrl}${path}`, options);
const data = await response.json();
if (!data.success) {
const error = new Error(data.error.message);
error.code = data.error.code;
error.details = data.error.details;
throw error;
}
return data.data;
}
// Órdenes de cobro
async createOrder(orderData) {
return this.request('POST', '/collect', orderData);
}
async getOrder(orderId) {
return this.request('GET', `/collect/${orderId}`);
}
}
module.exports = { NiioClient };
Uso:
const { NiioClient } = require('./niio-client');
const niio = new NiioClient(
process.env.NIIO_API_KEY,
process.env.NIIO_API_SECRET
);
// Crear orden de cobro
const order = await niio.createOrder({
reference: 'ORDER-123',
amount: 50000,
currency: 'COP',
description: 'Compra en Mi Tienda',
customerName: 'Juan Pérez',
customerEmail: 'juan@email.com',
customerDocType: 'CC',
customerDocNumber: '1234567890',
expirationMinutes: 60,
callbackUrl: 'https://tutienda.com/pago-completado',
});
console.log('URL de pago:', order.collectUrl);
console.log('ID de orden:', order.id);
// Consultar estado de la orden
const status = await niio.getOrder(order.id);
console.log('Estado:', status.status); // PENDING, PROCESSING, COMPLETED, FAILED, EXPIRED
Python
import requests
import os
class NiioClient:
def __init__(self, api_key, api_secret):
self.api_key = api_key
self.api_secret = api_secret
self.base_url = 'https://api.prod.niiopay.com/api/v1'
def _request(self, method, path, body=None):
headers = {
'X-Api-Key': self.api_key,
'X-Api-Secret': self.api_secret,
'Content-Type': 'application/json',
}
response = requests.request(
method,
f'{self.base_url}{path}',
headers=headers,
json=body,
timeout=30
)
data = response.json()
if not data.get('success'):
error = data.get('error', {})
raise NiioError(
error.get('message', 'Unknown error'),
error.get('code'),
error.get('details')
)
return data.get('data')
def create_order(self, order_data):
return self._request('POST', '/collect', order_data)
def get_order(self, order_id):
return self._request('GET', f'/collect/{order_id}')
class NiioError(Exception):
def __init__(self, message, code=None, details=None):
super().__init__(message)
self.code = code
self.details = details
Uso:
from niio_client import NiioClient
niio = NiioClient(
api_key=os.environ['NIIO_API_KEY'],
api_secret=os.environ['NIIO_API_SECRET']
)
# Crear orden de cobro
order = niio.create_order({
'reference': 'ORDER-123',
'amount': 50000,
'currency': 'COP',
'description': 'Compra en Mi Tienda',
'customerName': 'Juan Pérez',
'customerEmail': 'juan@email.com',
'customerDocType': 'CC',
'customerDocNumber': '1234567890',
'expirationMinutes': 60,
'callbackUrl': 'https://tutienda.com/pago-completado',
})
print(f"URL de pago: {order['collectUrl']}")
print(f"ID de orden: {order['id']}")
# Consultar estado de la orden
status = niio.get_order(order['id'])
print(f"Estado: {status['status']}") # PENDING, PROCESSING, COMPLETED, FAILED, EXPIRED
PHP
class NiioClient {
private $apiKey;
private $apiSecret;
private $baseUrl;
public function __construct($apiKey, $apiSecret) {
$this->apiKey = $apiKey;
$this->apiSecret = $apiSecret;
$this->baseUrl = 'https://api.prod.niiopay.com/api/v1';
}
private function request($method, $path, $body = null) {
$ch = curl_init();
$options = [
CURLOPT_URL => $this->baseUrl . $path,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'X-Api-Key: ' . $this->apiKey,
'X-Api-Secret: ' . $this->apiSecret,
'Content-Type: application/json',
],
];
if ($method === 'POST') {
$options[CURLOPT_POST] = true;
if ($body) {
$options[CURLOPT_POSTFIELDS] = json_encode($body);
}
}
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if (!$data['success']) {
throw new NiioException(
$data['error']['message'],
$data['error']['code'],
$data['error']['details'] ?? []
);
}
return $data['data'];
}
public function createOrder($orderData) {
return $this->request('POST', '/collect', $orderData);
}
public function getOrder($orderId) {
return $this->request('GET', '/collect/' . $orderId);
}
}
class NiioException extends Exception {
public $code;
public $details;
public function __construct($message, $code, $details) {
parent::__construct($message);
$this->code = $code;
$this->details = $details;
}
}
Uso:
$niio = new NiioClient(
getenv('NIIO_API_KEY'),
getenv('NIIO_API_SECRET'),
getenv('ENVIRONMENT') !== 'production'
);
// Crear orden de cobro
$order = $niio->createOrder([
'reference' => 'ORDER-123',
'amount' => 50000,
'currency' => 'COP',
'description' => 'Compra en Mi Tienda',
'customerName' => 'Juan Pérez',
'customerEmail' => 'juan@email.com',
'customerDocType' => 'CC',
'customerDocNumber' => '1234567890',
'expirationMinutes' => 60,
'callbackUrl' => 'https://tutienda.com/pago-completado',
]);
echo "URL de pago: " . $order['collectUrl'];
echo "ID de orden: " . $order['id'];
// Consultar estado de la orden
$status = $niio->getOrder($order['id']);
echo "Estado: " . $status['status']; // PENDING, PROCESSING, COMPLETED, FAILED, EXPIRED
Colección Postman
Importa nuestra especificación OpenAPI en Postman para probar la API rápidamente (Postman → Import → Link, pega la URL del spec):
Importar en Postman
https://pay.niiopay.com/api/openapi.json
Al importar el spec obtienes:
- Todos los endpoints documentados
- Ejemplos de request y response
- Esquemas de request listos para completar
Especificación OpenAPI
La especificación OpenAPI 3.0 de nuestra API está disponible para generar clientes automáticamente:
OpenAPI Spec
https://pay.niiopay.com/api/openapi.json
Puedes usarla con herramientas como:
- OpenAPI Generator - Genera clientes en 50+ lenguajes
- Swagger Codegen - Generador de código oficial de Swagger
- openapi-typescript-codegen - Para TypeScript
Contribuir
¿Quieres contribuir con un SDK en tu lenguaje favorito? Contacta a tu representante en NIIO y te ayudaremos a crear una librería oficial.