PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Taldis
Отправлено: 10 Декабря, 2020 - 12:16:03
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Дек. 2020  


Помог: 0 раз(а)




Для сайта подключил Яндекс Турбо страницы, необходимо фиксировать заказы на сайте, сделанные через эти Турбо страницы. Алгоритм такой:
1. Пользователь сделал заказ через Яндекс Турбо страницу.
2. Яндекс отправляет на сайт данные заказа методом POST в виде JSON объекта.
3. На сайте эти данные обрабатываются и создается новый заказ.
4. Далее нужно ответить Яндексу, что все в порядке, заказ добавлен. И вот тут возникла проблема, как правильно вернуть ответ из PHP обработчика? Если не вернуть ответ, то Яндекс отправляет данные заказа еще 4-5 раз.
В инструкции сказано:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Ответ магазина, если он принимает заказ
  2. Код ответа: 200 OK
  3. Тело:
  4. {
  5.   "order":
  6.   {
  7.     "accepted": true,
  8.     "id": "12345"
  9.   }
  10. }

Я пробую варианты (по очереди):
CODE (htmlphp):
скопировать код в буфер обмена
  1. $response = '{"order": {"accepted": true, "id": "'.$order_id.'"}}';
  2. header('Content-Type: application/json');
  3. header("HTTP/1.1 200 OK");
  4. echo $response;
  5.  
  6. $response = '{"order": {"accepted": true, "id": "'.$order_id.'"}}';
  7. header('Content-Type: application/json');
  8. header("HTTP/1.1 200 OK");
  9. echo json_encode($response);
  10.  
  11. $response['order']['accepted'] = true;
  12. $response['order']['id'] = $order_id;
  13. header('Content-Type: application/json');
  14. header("HTTP/1.1 200 OK");
  15. echo json_encode($response);
  16.  
  17. $response = ["order" => [[ "accepted" => "true", "id" => "'.$order_id.'" ]]];
  18. header('Content-Type: application/json');
  19. header("HTTP/1.1 200 OK");
  20. echo json_encode($response);

Ни один вариант не срабатывает, т.к. Яндекс шлет заказы повторно.
Я понимаю, что нужно обращаться в тех. поддержку Яндекса, но они молчат.

(Отредактировано автором: 10 Декабря, 2020 - 12:16:52)

 
 Top
Мелкий Супермодератор
Отправлено: 10 Декабря, 2020 - 13:13:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 11900
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 615 раз(а)




Запросите свой скрипт curl'ом и посмотрите внимательно (любой hex редактор в помощь) что именно у вас в ответе получается. Может BOM или ещё что сложно-заметное, может order_id пустой


-----
PostgreSQL DBA
 
 Top
Vladimir Kheifets
Отправлено: 11 Декабря, 2020 - 08:09:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 596
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 28 раз(а)




Taldis пишет:
Для сайта подключил Яндекс Турбо страницы, необходимо фиксировать заказы на сайте, сделанные через эти Турбо страницы. Алгоритм такой:
1. Пользователь сделал заказ через Яндекс Турбо страницу.
2. Яндекс отправляет на сайт данные заказа методом POST в виде JSON объекта.
3. На сайте эти данные обрабатываются и создается новый заказ.
4. Далее нужно ответить Яндексу, что все в порядке, заказ добавлен. И вот тут возникла проблема, как правильно вернуть ответ из PHP обработчика?


Добрый день!
Во всех вариантах Вы ничего не отправляете.
Посмотрите в документации URL, на который Ваш скрипт должен отправлять
подтверждение на Яндекс. Вставте в обработчик cURL.
Удачи!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB