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:

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.