На работе я пытаюсь отладить клиентский сайт, у которого возникают проблемы с их переносом шлюза api. Поставщик шлюза использует CloudFlare (он не находится на конце клиентского сайта), который блокирует представления платежной формы, потому что A: ему не нравится заголовок cURL (я уже исправил эту часть, передав вместо этого заголовок firefox) и B: Cookies не включены. Эта вторая часть является проблематичной. Сервер не хранит файлы cookie, такие как браузер, и я не знаю, как поймать ответ cookie и передать его с запросом cURL, чтобы обойти непримиримые меры безопасности CloudFlare (не спрашивайте меня, почему у платежного шлюза будет он сконфигурирован таким образом, это не имеет смысла, и скрипт, который они предоставили для подключения, не работает). При условии, является раздел сценария, который делает запрос:Cloudflare блокирует запросы cURL на платежный шлюз api
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $gatewayURL);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); //I added this bit to address the user agent issue, everything else is directly from their script.
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
Просто хотел прокомментировать, что на самом деле произошло здесь. Платежный шлюз блокировал доступ к его API, потому что разработчик в шлюзовой компании случайно заблокировал свой отдых api за кэшированием Cloudflare. Это было решено с помощью расстраивающей цепочки телефонных звонков с компанией платежных шлюзов. После того, как мы и несколько других клиентов пожаловались, они, наконец, перестали пытаться передать доллар и заставили их разработчиков исправить свою ошибку. Оказывается, на нашей стороне ничего на самом деле не было. – mopsyd