Intereting Posts
DENY прямая загрузка файла с использованием php Каков самый простой способ отображения нескольких местоположений с использованием API карт Google с MySQL и PHP? PHP PDO: выполняются ли стили Fetch_CLASS и FETCH_INTO в свойствах частных объектов? Как несериализовать строку в массив Получение специальных символов из базы данных MySQL с помощью PHP отправить сообщение в телеграмме бот Сохраненная процедура вызывает «Команды не синхронизированы» в следующем запросе Как установить php 5.3.14 ubuntu 12.10 Ошибка PHP PDO при использовании заполнителей в предложении LIMIT запроса MySQL PHP mail () работает из командной строки, но не apache PHP / MYSQL допускает только один голос на одного члена? Как получить последние n элементов в массиве PHP в качестве другого массива? Как я могу исправить Heroku imagecreatefromjpeg () Проблема с разбиением на страницы в пользовательском шаблоне WordPress SF2 Функциональные тесты: «Сброс контейнера не допускается, когда область активна»

Полученный HTTP-метод недействителен. Принимается только POST

Хорошо, у меня есть этот php-файл для обработки вашего банковского счета HSBC с использованием API, у меня это нормально работает на двух других моих сайтах, однако SAME-файл терпит неудачу на двух других сайтах, я понятия не имею, почему. Мой веб-разработчик остановлен и решил создать тестовый файл. Вот код из тестового файла:

<?php echo "payment processing..."; $amount = 100;// round($_POST["realamount"], 2) * 100; $fullName = "test";//$_POST['name']; $Address1 = "test";//$_POST['address1']; $Address2 = "test";//$_POST['address2']; $city ="test";// $_POST['city']; $county = $city; $postcode = "test";//$_POST['zipcode']; $country = "GRB";//$_POST['country']; $phone = "test";//$_POST['telephone']; $email = "a@a.com";//$_POST['emailaddress']; $cardNumber = "337877666233434";//$_POST['cardNumber']; $cardExp = "03/2011";//$_POST['ccmonth'] . "/" . substr($_POST["ccyear"],2,2); $cvdIndicator = "111";//$_POST['cvdIndicator']; $cvdValue = "111";//$_POST['cvdValue']; $issueNumber = "111";//$_POST['issueNumber']; $cardType = "VI";//$_POST['cardType']; $testRead = "<?xml version='1.0' encoding='UTF-8'?> <EngineDocList> <DocVersion>1.0</DocVersion> <EngineDoc> <ContentType>OrderFormDoc</ContentType> <User> <Name>xxx</Name> <Password>xxx</Password> <ClientId>xxx</ClientId> </User> <Instructions> <Pipeline>PaymentNoFraud</Pipeline> </Instructions> <OrderFormDoc> <Mode>P</Mode> <Comments/> <Consumer> <Email/> <PaymentMech> <CreditCard> <Number>".$cardNumber."</Number> <Expires DataType='ExpirationDate' Locale='840'>".$cardExp."</Expires> <Cvv2Val>".$cvdValue."</Cvv2Val> <Cvv2Indicator>".$cvdIndicator."</Cvv2Indicator> <IssueNum>".$issueNumber."</IssueNum> </CreditCard> </PaymentMech> </Consumer> <Transaction> <Type>Auth</Type> <CurrentTotals> <Totals> <Total DataType='Money' Currency='826'>".$amount."</Total> </Totals> </CurrentTotals> </Transaction> </OrderFormDoc> </EngineDoc> </EngineDocList>"; ?> <?php //$url = "https://www.uat.apixml.netq.hsbc.com"; $url = "https://www.secure-epayments.apixml.hsbc.com/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS,$testRead); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result_tmp = curl_exec ($ch); curl_close ($ch); /////////////////////////////////////// // use XML Parser result $xml_parser = xml_parser_create(); xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1); xml_parse_into_struct($xml_parser, $result_tmp, $vals, $index); xml_parser_free($xml_parser); //print_r($vals); // print all the arrays. //print_r($vals[29]); // print only the selected array. $val1 = $vals[21]; // ProcReturnMsg $paymentResult = $val1[value]; $result_tmp = ""; $k=0; $findthis = false; $findthis2 = false; foreach ($vals as $val) { $result_tmp.= $k."{"; foreach($val as $d => $a) { $result_tmp.="[".$d."]".$a; if($d=="tag" && $a=="TransactionStatus"){ $findthis = true; } if($d=="value" && $findthis){ $tResult = $a; $findthis = false; } if($d=="tag" && $a=="Text"){ $findthis2 = true; } if($d=="value" && $findthis2){ $tResult2 = $a; $findthis2 = false; } } $result_tmp.= "}"; $k++; } echo $tResult2.$tResult; ?> 

Вот пример одного из сайтов, не работающих gs.net . Вывод: обработка платежа … Полученный HTTP-метод недействителен. Принимается только POST.

Принимая во внимание, что когда я загружаю этот точный файл на некоторые из моих других веб-хостов, такие как: рабочий пример HGL. Результат здесь – обработка платежа … Невозможно определить тип карты. ('length' равно '15') E Это звучит как сообщение об ошибке, но в основном эта ошибка не важна, поэтому последнее – это то, чего мы пытаемся достичь в первой ссылке.

Я даже загрузил этот файл на некоторые действительно основные учетные записи хостинга, иногда это будет работать, иногда это не так, поэтому я предполагаю, что это связано с тем, что позволяет хостинговая компания или включила / выключила.

Любые идеи, пожалуйста?

спасибо

Это, похоже, вызвано обновлением PHP, применяемым к серверу, и это сводило меня с ума.

Решение заключается в установке следующих параметров SSL при настройке соединения CURL.

 curl_setopt($ch, CURLOPT_SSLVERSION, 3); curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'RC4-MD5'); 

проверьте, включен ли завиток на тех серверах, которые не работают для стартеров. используйте функцию phiinfo () для проверки.