← Documentación de Recarga.do
Ambiente de pruebas abierto

Venda recargas desde su aplicación

Copie un archivo, escriba tres líneas y venda. Sin instalar dependencias, sin registrarse y sin gastar un peso mientras prueba.

Elija su caso

Los dos caminos funcionan hoy mismo, contra el ambiente de pruebas.

Su primera recarga

Copie 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}";
}
Pruebe esto ahora: ejecútelo dos veces seguidas. Obtendrá la misma transacción y el mismo código de autorización las dos veces, no dos recargas. Eso es la protección contra el doble cobro funcionando, y viene de la referencia 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.

Las dos cosas que hay que entender

Todo lo demás lo resuelve la librería. Estas dos dependen de su negocio, así que no puede resolverlas por usted.

1. El cuarto parámetro es su número de factura

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 estoNo 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.

2. Los desenlaces son tres, no dos

Casi todo el mundo programa «funcionó» y «falló». Falta el del medio, y es el que cuesta dinero.

exitosa()Entregada y cobrada. Cobre y entregue el recibo.
pendiente()No se sabe. El dinero está retenido, ni cobrado ni devuelto. No cobre y no repita la venta. Se resuelve sola.
fallida()Rechazada. El saldo ya volvió solo. No cobre; corrija y venda de nuevo.
Este es el error que cuesta dinero. Si su código trata pendiente() como un fallo y vuelve a vender, el cliente recibe dos recargas y usted cobra una sola.

Pruebe los tres casos antes de vender de verdad

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 enQué obtiene
0Rechazada — número inválido
1Rechazada — la telco la rechazó
2En verificación — el caso que cuesta dinero si se maneja mal
cualquier otroEntregada
No pase a producción sin haber probado el 2. Es el único caso que, mal manejado, le cobra dos veces a un cliente real.

Descargue todo junto

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)

Antes de su primera venta real

Probé el número terminado en 2 y mi sistema no vuelve a vender.
La referencia que paso es mi número de factura, y no se repite.
El api_secret está en el servidor, nunca en una app móvil ni en JavaScript del navegador.
Guardo el transactionId y el requestId de cada venta.
Mi cliente comprueba que ya no está en pruebas antes de la primera venta.

Si necesita más detalle

¿Necesita credenciales de producción? Pídalas a su ejecutivo de cuenta. Para incidencias, incluya siempre el request_id de la respuesta.