Ваш сайт или программа сама выдаёт подписки из нашего VPN. Нужен разработчик.

Песочница

Тестовый ключ: те же адреса и ответы без денег, сбои по заказу, машина времени.

Проверить интеграцию целиком можно без настоящих денег. В кабинете, раздел «Песочница», выпустите тестовый ключ: он начинается с sb_ и ходит на те же адреса /api/v1/vpn/*. Ответы такие же, как в бою, с заголовком X-Sandbox: true, а данные свои: настоящие деньги не списываются, запросы к поставщику не идут, боевые подписки тестовому ключу не видны, тестовые боевому тоже. Цены и тарифы настоящие, поэтому суммы совпадут с боем.

Тестовый депозит до $1 000. Пополняется кнопкой в кабинете или POST /deposit с провайдером sandbox: такой счёт оплачивается сам через 10 секунд и присылает deposit.credited. Нехватку денег проверяйте честно: потратьте депозит, и покупка ответит 402 insufficient_balance.

Все операции работают как в бою: покупка на срок и «Навсегда», пробный период, продление, апгрейд, трафик, докупки, заморозка, ссылка, устройства (выдуманные), GET /operations, повтор с тем же custom_id. Ссылка подписки открывается, но к VPN не подключает.

Имитация сбоев. Заголовок X-Sandbox-Simulate на любом платном запросе:

  • upstream_unavailable: 503 с Retry-After, деньги не списаны, повтор с тем же custom_id выполнится;
  • lost_response: операция прошла, а ответ 503; повтор с тем же custom_id вернёт результат с idempotent_replay: true. Главная проверка, что ваш клиент не покупает второй раз;
  • slow: ответ через 8 секунд, проверка ваших таймаутов;
  • in_progress: 409 operation_in_progress.

Машина времени. POST /sandbox/subscriptions/{id}/advance с телом {"hours": 700} сдвигает срок подписки и шлёт те же события, что в бою: subscription.expires_in_72h, _48h, _24h и subscription.expired. В ответе список отправленных событий. Работает только с тестовым ключом.

Вебхук свой: отдельный адрес и секрет в кабинете, подпись X-Signature-V2 та же, в теле sandbox: true, в заголовках X-Sandbox: true и User-Agent: vpnfranchise-webhooks-sandbox/1. Ответ ждём 3 секунды. Повторов три (через 1, 5 и 15 минут), лента GET /events и журнал GET /webhook/deliveries тоже свои. Боевой приёмник пусть проверяет подпись боевым секретом: тестовое событие она не пройдёт.

Пределы. Не больше 600 изменяющих запросов в час (дальше 429 rate_limited), до 1 000 подписок. События и операции хранятся неделю: повтор с тем же custom_id позже выполнится заново. Тестовые данные, к которым не обращались 30 дней, стираются целиком. Стереть их сразу можно кнопкой в кабинете: ключ и адрес вебхука останутся.

Прежде чем идти в бой, прогоните в песочнице: покупку, повтор после lost_response, отказ upstream_unavailable с ожиданием Retry-After, 402 при пустом депозите, приём вебхука с проверкой подписи, окончание срока через машину времени. Потом замените ключ на боевой.

Собираем анонимную аналитику посещений. Подробнее