Вот в этой строке советуют прописать путь к сертификату https://stackoverflow.com/questions/13467648/configuring-curl-for-ssl curl_setopt($curl,CURLOPT_CAINFO,'C:/www/html/web_site/certificates/CA.cert'); Вместо C:/www/html/web_site/certificates/CA.cert Надо какой то свой путь указать. --- Добавлено --- Я тут нарыл преобразование командной строки в curl Может попробовать? https://translated.turbopages.org/p...776562/https/incarnate.github.io/curl-to-php/ В той книжке по API команды пишутся в командной строке. Только данные надо свои писать.
я не пойму, что это за сертификат и откуда он взялся... у меня только исходный umit-life.p12 и два, которые я из него преобразованием вытащил. К ним указал путь полный: curl_setopt($curl,CURLOPT_SSLCERT,'c:/WebServers/home/umit/www/cert/cert.pem'); curl_setopt($curl,CURLOPT_SSLKEY,'c:/WebServers/home/umit/www/cert/priv.key'); --- Добавлено --- щас почитаю, попробую..
А вот эти две строки закомментировать И оставить curl_setopt($curl,CURLOPT_CAINFO,'c:/WebServers/home/umit/www/cert/cert.pem'); ? И адрес url для каждого запроса там отличается(в книжке). Там /ping или /orders/create/ и т.д.
я вот что-то задумался, что CURLOPT_CAINFO - требует корневой сертификат, точнее путь к центру авторизации https://curl.se/libcurl/c/CURLOPT_CAINFO.html --- Добавлено --- без изменений
Короче, скачал я корневой СА отсюда https://curl.se/docs/caextract.html сделал так: curl_setopt($curl,CURLOPT_CAINFO,'c:/WebServers/home/umit/www/cert/cacert-2022-10-11.pem'); curl_setopt($curl,CURLOPT_SSLCERT,'c:/WebServers/home/umit/www/cert/cert.pem'); curl_setopt($curl,CURLOPT_SSLKEY,'c:/WebServers/home/umit/www/cert/priv.key'); теперь выдает ошибку: {"failure_type":"error","order_id":null,"failure_message":"Request not allowed"}int(1) и в админке такой запрос появился:
У твоего сервера есть сертификат. Найди его. У меня это C:\Denwer\usr\local\apache\conf\cert --- Добавлено --- Ты отправляешь запрос на https://sandboxapi.paymtech.kz/orders/create ?
нет, просто на https://sandboxapi.paymtech.kz/ --- Добавлено --- --- Добавлено --- Это вот эти ? privkey.pem server.crt server.csr
Там в книжке разные url Это вот эти ? privkey.pem server.crt server.csr Если они у тебя в папке сервера то да
об этом ничего не говорится Запросы осуществляются по HTTP 1.1 с использованием SSL и Basic-авторизации. Кодировка запросов и ответов: UTF-8. Запросы и ответы в API передаются в формате JSON. Для выгрузки информации используется метод GET, для проведения манипуляций над данными — методы POST и PUT. Для GET-запросов параметры запроса передаются как QUERY STRING. Для POST-запросов параметры передаются в теле POST-запроса, иногда передается и QUERY STRING. Успешные ответы отдаются с HTTP-статусом 200 (или 201).
{ "errors" : [ { "message" : "Amount required", "uri" : "#/amount" } ], "failure_message" : "Validation failed", "failure_type" : "validation", "order_id" : null } Вот текст ошибки... я так понял, что сервер не видит сумму, URI и номер заказа, поэтому валидацию не проходит. но в POST-запросе отправленном он их показывает, т.е. эти параметры доходят { "AMOUNT" : "1000", "CURRENCY" : "KZT", "DESCRIPTION" : "Анонимное добровольное пожертвование", "MERCHANT_ORDER_ID" : "145998703" }
Уверенно на столько, что до сих пор используешь софт 10 летней давности. PHP 8.2 будет выпущен 8 декабря 2022 года
Параметры передаются в JSON а как он выглядит? Вот так? Код (Text): $array = array( 'AMOUNT' => $_POST['AMOUNT'], 'CURRENCY' => $_POST['CURRENCY'], 'MERCHANT_ORDER_ID' => $_POST['MERCHANT_ORDER_ID'], 'DESCRIPTION' => $_POST['DESCRIPTION'] ); А ты не думаешь что большие буквы в ключах массива не дают хорошего результата? Серверу нужны маленькие? Не AMOUNT а amount
а вот теперь заказ ордер прошел... ко а вот теперь заказ прошел, но выкинул не на страницу оплаты, а просто выдал инфу : {"orders":[{"merchant_order_id":"1906151136","status":"new","operations":[],"created":"2022-12-01 00:41:18","amount_refunded":"0.00","custom_fields":{},"location":{},"amount":"1000.00","issuer":{},"client":{},"secure3d":{},"id":"73693613701232172","card":{},"amount_charged":"0.00","currency":"KZT","description":" Анонимное добровольное пожертвование ","updated":"2022-12-01 00:41:18"}]}int(1)
Сударь, ты хочешь решить бизнес-задачу за просто йух не имея навыков. И да, это форум, а не служба поддержки, потому давай ты "до свидания", и скажи хотя бы лайками спасибо тем, кто в твоей песочнице с тобой ковыряется. И если тебе САМОМУ РАЗОБРАТЬСЯ надо, зачем тут вопросы задавать? Ты же всё САМ, не?
Ссссу...дарь, вас тут не стояло и таки имейте вежливость не лезть в беседу умных людей по вопросу, который находится далеко за рамками вашей компетенции. И да, вы правы, это форум с названием "PHP для новичков", где новички могут спросить совета, а не ждать очередного понтовитого "умника" P.S. Понты оптом покупаете ?
Т.е. инфа уходит, сертификаты принимаются нормально. Осталось последнее - нужно из массива JSON, который мне возращает сервер, вытащить id и отправить его на location: https://sandboxcheckout.paymtech.kz/pay/"order_id" кто в курсе, как это делается ? а то что-то даже вопрос не могу сформулировать, что и где искать ... --- Добавлено --- Если я правильно понимаю, то в этом же скрипте должен быть типа парсер, который из массива вытаскивает значение, потом формируется нужная ссылка и отправляется на сервер ? как это делается одновременно ?