POST /merchant/api/verify
Envía client_id y client_secret para obtener un access_token temporal.
Integra Buyesia Pay con la API REST actual, crea cobros en USDT o USDC y procesa confirmaciones firmadas por webhook.
https://www.dev.buyesia.com
La integración se apoya en tres endpoints públicos para autenticar, consultar las monedas disponibles y crear la transacción, más un webhook firmado para confirmar eventos de pago.
POST /merchant/api/verifyEnvía client_id y client_secret para obtener un access_token temporal.
POST /merchant/api/transaction-infoCrea la intención de cobro y devuelve approvedUrl para redirigir al checkout.
GET /merchant/api/available-currenciesConsulta qué monedas acepta tu checkout antes de crear la transacción.
X-Webhook-SignatureValida la firma HMAC del payload antes de marcar el pago como confirmado.
Todas las solicitudes privadas requieren autenticación mediante credenciales de comercio generadas desde el panel de administración.
Envía client_id y client_secret para validar el merchant y obtener data.access_token.
curl -X POST https://www.dev.buyesia.com/merchant/api/verify \
-H "Content-Type: application/json" \
-d '{
"client_id": "tu_client_id",
"client_secret": "tu_client_secret"
}'
{
"status": "success",
"message": "Client Verified",
"data": {
"access_token": "7fKpQ2mXvL9sR4tN6wY8aBcDeF"
}
}
Buyesia Pay ofrece sandbox y live con el mismo contrato de API, pero con credenciales y comportamiento operativo distintos.
| Entorno | Uso | Credenciales | Procesa pagos reales |
|---|---|---|---|
| Sandbox | Desarrollo y pruebas | test_* |
No - Simula el pago sin mover fondos |
| Live | Producción | Credenciales live del comercio | Sí - Procesa pagos reales |
Antes de crear un cobro, consulta las monedas que el checkout del merchant puede aceptar según sus métodos activos.
Requiere Authorization: Bearer {access_token}. Devuelve las monedas soportadas (USDT o USDC) junto con los métodos de checkout disponibles. Usa el código devuelto en el campo currency de transaction-info.
curl -X GET https://www.dev.buyesia.com/merchant/api/available-currencies \
-H "Authorization: Bearer {access_token}"
{
"status": "success",
"message": "Available checkout currencies loaded successfully.",
"data": {
"currencies": [
{
"code": "USDT",
"name": "Tether USD",
"symbol": "₮",
"is_default": true,
"checkout_methods_count": 2,
"checkout_methods": [
{
"key": "bpay",
"display_name": "Buyesia Pay",
"behavior": "custodial",
"is_default": true
}
]
}
]
}
}
Crea una transacción para que tu cliente complete el checkout alojado y luego redirige al approvedUrl devuelto por la API.
Requiere Authorization: Bearer {access_token}. Envía una moneda soportada por tu checkout (consulta /merchant/api/available-currencies) y los parámetros de retorno deben ser URLs públicas válidas.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
amount |
number | Sí | Monto mayor a 0. |
currency |
string | Sí | Código de moneda. USDT o USDC, según lo que devuelva /merchant/api/available-currencies para tu checkout. |
successUrl |
string | Sí | URL del merchant a la que se redirige al completar el pago. |
cancelUrl |
string | Sí | URL del merchant para pagos cancelados o interrumpidos. |
order_no |
string | No | Identificador externo de tu orden. |
item_name |
string | No | Nombre o descripción visible del producto o servicio. |
webhook_url |
string | No | URL para eventos transaction.created, payment.success y transaction.failed. |
metadata |
object | No | Objeto libre que se reenvía en el webhook. |
curl -X POST https://www.dev.buyesia.com/merchant/api/transaction-info \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"amount": 100.00,
"currency": "USDT",
"successUrl": "https://tu-sitio.com/success",
"cancelUrl": "https://tu-sitio.com/cancel",
"order_no": "ORD-2026-1001",
"item_name": "Suscripcion Pro",
"webhook_url": "https://tu-sitio.com/webhook",
"metadata": {
"customer_id": "cus_128",
"plan": "pro"
}
}'
{
"status": "success",
"message": "Transaction Info Created Successfully!",
"data": {
"approvedUrl": "https://www.dev.buyesia.com/merchant/checkout/sandbox/demo_token_123",
"webUrl": "https://www.dev.buyesia.com/merchant/checkout/sandbox/demo_token_123",
"appUrl": "bpay://merchant/checkout/demo_token_123",
"intentUrl": "intent://merchant/checkout/demo_token_123#Intent;scheme=bpay;package=com.buyesia.pay;end",
"checkout_token": "demo_token_123",
"grant_id": 18354021,
"token": "Cj2mMNt5sE7P9dZrQa4K",
"amount": "100.00",
"currency": "USDT",
"order_no": "ORD-2026-1001",
"item_name": "Suscripcion Pro",
"status": "pending",
"payment_method": null,
"metadata": {
"customer_id": "cus_128",
"plan": "pro"
}
}
}
Recibe notificaciones en tiempo real cuando ocurren eventos en tu cuenta y valida siempre la firma del payload antes de procesarlo.
transaction.created - Transacción creada exitosamentepayment.success - Pago completado exitosamentetransaction.failed - Transacción fallida{
"event": "payment.success",
"payload": {
"transaction_id": "f8e4af91-9946-469f-b3cf-7b5b8a35d4e3",
"order_no": "ORD-2026-1001",
"item_name": "Suscripcion Pro",
"metadata": {
"customer_id": "cus_128",
"plan": "pro"
},
"amount": 100,
"currency": "USDT",
"status": "success",
"timestamp": "2026-03-29T09:45:18+00:00"
},
"timestamp": 1774777518
}
$rawBody = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$clientSecret = 'tu_client_secret';
$expectedSignature = hash_hmac('sha256', $rawBody, $clientSecret);
if (!hash_equals($expectedSignature, $signature)) {
http_response_code(401);
echo json_encode(['error' => 'Firma invalida']);
exit;
}
$payload = json_decode($rawBody, true);
$event = $payload['event'] ?? null;
$data = $payload['payload'] ?? [];
if ($event === 'payment.success') {
// Marca tu orden como pagada usando $data['order_no'] o $data['transaction_id']
}
http_response_code(200);
echo json_encode(['received' => true]);