2016-11-11 9 views
-1

В настоящее время я работаю с платежным средством instamojo.Есть ли альтернатива cURL

У меня есть платежный идентификатор для того же самого и, используя следующий код, чтобы получить статус оплаты

echo $cUrl = 'https://test.instamojo.com/api/1.1/payments/' . $payment_id; 
        (function_exists('curl_init')) ? '' : die('cURL Must be installed for geturl function to work. Ask your host to enable it or uncomment extension=php_curl.dll in php.ini'); 
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, $cUrl); 
        curl_setopt($ch, CURLOPT_HEADER, FALSE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Api-Key:90a1c44nmb8ac4e65nmnm3eab5b308cf", 
                   "X-Auth-Token:8164083509a889951fhjhjh1ff89c4")); 
        $response = curl_exec($ch); 
        $error_number = curl_errno($ch); 
        $error_message = curl_error($ch); 
        curl_close($ch); 
        $response_obj = json_decode($response, true); 
        echo "Eror number: $error_number<br />"; 
        echo "Eror message: $error_message<br />"; 
        print_r($response_obj); 

        if($response_obj['success'] == false) { 
         $message = json_encode($response_obj['message']); 
         return Array('payment' => Array('status' => $message)); 

        } 
        if(empty($response_obj) || is_null($response_obj)){ 
         return Array('payment' => Array('status' => 'No response from the server.')); 
        } 
        else{ 
         return $response_obj; 
        } 

Но когда я бегу этот код на моем локальном хосте, то я получаю результат правильно.

Но когда я бегу это на моем сервере (т.е. 000webhost.com), но получаю сообщение об ошибке:

Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/a2963438/public_html/wp-content/plugins/instamojo-register/imojoregister_shortcode.php on line 18 

Я использую бесплатный счет 000webhost.com Так что я не могу позволить safe_mode или редактировать php.ini ,

Так что я хочу спросить, есть ли какой-либо другой метод для ответа на этот URL-адрес?

+0

Почему не просто следовать перенаправляет себя? – Chris

+4

«Вы получаете то, за что платите», приходит на ум. –

+0

http://php.net/manual/en/function.file-get-contents.php с create_context – Richard

ответ

2

Возможно, вы захотите посмотреть на Гузл.

http://docs.guzzlephp.org/en/latest/

http://docs.guzzlephp.org/en/latest/quickstart.html

По их FAQ находится здесь: http://docs.guzzlephp.org/en/latest/faq.html#does-guzzle-require-curl

ли жрать требует Curl?

Нет. Для отправки запросов Guzzle может использовать любой обработчик HTTP. Это означает, что Guzzle можно использовать с cURL, оболочкой потока PHP, сокетами и неблокирующими библиотеками типа React. Вам просто нужно настроить обработчик HTTP для использования другого метода отправки запросов.

Примечание

жрать исторически только использовать CURL для отправки HTTP-запросов. cURL - удивительный HTTP-клиент (возможно, лучший), и Guzzle будет продолжать использовать его по умолчанию, когда он будет доступен. Это редко, но некоторые разработчики не имеют cURL, установленных в своих системах, или сталкиваются с проблемами, связанными с версией. Предоставляя заменяемые HTTP-обработчики, Guzzle теперь гораздо более настраиваемый и способный адаптироваться под нужды других разработчиков.

1

Лучший способ обновить сервер, значит, в то время как вы можете использовать file_get_contents, чтобы получить ваши вещи сделать

Смежные вопросы