Copie un archivo, escriba tres líneas y venda. Sin instalar dependencias, sin registrarse y sin gastar un peso mientras prueba.
Los dos caminos funcionan hoy mismo, contra el ambiente de pruebas.
Una aplicación completa para vender recargas. Se sube a cualquier hosting con PHP y funciona: catálogo, saldo y formulario de tres campos. Sin base de datos ni instalación. Para vender de verdad solo se editan dos líneas con sus credenciales.
Ver cómo se instala 10 minutosUn solo archivo para PHP, Node o Python. Se copia al proyecto y se usa: sin Composer, sin npm, sin pip y sin dependencias de terceros. Trae resueltas la idempotencia, los reintentos seguros y el manejo de operaciones pendientes.
Ver el códigoCopie esto y ejecútelo tal cual. Usa credenciales públicas de prueba: no cobra nada ni recarga ningún teléfono real.
// Descargue sdk/php/recargado.php y póngalo junto a su código require_once 'recargado.php'; $rd = RecargaDo::pruebas(); $venta = $rd->recargar(1, '8095551235', 50, 'MI-PRIMERA-VENTA'); if ($venta->exitosa()) { echo "Entregada. Autorización: {$venta->authCode}"; } elseif ($venta->pendiente()) { echo "En verificación. NO cobre todavía."; } else { echo "Rechazada: {$venta->mensaje}"; }
// Descargue sdk/node/recargado.js y póngalo junto a su código const { RecargaDo } = require('./recargado.js'); const rd = RecargaDo.pruebas(); const venta = await rd.recargar(1, '8095551235', 50, 'MI-PRIMERA-VENTA'); if (venta.exitosa()) console.log('Entregada. Autorización:', venta.authCode); else if (venta.pendiente()) console.log('En verificación. NO cobre todavía.'); else console.log('Rechazada:', venta.mensaje);
# Descargue sdk/python/recargado.py y póngalo junto a su código from recargado import RecargaDo rd = RecargaDo.pruebas() venta = rd.recargar(1, '8095551235', 50, 'MI-PRIMERA-VENTA') if venta.exitosa(): print('Entregada. Autorización:', venta.auth_code) elif venta.pendiente(): print('En verificación. NO cobre todavía.') else: print('Rechazada:', venta.mensaje)
// Copie sdk/csharp/RecargaDo.cs a su proyecto using RecargaDoApi; var rd = RecargaDo.Pruebas(); var venta = await rd.RecargarAsync(1, "8095551235", 50m, "MI-PRIMERA-VENTA"); if (venta.Exitosa) Console.WriteLine($"Entregada. Autorización: {venta.AuthCode}"); else if (venta.Pendiente) Console.WriteLine("En verificación. NO cobre todavía."); else Console.WriteLine($"Rechazada: {venta.Mensaje}");
MI-PRIMERA-VENTA: mientras no cambie, Recarga.do entiende que es la
misma venta. Cámbiela y obtendrá una recarga nueva.
Para vender de verdad, cambie una sola línea: en vez de
RecargaDo::pruebas(), pase sus credenciales.
Todo lo demás lo resuelve la librería. Estas dos dependen de su negocio, así que no puede resolverlas por usted.
Es lo que impide cobrarle dos veces al mismo cliente. Si la red se cae y su sistema reintenta con la misma factura, Recarga.do reconoce la operación y devuelve el resultado original en vez de recargar otra vez.
| Haga esto | No haga esto |
|---|---|
| Use el número de factura, ticket o venta de su propio sistema. Ya es único y ya está guardado. | Generar la referencia dentro de la función que reintenta: convierte cada reintento en una venta nueva. |
| Guárdela antes de llamar, junto a la venta. | Repetir una referencia ya usada para otra operación distinta. |
Casi todo el mundo programa «funcionó» y «falló». Falta el del medio, y es el que cuesta dinero.
pendiente() como
un fallo y vuelve a vender, el cliente recibe dos recargas y usted cobra una sola.
En el ambiente de pruebas, el último dígito del número decide qué ocurre. Así puede provocar los casos difíciles cuando quiera, sin esperar a que pasen.
| Si el número termina en | Qué obtiene |
|---|---|
0 | Rechazada — número inválido |
1 | Rechazada — la telco la rechazó |
2 | En verificación — el caso que cuesta dinero si se maneja mal |
| cualquier otro | Entregada |
2.
Es el único caso que, mal manejado, le cobra dos veces a un cliente real.Las tres librerías, los ejemplos ejecutables, el punto de venta completo y las guías, en un solo archivo.
⬇ Descargar el paquete de integración (ZIP)2 y mi sistema no vuelve a vender.api_secret está en el servidor, nunca en una app móvil ni en JavaScript del navegador.transactionId y el requestId de cada venta.¿Necesita credenciales de producción?
Pídalas a su ejecutivo de cuenta. Para incidencias, incluya siempre el
request_id de la respuesta.