За последние 24 часа нас посетили 17976 программистов и 1699 роботов. Сейчас ищут 1544 программиста ...

JSON POST-запрос на php

Тема в разделе "PHP для новичков", создана пользователем adept77, 28 ноя 2022.

  1. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Вот в этой строке советуют прописать путь к сертификату
    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 команды пишутся в командной строке.
    Только данные надо свои писать.
     
    adept77 нравится это.
  2. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    я не пойму, что это за сертификат и откуда он взялся... у меня только исходный 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');
    --- Добавлено ---
    щас почитаю, попробую..
     
  3. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    А вот эти две строки закомментировать
    И оставить
    curl_setopt($curl,CURLOPT_CAINFO,'c:/WebServers/home/umit/www/cert/cert.pem');
    ?
    И адрес url для каждого запроса там отличается(в книжке). Там /ping или /orders/create/ и т.д.
     
    adept77 нравится это.
  4. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    я вот что-то задумался, что CURLOPT_CAINFO - требует корневой сертификат, точнее путь к центру авторизации
    https://curl.se/libcurl/c/CURLOPT_CAINFO.html
    --- Добавлено ---
    без изменений
     
  5. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Тогда надо узнать этот путь у техподдержки?
     
    adept77 нравится это.
  6. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    Короче, скачал я корневой СА отсюда 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)

    и в админке такой запрос появился:
     

    Вложения:

    • 113.png
      113.png
      Размер файла:
      164,4 КБ
      Просмотров:
      4
  7. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    У твоего сервера есть сертификат. Найди его. У меня это C:\Denwer\usr\local\apache\conf\cert
    --- Добавлено ---
    Ты отправляешь запрос на https://sandboxapi.paymtech.kz/orders/create ?
     
    adept77 нравится это.
  8. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    нет, просто на https://sandboxapi.paymtech.kz/
    --- Добавлено ---
    --- Добавлено ---
    Это вот эти ?
    privkey.pem
    server.crt
    server.csr
     
  9. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Там в книжке разные url
    Это вот эти ?
    privkey.pem
    server.crt
    server.csr
    Если они у тебя в папке сервера то да
     
    adept77 нравится это.
  10. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0

    Вложения:

    • 113.png
      113.png
      Размер файла:
      25,3 КБ
      Просмотров:
      3
  11. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    А в каком формате должна проходить валидация? Может нужен хешированный пароль?
    Через md5()
     
    adept77 нравится это.
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Denwer Dead 2013

    DA7MKL_1.png
     
  13. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    об этом ничего не говорится
    Запросы осуществляются по HTTP 1.1 с использованием SSL и Basic-авторизации.
    Кодировка запросов и ответов: UTF-8.
    Запросы и ответы в API передаются в формате JSON.
    Для выгрузки информации используется метод GET, для проведения манипуляций над данными —
    методы POST и PUT.
    Для GET-запросов параметры запроса передаются как QUERY STRING.
    Для POST-запросов параметры передаются в теле POST-запроса, иногда передается и QUERY STRING.
    Успешные ответы отдаются с HTTP-статусом 200 (или 201).
     
  14. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
  15. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    {
    "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"
    }
     
  16. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Может в личную переписку перейти? В книге в примерах строка пароля какая то подозрительная...
     
    adept77 нравится это.
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Уверенно на столько, что до сих пор используешь софт 10 летней давности.

    PHP 8.2 будет выпущен 8 декабря 2022 года
     
  18. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Параметры передаются в JSON а как он выглядит? Вот так?
    Код (Text):
    1. $array = array(
    2. 'AMOUNT' => $_POST['AMOUNT'],
    3. 'CURRENCY' => $_POST['CURRENCY'],
    4. 'MERCHANT_ORDER_ID' => $_POST['MERCHANT_ORDER_ID'],
    5. 'DESCRIPTION' => $_POST['DESCRIPTION']
    6. );
    А ты не думаешь что большие буквы в ключах массива не дают хорошего результата?
    Серверу нужны маленькие? Не AMOUNT а amount
     
    adept77 нравится это.
  19. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    можно в личку, можно в телегу
    --- Добавлено ---
    щас попробую изменить
     
  20. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    У меня компоненты свежие
     
  21. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    а вот теперь заказ ордер прошел... ко
    а вот теперь заказ прошел, но выкинул не на страницу оплаты, а просто выдал инфу :
    {"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)
     
  22. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Переходи в личку
     
    adept77 нравится это.
  23. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    922
    Симпатии:
    143
    Сударь, ты хочешь решить бизнес-задачу за просто йух не имея навыков.
    И да, это форум, а не служба поддержки, потому давай ты "до свидания", и скажи хотя бы лайками спасибо тем, кто в твоей песочнице с тобой ковыряется.
    И если тебе САМОМУ РАЗОБРАТЬСЯ надо, зачем тут вопросы задавать? Ты же всё САМ, не?
     
    #98 don.bidon, 1 дек 2022
    Последнее редактирование: 1 дек 2022
  24. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    Ссссу...дарь, вас тут не стояло и таки имейте вежливость не лезть в беседу умных людей по вопросу, который находится далеко за рамками вашей компетенции. И да, вы правы, это форум с названием "PHP для новичков", где новички могут спросить совета, а не ждать очередного понтовитого "умника"
    P.S. Понты оптом покупаете ?
     
  25. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    Т.е. инфа уходит, сертификаты принимаются нормально.
    Осталось последнее - нужно из массива JSON, который мне возращает сервер, вытащить id и отправить его на location: https://sandboxcheckout.paymtech.kz/pay/"order_id"
    кто в курсе, как это делается ? а то что-то даже вопрос не могу сформулировать, что и где искать ...
    --- Добавлено ---
    Если я правильно понимаю, то в этом же скрипте должен быть типа парсер, который из массива вытаскивает значение, потом формируется нужная ссылка и отправляется на сервер ?
    как это делается одновременно ?