CURLOPT_URL=>$url.'/ping', Это что за запись такая ? нигде не могу инфу найти. так тоже можно пинговать ? --- Добавлено --- добрался до того, что выдал ошибку file type P12 for certificate not supported т.е. curl не поддерживает сертификаты *.p12 ??? кто знает ? Либо может есть какой-то другой путь авторизации, без curl
У тебя такой адрес URL? https://sandboxapi.paymtech.kz Ответ сервера на https://sandboxapi.paymtech.kz/ping
нет, не такой. у меня - {"message":"PONG!","date":"2022-11-30 14:53:00"} адрес правильный только этот ответ я получил, если прохожу по твоей ссылке. если же делаю отдельный файл bzk.php : Код (Text): <?php $ch = curl_init('https://sandboxapi.paymtech.kz/ping'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); $result = curl_exec($ch); curl_close($ch); print_r($result); ?> то выводится просто пустая страница
У меня bad request 400 если перехожу по ссылке. А если в этот же файл который выше добавить curl_setopt для CURLOPT_SSLCERT =>'umit_life.p12', CURLOPT_SSLCERTTYPE => 'P12', CURLOPT_SSLCERTPASSWD =>'W111111' вот этих значений? Это я так написал? curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
bad request 400 - это потому что у тебя сертификата нет, скорее всего. Но пинг же у тебя проходит. у меня пинг не проходит. Что не так делаю ?
Я просто перехожу в браузере из адресной строки. У тебя в файле bzk.php в строчке curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); тоже array ? Сделай просто строку. curl_setopt($ch, CURLOPT_HTTPHEADER, 'Content-Type:application/json'); И про сертификаты добавь в этот файл информацию.
так совсем грубо ругается: Warning: curl_setopt() [function.curl-setopt]: You must pass either an object or an array with the CURLOPT_HTTPHEADER, CURLOPT_QUOTE, CURLOPT_HTTP200ALIASES and CURLOPT_POSTQUOTE arguments in Z:\home\umit\www\ping.php on line 5 Код (Text): <?php $ch = curl_init('https://sandboxapi.paymtech.kz/ping'); curl_setopt($ch, CURLOPT_HTTPHEADER, 'Content-Type: application/json'); $ch_post= array( //CURLOPT_URL=>$url.'/ping', CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER =>FALSE, CURLOPT_TIMEOUT =>10, CURLOPT_SSLCERT =>'umit_life.p12', CURLOPT_SSLCERTTYPE => 'P12', CURLOPT_SSLCERTPASSWD =>'W11111' ); curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); curl_setopt($ch,CURLOPT_USERPWD,"umit_life:b11111"); curl_setopt_array($ch,$ch_post); $result = curl_exec($ch); curl_close($ch); print_r($result); ?> --- Добавлено --- Да и кстати, хотел попутно вопрос У меня не дает определить массив таким образом: Код (Text): $post_data =[ 'field1'=>'val_1', 'field2'=>'val_2', ]; сразу браузер ошибку синтаксиса выдает разрешает только так: Код (Text): $post_data =array( 'field1'=>'val_1', 'field2'=>'val_2', );
@adept77, не можешь прочесть ман на уровне "ы", иди в другой топик, скажи спасибо, что некоторые люди тратят своё личное время на тебя. адепт, блин.
а у тебя ЧСВ не позволяет помогать неопытным ? Или квалификация ? Выучил наизусть мануал по "echo" ? И заняться больше нечем, кроме как хрень писать ? Ну так будь счастлив. Этот топик не для тебя. Он так и называется - PHP для новичков. P.S. Ну а уж если ты такой крутой спец, накидал бы уже нужный скрипт и объяснил людям, как работает. Нет ? До свиданья, не мешай
> Необходимо отправить POST-запрос на платежную систему То есть ты для денег забесплатно решений хочешь? Нужный скрипт накидаю на взаимовыгодных условиях, пока ты этого не поймёшь, далеко не уедешь.
от тебя вообще ничего не хочу. откуда ты тут взялся ? и нафиг навязываешься ? Хотел бы купить скрипт - купил, а мне надо самому разобраться. Сказал же - до свиданья.
Надо определить параметры либо в массиве либо по отдельности. Тогда вставь в массив еще элемент CURLOPT_HTTPHEADER => 'Content-Type: application/json' а curl_setopt(CURLOPT_HTTPHEADER, 'Content-Type: application/json') убери Массив через квадратные скобки не определить, потому что версия php не позволяет
теперь ругается на 16 строку: Warning: curl_setopt_array() [function.curl-setopt-array]: You must pass either an object or an array with the CURLOPT_HTTPHEADER, CURLOPT_QUOTE, CURLOPT_HTTP200ALIASES and CURLOPT_POSTQUOTE arguments in Z:\home\umit\www\ping.php on line 16 т.е. как я понимаю, опять же этот параметр ему не нравится... --- Добавлено --- т.е. если даешь для CURLOPT_HTTPHEADER параметр массив, то возвращает NULL если без массива, то ругается CURLOPT_HTTPHEADER => array('Content-Type: application/json');
нашел вот еще одну тему про сертификаты. там говорят, что curl не понимает р12, нужно перевести его в pem В итоге написал: Код (Text): $certs = array(); $pkcs12 = file_get_contents("umit_life.p12"); openssl_pkcs12_read( $pkcs12, $certs, "W1111111" ); file_put_contents('cert/cert.pem', $certs['cert']); file_put_contents('cert/priv.key', $certs['pkey']); $curl = curl_init(); curl_setopt($curl,CURLOPT_CUSTOMREQUEST,"POST"); curl_setopt($curl,CURLOPT_URL,"https://sandboxapi.paymtech.kz"); curl_setopt($curl,CURLOPT_POST,0); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,1); //curl_setopt($curl,CURLOPT_CAINFO,'C:/www/html/web_site/certificates/CA.cert'); curl_setopt($curl,CURLOPT_SSLCERT,'cert/cert.pem'); curl_setopt($curl,CURLOPT_SSLKEY,'cert/priv.key'); curl_setopt($curl,CURLOPT_SSLCERTPASSWD,"W1111111"); curl_setopt($curl,CURLOPT_SSLKEYPASSWD,"W1111111"); curl_setopt($curl,CURLOPT_USERPWD,"umit_life:b111111"); $array = array( 'AMOUNT' => $_POST['AMOUNT'], 'CURRENCY' => $_POST['CURRENCY'], 'MERCHANT_ORDER_ID' => $_POST['MERCHANT_ORDER_ID'], 'DESCRIPTION' => $_POST['DESCRIPTION'] ); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($array)); curl_setopt($curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); $result = curl_exec($curl); curl_close($curl); $obj = json_decode($result,true); var_dump($obj); не пойму только, откуда берется это //curl_setopt($curl,CURLOPT_CAINFO,'C:/www/html/web_site/certificates/CA.cert'); Хотя результат тот же самый, возвращается страница пустая
выдает ошибку: unable to use client certificate (no key found or wrong pass phrase?)NULL это он какой ключ найти не может ? или дело в путях ?
должен быть рабочий... мне их дали два - один на апи, другой - на админку. в админку заходит норм скорее всего и второй тоже рабочий --- Добавлено --- file_put_contents('cert/cert.pem', $certs['cert']); file_put_contents('cert/priv.key', $certs['pkey']); вот здесь он нормально вытаскивает массив и раскладывает по файлам в curl ставлю те же пути, по которым положил их
Ну ошибка говорит что либо ключ не найден либо пароль неверный. Ты у кого взял эти данные? Может у них шпаргалка есть получше?
да в том то и проблема, что сидят тоже такие же, у кого вместо знаний одни понты... "Вы вам инструкцию дали, разбирайтесь, это не наша компетенция" --- Добавлено --- Щас попробую за ключи узнать еще раз --- Добавлено --- установил этот серт себе на комп в винду, пароль нормальный --- Добавлено --- указал абсолютный путь до сертификата SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failedNULL --- Добавлено --- или может попробовать вернуть первоначальный скрипт?? там где было CURLOPT_SSLCERT =>'umit_life.p12', CURLOPT_SSLCERTTYPE => 'P12'
А что если отключить проверку: curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0); Что изменится?
закомментил, ничего не изменилось, ошибка та же SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failedNUL --- Добавлено --- вот он ругается : verify that the CA cert is OK. Это не на отсутствие вот этого //curl_setopt($curl,CURLOPT_CAINFO,'/CA.cert'); ???? только что это за серт и откуда его брать ?
Какие еще запросы ты делал к API? Были успешные с информацией? В книжке нет информации про сертификаты. Там про базовую аутентификацию с логином и паролем.
попробовал вернуть Р12, нет, не понимает --- Добавлено --- только пинг проходит, другие не делал. я так понимаю, что пока сертификаты не сойдутся, ни один запрос не проходит --- Добавлено --- вот скрин админки