Usted revende nuestro alojamiento. Sus clientes son suyos: sus precios, sus facturas, su proveedor de pagos. Así es como usted controla nuestra plataforma desde lo que ya utilice: un panel de facturación, su propio sitio de WordPress o un script.
Qué ven realmente sus clientes
Antes de la parte técnica: sus clientes nunca tienen que vernos. Hay tres superficies y usted elige cuál utilizar.
| Superficie | A quién pertenece |
|---|
| El panel de alojamiento, en su propio nombre de host | Configure un nombre de host para el panel en Reventa → Su marca y sus clientes iniciarán sesión en panel.suempresa.com con su logotipo y sus colores. El mismo panel, su dirección. |
| Su propio sitio web | El plugin de WordPress añade la búsqueda de dominios y un enlace de inicio de sesión con un solo clic a su sitio, y procesa el pedido a través de su propia pantalla de pago de WooCommerce. |
| Su panel de facturación | WHMCS o HostBill siguen siendo la puerta de entrada; el módulo aprovisiona en segundo plano y el botón del área de clientes inicia su sesión directamente en su alojamiento. |
⛔ Elija la que elija, usted es el comerciante de registro para sus clientes: sus precios, sus facturas, su número de IVA, su proveedor de pagos. Nosotros le facturamos a usted, una vez al mes, a precio de mayorista.
Una vez que haya configurado un nombre de host para el panel, introdúzcalo en el campo Dirección del panel del plugin de WordPress y en ningún otro lugar; los enlaces de inicio de sesión que genera esta API lo siguen automáticamente.
Las cuatro formas de acceso
Hay cuatro formas de acceso, y todas hacen lo mismo por debajo:
| Para |
|---|
| El módulo de WHMCS | Una tienda WHMCS |
| El módulo de HostBill | Una tienda HostBill |
| El plugin de WordPress | Vender desde su propio sitio de WordPress o WooCommerce |
| La API | Cualquier otra cosa: Blesta, un sistema interno, un script cron |
1. Obtenga una clave de API
En su panel de control, vaya a Claves de API y cree una. Asígnele solo lo que necesite:
| Permiso | Motivo |
|---|
org.read | Leer las cuentas de sus clientes |
sites.create | Aprovisionar un sitio |
sites.view | Leer un servicio |
sites.delete | Cancelar |
reseller.view | Listar sus servicios y leer el uso |
reseller.provision | Suspender, reactivar e iniciar sesión de un cliente |
⛔ No asigne a una integración el permiso reseller.manage. Ese permiso permite editar su lista de precios y las credenciales de su propia pasarela de pago. reseller.provision existe precisamente para que una clave que usted pegue en un panel de facturación o en un sitio web no lo necesite.
La clave se muestra una sola vez. Guárdela donde guarde sus otras credenciales; nunca en un archivo servido por su servidor web.
2. Realice su primera llamada
curl https://api.zinndigital.com/v1/reseller/services \
-H "Authorization: Bearer zdk_live_…"
Esto devuelve cada servicio que usted ha aprovisionado, una fila por sitio, con el cliente al que pertenece, su estado y lo que usted cobra por él. En una cuenta nueva es una lista vacía, lo cual es la respuesta correcta, no un error.
3. Toda la integración, en seis llamadas
CUÁNDO LLAMADA
se paga un pedido POST /v1/orgs una vez por CLIENTE
POST /v1/sites una vez por SERVICIO
no han pagado POST /v1/reseller/services/{siteId}/suspend
pagan POST /v1/reseller/services/{siteId}/unsuspend
cancelan DELETE /v1/sites/{siteId}
"iniciar sesión en POST /v1/reseller/services/{siteId}/sso
el alojamiento"
El aprovisionamiento consta de dos llamadas, y las claves son importantes:
# 1. la cuenta del cliente: vinculada a SU id de cliente
curl -X POST https://api.zinndigital.com/v1/orgs \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: account-4211" \
-d '{"type":"customer","name":"Acme Ltd"}'
# 2. su sitio: vinculado a SU id de servicio
curl -X POST https://api.zinndigital.com/v1/sites \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: service-9915" \
-d '{"org_id":"<from step 1>","product_line":"mainstream","primary_domain":"acme.com"}'
Dos reglas que cuestan dinero si se equivoca
- Vincule la cuenta a su CLIENTE y el sitio a su SERVICIO. El segundo pedido de un cliente debe llegar a la cuenta que ya tiene. Si vincula ambos al servicio, un cliente terminará con tres cuentas no relacionadas y tres paneles independientes.
- Envíe una cabecera
Idempotency-Key en cada POST, generada a partir de su propio id para el elemento. Todo sistema de facturación realiza reintentos: una devolución de llamada de la pasarela llega dos veces, un administrador vuelve a ejecutar un aprovisionamiento fallido, un cliente hace doble clic. Sin la clave, el segundo intento crea un segundo sitio y se le factura a usted.
Tres respuestas que no debe simplificar en dos
unsuspend puede responder 409. Eso significa que nuestro equipo de abusos tiene retenido el sitio, no usted. Muestre el mensaje; no lo reintente.
- **Cancelar programa una eliminación, no la ejecuta de inmediato.** La fecha se devuelve como
pending_deletion_at. Decirle a un cliente que sus datos ya se han borrado cuando no es así es peor que no decirle nada.
disk_used_bytes puede ser null, y null no es cero. Significa que no pudimos medirlo, no que no se haya utilizado nada. Omítalo: no escriba 0 en sus propios registros, o le mostrará a un cliente una barra de uso verde para un sitio del que no tiene lectura.
4. Inicie la sesión de un cliente
POST /v1/reseller/services/{siteId}/sso devuelve una URL de un solo uso que lleva a su cliente directamente a su propia cuenta, ya con la sesión iniciada.
⛔ Genérela cuando hagan clic, nunca cuando renderice la página. El enlace es de un solo uso y caduca en cuestión de minutos, por lo que un enlace insertado en una página se invalida en la primera visualización y queda en todas las memorias caché entre usted y el navegador.
5. Instale un módulo en su lugar
- WHMCS — copie el módulo en
modules/servers/zinn/, añada un servidor cuya Contraseña sea su clave de API y configure la línea de productos en el producto. Pulse Probar conexión: realiza una llamada real y le indica qué ha respondido la plataforma.
- HostBill — cópielo en
includes/modules/Hosting/zinn/ y conéctelo de la misma manera.
- WordPress — el Zinn® Reseller Toolkit: búsqueda de dominios, un enlace de inicio de sesión al alojamiento de sus clientes y aprovisionamiento de WooCommerce cuando se paga un pedido. Código abierto en <https://github.com/Zinn-Digital/zinn-reseller-toolkit>, o descárguelo desde Plugins en su panel de control.
6. Pase a producción
Compruebe esto antes de aceptar un pedido real:
- La prueba de conexión es correcta en el módulo, o su primer
curl devuelve una lista.
- Su lista de precios está configurada (Reventa → Sus precios).
- Su pasarela de pago está conectada (Reventa → Pasarelas de pago): sus clientes le pagan a usted, a través de su propia cuenta.
- Los datos de su empresa están introducidos (Reventa → Su empresa) para que las facturas de sus clientes lleven su entidad legal y número de IVA, no los nuestros.
- Ha realizado un pedido real de principio a fin y ha visto aparecer el sitio.
Dónde está todo lo demás
La referencia completa de la API —cada endpoint, generado a partir de nuestra especificación, con el permiso que necesita cada uno— se encuentra en <https://zinndigital.com/developers/api>.