cURL es la forma más directa de probar el API sin escribir código. Ideal para debugging y scripts rápidos.
Variables de entorno
export ZP_API_URL="https://www.zonapagos.com/Apis_CicloPago/api"
export ZP_ID_COMERCIO="31416"
export ZP_USUARIO="UsuarioDef"
export ZP_CLAVE='PagosN3*)'
export ZP_COD_SERVICIO="2701"
Nota las comillas simples en la clave ('PagosN3*)'). Bash interpretaría el ) sin ellas.
InicioPago — PSE
curl -X POST "$ZP_API_URL/InicioPago" \
-H "Content-Type: application/json" \
-d '{
"InformacionPago": {
"flt_total_con_iva": 50000,
"flt_valor_iva": 7983,
"str_id_pago": "ORDEN-TEST-001",
"str_descripcion_pago": "Pago de prueba",
"str_email": "test@ejemplo.com",
"str_id_cliente": "1020304050",
"str_tipo_id": "1",
"str_nombre_cliente": "Juan",
"str_apellido_cliente": "Perez",
"str_telefono_cliente": "3001234567"
},
"InformacionSeguridad": {
"int_id_comercio": '"$ZP_ID_COMERCIO"',
"str_usuario": "'"$ZP_USUARIO"'",
"str_clave": "'"$ZP_CLAVE"'",
"int_modalidad": -1
},
"AdicionalesPago": [],
"AdicionalesConfiguracion": [
{"int_codigo": 50, "str_valor": "'"$ZP_COD_SERVICIO"'"}
]
}' | jq .
InicioPago — con más opciones
curl -X POST "$ZP_API_URL/InicioPago" \
-H "Content-Type: application/json" \
-d @body.json
Donde body.json es un archivo separado:
{
"InformacionPago": { ... },
"InformacionSeguridad": { ... },
"AdicionalesPago": [],
"AdicionalesConfiguracion": [
{ "int_codigo": 50, "str_valor": "2701" },
{ "int_codigo": 104, "str_valor": "https://micomercio.com/retorno" },
{ "int_codigo": 109, "str_valor": "1" }
]
}
VerificacionPago
curl -X POST "$ZP_API_URL/VerificacionPago" \
-H "Content-Type: application/json" \
-d '{
"int_id_comercio": '"$ZP_ID_COMERCIO"',
"str_usr_comercio": "'"$ZP_USUARIO"'",
"str_pwd_Comercio": "'"$ZP_CLAVE"'",
"str_id_pago": "ORDEN-TEST-001",
"int_no_pago": -1
}' | jq .
Script bash con manejo de respuesta
#!/bin/bash
set -e
RESPONSE=$(curl -s -X POST "$ZP_API_URL/InicioPago" \
-H "Content-Type: application/json" \
-d @body.json)
INT_CODIGO=$(echo "$RESPONSE" | jq -r '.int_codigo')
if [ "$INT_CODIGO" = "1" ]; then
URL=$(echo "$RESPONSE" | jq -r '.str_url')
echo "✅ Éxito. Redirigir a: $URL"
else
ERROR=$(echo "$RESPONSE" | jq -r '.str_descripcion_error')
echo "❌ Error: $ERROR" >&2
exit 1
fi
curl -v -X POST "$ZP_API_URL/InicioPago" \
-H "Content-Type: application/json" \
-d @body.json 2>&1 | grep -E "^< |^\* "
Útil para ver:
- Headers del servidor (ver si expone
X-AspNet-Version).
- Tiempos de conexión TLS.
- Códigos HTTP intermedios.
Ver también
Postman
Colección lista con todos los requests.
Node.js
Equivalente en JavaScript.