Локальный тестировщик: HTML + Bootstrap 5. Запросы в шлюз — из браузера (fetch) или через PHP-прокси (обход CORS). Страница и pgw_proxy.php должны отдаваться по HTTP(S), не file://.
PHP: запрос выполняет сервер (curl) — удобно при CORS; IP шлюза видит сервер PHP.
Ошибки: CORS (браузер), network, 403 ip_not_allowed, 429 rate_limited, 404 payment_not_found. Ответы API: поля error / detail.