Guía de Integración de BunnyPay
Introducción
¡Bienvenido a BunnyPay! Esta guía le mostrará cómo integrar de forma rápida y segura nuestra pasarela de pagos en su tienda o aplicación web. El modelo de integración de BunnyPay es un flujo de redirección segura. Esto significa que su servidor nunca maneja información sensible del cliente (como PIN o CVC), lo que garantiza la máxima seguridad para usted y sus compradores.
El Flujo de Pago
El proceso se resume en 3 sencillos pasos:
- Iniciar la Transacción: Su servidor se comunica con la API de BunnyPay para solicitar un nuevo pago.
- Redirección del Cliente: BunnyPay responde con una URL de pago única. Su sitio web redirige al cliente a esta página segura.
- Confirmación y Retorno: Una vez completado el pago, BunnyPay redirige al cliente de vuelta a su tienda con la confirmación de la transacción.
Paso 1: Iniciar la Solicitud de Pago
Para comenzar una transacción, debe realizar una llamada POST desde su servidor al endpoint de la API de BunnyPay, enviando los datos en formato JSON.
moneda ahora es obligatorio en todas las solicitudes.
Parámetros de la Solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
api_key |
String | Sí | Su clave de API secreta para autenticar la tienda. |
monto |
Float | Sí | El monto total a cobrar. Use un punto como separador decimal (ej: 10.50). |
moneda |
String | Sí | La moneda de la transacción. Debe ser 'USD' o 'CUP'. |
id_orden_tienda |
String | Sí | Un identificador único para esta orden en su sistema (ej: "ORDEN-2025-001"). |
url_exito |
String | Sí | La URL a la que se redirigirá al cliente si el pago es exitoso. |
url_fallo |
String | Sí | La URL a la que se redirigirá al cliente si el pago falla o es cancelado. |
Ejemplo de Código (PHP con cURL)
<?php
// Datos de la orden en su tienda
$datos_pago = [
'api_key' => 'SU_API_KEY_SECRETA_AQUI',
'monto' => 25.99,
'moneda' => 'USD', // <-- ¡NUEVO Y OBLIGATORIO! ('USD' o 'CUP')
'id_orden_tienda' => 'ORDEN-' . uniqid(),
'url_exito' => 'https://sutienda.com/pago_confirmado.php',
'url_fallo' => 'https://sutienda.com/pago_fallido.php'
];
// Iniciar la llamada a la API de BunnyPay
$ch = curl_init('https://api.bunnypay.me/iniciar_pago.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($datos_pago));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
$respuesta_json = curl_exec($ch);
curl_close($ch);
$respuesta = json_decode($respuesta_json, true);
// Procesar la respuesta
if (isset($respuesta['status']) && $respuesta['status'] === 'exitoso') {
// Redirigir al cliente a la pasarela de pago
header('Location: ' . $respuesta['data']['url_redireccion']);
exit();
} else {
// Hubo un error al iniciar el pago
$mensaje_error = $respuesta['data']['mensaje'] ?? 'Error desconocido al conectar con BunnyPay.';
echo "Error: " . htmlspecialchars($mensaje_error);
}
?>
Paso 2: Manejar la Respuesta de la API
BunnyPay le responderá con un objeto JSON.
Respuesta Exitosa
{
"status": "exitoso",
"data": {
"url_redireccion": "https://pagos.bunnypay.me/pagar.php?sesion=bpay_sess_xxxxxxxxxxxx"
}
}
Respuesta Fallida
{
"status": "fallido",
"data": {
"mensaje": "Clave de API no válida."
}
}
Paso 3: Verificar la Confirmación del Pago
Una vez que el cliente completa el pago, BunnyPay lo redirigirá a su url_exito, incluyendo dos parámetros GET en la URL.
URL de ejemplo: https://sutienda.com/pago_confirmado.php?orden=ORDEN-XXXXX&transaccion_id=bpay_sess_YYYYY
En su página de confirmación, debe buscar la orden en su base de datos usando el parámetro orden y actualizar su estado a "completado". Esto previene que alguien acceda a la página de éxito directamente para obtener un producto sin haber pagado.
Ejemplo de pago_confirmado.php
<?php
// Conectar a la base de datos de su tienda
// require_once 'db_tienda.php';
$id_orden_recibida = $_GET['orden'] ?? '';
$id_transaccion_bunnypay = $_GET['transaccion_id'] ?? '';
if (empty($id_orden_recibida)) {
die("Error: No se recibió un identificador de orden.");
}
// 1. Buscar la orden en su base de datos y verificar que está "pendiente"
// $stmt = $db_tienda->prepare("SELECT estado FROM ordenes WHERE id_orden = ?");
// $stmt->execute([$id_orden_recibida]);
// $orden = $stmt->fetch();
// 2. Si la orden es válida, actualizar su estado a "completado"
// if ($orden && $orden['estado'] === 'pendiente') {
// $update_stmt = $db_tienda->prepare("UPDATE ordenes SET estado = 'completado' WHERE id_orden = ?");
// $update_stmt->execute([$id_orden_recibida]);
// 3. Mostrar mensaje de éxito
echo "<h1>¡Gracias por su compra!</h1>";
echo "<p>Su pago ha sido procesado exitosamente.</p>";
echo "<p>Número de Orden: " . htmlspecialchars($id_orden_recibida) . "</p>";
// } else {
// echo "<h1>Error de Validación</h1>";
// }
?>
Plugin de WordPress (WooCommerce)
¿Usas WordPress y WooCommerce? ¡Integrar Bunny Pay es más fácil que nunca! Hemos desarrollado un plugin oficial que te permite conectar tu tienda en minutos, sin necesidad de escribir una sola línea de código.
- Instalación rápida y sencilla.
- Configuración simple: solo añade tu API Key y tu ID de Tienda.
- Flujo de pago seguro y automático integrado con el checkout de WooCommerce.
- Redirección automática a tu página de "Gracias" o "Pedido fallido".
Para ambas integraciones (API Pura o WordPress), necesitarás tu API Key y tu ID de Tienda. Puedes generar estos datos desde tu panel de administrador o solicitarlos directamente a nuestro equipo de soporte.