0
На рассмотрении

Вопрос по API

Василий 7 лет назад обновлен Сергей Анатольевич 7 лет назад 23

Добрый день,

Скажите, можно ли получать информацию о заказе на момент его поступления с сайта, до его оформления и сохранения?

И еще один вопрос, можно ли получать информацию только о тех заказах, которые покупатель оформил первый раз?


Спасибо!

На рассмотрении

Скажите, можно ли получать информацию о заказе на момент его поступления с сайта, до его оформления и сохранения?

не совсем понятно, что конкретно имеется ввиду


И еще один вопрос, можно ли получать информацию только о тех заказах, которые покупатель оформил первый раз?

такой возможности к сожалению нет

Скажите, можно ли получать информацию о заказе на момент его поступления с сайта, до его оформления и сохранения?

не совсем понятно, что конкретно имеется ввиду


когда заказ оформлен и сохранен, его данные можно получить по API. в описании не нашли как получить информацию о заказе, если он только поступил в систему с сайта. можно ли получить данные такого заказа до момента его оформления и его сохранения?


Надеюсь на скорый ответ.

Спасибо заранее.

Попробуйте поискать тут http://mobidel.ru/help/api-callback. При изменении статуса заказа (в том числе при создании нового) должен вызываться ваш скрипт.

К сожалению, в описании не нашли как получить информацию о поступившем заказе до его оформления/сохранения( подскажите, пожалуйста

спасибо, там и смотрели вроде. еще раз просмотрим.

Если я правильно понял:

1. при изменении заказа, отправляется callback с json-масссивом из 5 ключей?

2. вытекающий из первого: по какому именно событию он отправляется: по изменению любого поля или только order.status?

3. Чтобы получить детали заказа, нужно каждый раз отправлять POST  на online.mobidel.ru//getOrder.php?idOrder=....&user=...&password=....&cid=... так?

1. Все верно. При вызове передается 5 ключей.

2. Только при изменении статуса заказа.

3. Правильно.

Спасибо.

А на получение информации по клиенту, тоже отдельный запрос нужно делать или эта информация не доступна по API?

по клиенту в заказе информация должна выдаваться в функции getOrder.php

Добрый день!


Пытаюсь использовать инструкцию по ссылке http://mobidel.ru/help/api-callback

Столкнулся с тем, что идентификатор созданного заказа (orderID) в файле с логами request.post отличается от идентификатора заказа, который отображается в личном кабинете в мобиделе (хотя речь идёт об 1 и том же заказе).


Привожу пример:


Содержимое файла request.post:


{ "action" : "changeOrder", "orderID" : "372970636441280962", "reqID" : "197", "sessionID" : "test", "SignatureValue" : "403872f81cc7b39afc50e729eac5ad9a" }


Информация о заказе в мобиделе:


Идентификатор заказа: 372971004607839122

Номер заказа: 31605

Ид. компании (cid): 2056


Скрипт, который выполняется после создания заказа выполняет только запись в файл с логами. Привожу его содержимое:


<?
    // получаем данные запроса    
    $postdata = file_get_contents("php://input");

    // записываем их в лог
    $text = file_get_contents("request.post");
    $handle = fopen("request.post", "w");  
    fwrite($handle,$postdata);
    fclose($handle);
?>   

Не могли бы подсказать, из-за чего могут отличаться идентификаторы?


День добрый

Вероятно, пришло 2 события по двум разным заказам. По заказу ...80962 пришло событие раньше, чем по заказу ...839122. Т.к. у вас файл открывается на запись, а не на добавление, то вы и не видите первое событие. Поставьте ключик "a" при открытии файла request.post. Посмотрите, что будет в файле.

По результату отпишите.

Поменял ключ на a, проблема не решилась.. Продолжают приходить в логи непонятные идентификаторы.

Пример:


Создал заказ в личном кабинете в мобиделе.


Заказ в мобилеле:

Номер: 31658

Идентификатор: 377473857108172213


Информация в логах:

{ "action" : "changeOrder", "orderID" : "377473844241598692", "reqID" : "42", "sessionID" : "test", "SignatureValue" : "b35a9b025bebe006ff9f8d8affd4348d" }


Файл с логами лежит здесь http://mantyest.ru/request.post


В нём вообще нет информации о заказе 377473857108172213, хотя пытался менять статус заказа 31658 несколько раз.

Сейчас увидел, что в логи попал нужный заказ, но произошло это не сразу после создания/изменения статуса заказа, а через некоторое время (несколько часов).

Проверили, событие о изменении статуса заказа приходит моментально

покажите текст скрипта, который обрабатывает это событие

Выкладываю код:


<?
    // получаем данные запроса    
    $postdata = file_get_contents("php://input");

    // записываем их в лог
    $text = file_get_contents("request.post");
    $handle = fopen("request.post", "a");  
    fwrite($handle, date("m.d.Y H:i:s").'-'.$postdata);
    fclose($handle);
?>   

Добавил к логам ещё время обращения к скрипту. Протестировал опять на заказе 377473857108172213 (менял адрес доставки пару раз). В результате в логи без задержки попала информация, но опять id заказа не тот (390984743911004100).. Выкладываю содержимое логов на тот момент:


10.13.2017 16:42:39-{ "action" : "changeOrder", "orderID" :
"390984743911004100", "reqID" : "203", "sessionID" : "test",
"SignatureValue" : "c480ad17324ec2f1992066d53ca3e9e3" }10.13.2017
16:42:56-{ "action" : "changeOrder", "orderID" : "390984743911004100",
"reqID" : "204", "sessionID" : "test", "SignatureValue" :
"01ce84c1e312340d3dd25aae1da935c7" }10.13.2017 16:43:10-{ "action" :
"changeOrder", "orderID" : "390984743911004100", "reqID" : "205",
"sessionID" : "test", "SignatureValue" :
"e5c14ef49346eabca3af4e190dafb542" }



Событие формируется только при изменении статуса заказа. Т.е. изменение фамилии, имени, отчества, даты рождения, даты смерти и прочее на формирование события не влияют.

Пробовал и статусы менять, всё равно в логи приходит не то, что нужно.. Мы можем разобрать на примере какого-нибудь конкретного заказа?


Например создал сегодня заказ №32194 (id: 402243996211232698). Далее делал изменение статуса на ГОТОВИТСЯ, ГОТОВ К ДОСТАВКЕ и ДОСТАВЛЯЕТСЯ.


Вот что попало в файл request.post (как видно, информации с нужным id заказа нет):


10.18.2017 15:36:04-{ "action" : "changeOrder", "orderID" : "402243801469748639", "reqID" : "94", "sessionID" : "test", "SignatureValue" : "526b1a30a7804377263c708b7be4f842" }10.18.2017 15:36:27-{ "action" : "changeOrder", "orderID" : "402243768798306097", "reqID" : "95", "sessionID" : "test", "SignatureValue" : "2adc0a3740c88fb32861b44739bfae9d" }10.18.2017 15:38:15-{ "action" : "changeOrder", "orderID" : "402243824362721283", "reqID" : "98", "sessionID" : "test", "SignatureValue" : "d462a94dfe7fedc8aaf379d91d2346b5" }10.18.2017 15:38:52-{ "action" : "changeOrder", "orderID" : "402243824362721283", "reqID" : "99", "sessionID" : "test", "SignatureValue" : "eae61d065475e499bd2938ee4743ef86" }10.18.2017 15:39:37-{ "action" : "changeOrder", "orderID" : "399991993408083360", "reqID" : "100", "sessionID" : "test", "SignatureValue" : "058d12c20af1fa2eb8436d006bf50d80" }10.18.2017 15:40:09-{ "action" : "changeOrder", "orderID" : "402243801469748639", "reqID" : "101", "sessionID" : "test", "SignatureValue" : "2c19b2dd5b199f3db0a8ee73ca24ee8f" }


Также прикладываю скриншот, на котором видно в какое время были присвоены статусы заказу.



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



Добрый день

Поставили таймаут на выполнение запроса к удаленной системе (не более 5 секунд на выполнение запроса). Завтра сервер обновится. Проверьте как будет себя завтра вести. Это должно помочь, если, конечно, с вашей стороны все корректно настроено.

Добрый день.

Лучше стало?

Добрый день!

Да, проверил, сейчас правильно работает. Спасибо!

День добрый.

Похоже какой-то ... нехороший человек прописал у себя несуществующий или того хуже неработающий скрипт. Вот система и "задумывалась" над ним. Для выполнения чужих скриптов выделен всего один процесс (ну не предполагается, что тут будет сумасшедшая нагрузка), вот он и тормозил на недоступных скриптах. Сейчас стоит 5 сек на выполнение скрипта пользователя. Думаем этого вполне достаточно.

Сервис поддержки клиентов работает на платформе UserEcho