:: Visual Foxpro, Foxpro for DOS
Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
Здравствуйте! Хотел спросить кто нибуть реализовывал Автоматическое заполнение реквизитов контрагентов по ИНН на Fox? Хотелось бы примерчик как это сделать. Написано что нужно использовать REST API, а как? можно примерчик использования REST API. Ни разу не сталкивался прошу прощения. Тыркаюсь как слепой котенок.



Исправлено 2 раз(а). Последнее : arshin, 25.11.17 14:45
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
ИНН физлица, или организации? Какие именно реквизиты нужны? Где написано что нужно использовать REST?
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
задача минимум автоматическое заполнение карточки контрагента юр.лица по инн (как в 1с) данные брать нужно я так понимаю с сайта фнс или если есть какие другие сайты подскажите. Нужны реквизиты:
Сокращенное наименование
Юридический адрес
Фактический адрес
Контактные номера
Контактное лицо
№ Расчетного счета
Наименование банка
Место нахождения банка
Кор.счет:
БИК банка
ОГРН
ИНН
КПП
Код по ОКПО
email
Генеральный директор
Программа максимум вести полноценный обмен данными с сайтом www.amocrm.ru при помощи REST API, Описание и примеры как это делать даны на этом сайте. Все примеры на PHP. Как подобное реализовать через фокс? если это вообще возможно.



Исправлено 3 раз(а). Последнее : arshin, 26.11.17 13:49
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Не понимаю каким образом вопрос "Автоматическое заполнение реквизитов контрагентов по ИНН" связан с вопросом "вести полноценный обмен данными с сайтом www.amocrm.ru при помощи REST API"...
Для запроса на сайтах всяких egrul не нужен REST API - там гораздо более простой по виду запрос используется. И примеры есть на форуме.

Для работы с сайтом amocrm, хотя там и не совсем "канонический" REST API применяется (не увидел использования никаких методов кроме GET и POST, что позиционирует данный АПИ всего лишь как REST-подобный), лучше будет написать код НЕ на фоксе. Вопросы безопасности соединения (протоколы для https последнего поколения) и поддержания сессии при помощи cookies... Не уверен что это можно реализовать средствами MSXML2.XMLHTTP - компоненты наиболее удобной для работы с веб-ресурсами из фокса.
Но если трудности не смущают, то информации по тому как работать с этой компонентой вполне хватает в поиске...
JSON тоже не большая проблема - даже если не использовать готовый парсер (есть такой nfJSON - сейчас исходник размещён на гитхабе), ничего невообразимо сложного в формировании или разборе текстовой строки с данными в формате JSON нет. По крайней мере это существенно более простой формат по сравнению с тем же XML.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
Спасибо! Показали куда дальше двигаться.
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
oHttp = CREATEOBJECT("MSXML2.XMLHTTP.6.0")
oHttp.open("GET","https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/address")
oHttp.send()
? m.oHttp.responseText

Подскажите пожалуйста как правильно на Fox записать то что ниже?
URL:
"https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/address"

Пример запроса:
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Token c543b4fa9ce0c5a25d3e3d94054bf562bbfbbd2f" \
-d '{ "query": "77000000000268400" }' \
"https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/address"



Исправлено 3 раз(а). Последнее : arshin, 28.11.17 17:53
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
?



Исправлено 1 раз(а). Последнее : arshin, 28.11.17 17:39
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
...Началось ))) Просмотри в поиске "XMLHTTP", "Request", "egrul"
Общая схема - подсмотреть как это делает браузер (если есть человеческий интерфейс), или согласно описанию к ресурсу, и сделать также:
- создать обьект MSXML2.XMLHTTP
- наполнить заголовки
- послать
- получить ответ
- расшифровать его
- или ответ уже достаточен, или повторить с шага 1 уже с информацией, полученной на этом шаге

ответы ресурса могут быть расшифрованы своеобразно, например, нужно изобразить картинку-капчу, показать ее юзеру, заставить ввести ее код, и этот код уже послать обратно в ресурс. Ресурс может снабдить капчу токеном (длинно строкой) - ее потом надо предьявлять ресурсу в очередной посылке. Могут потребовать запомнить и воспроизвести кук, или ИД сессии (без них все работает обычно, смотря какой ресурс). Может потребоваться передать "время" (что-то в секундах, или миллисекундах от 1970-го или 80го(?) года, забыл как оно называется), чтобы ресурс убедился в чем-то, там же на том конце, практически сам стрелок-радист сидит, точнее код его работает)



Исправлено 6 раз(а). Последнее : of63, 28.11.17 18:23
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
Начитался сделал вот так
oHTTP = CREATEOBJECT("MSXML2.XMLHTTP")
oHTTP.open("POST", 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/address')
oHTTP.setRequestHeader("Content-Type", "application/json")
oHTTP.setRequestHeader("Accept", "application/json")
oHTTP.setRequestHeader("Authorization", "Token c543b4fa9ce0c5a25d3e3d94054bf562bbfbbd2f")
oHTTP.setRequestHeader("query", "784806113663")
oHTTP.send()
WAIT '--' TIMEOUT 2
? MESSAGEBOX(oHTTP.responseText)

Выдает пустое значение. явно я неправильно указал oHTTP.setRequestHeader("query", "784806113663") Как правильно подскажите.
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> я неправильно указал oHTTP.setRequestHeader("query", "784806113663") Как правильно подскажите.
вопрос типа "вот мой логин/пароль в мою почту, но не могу войти, в чем причина"
Какие предпосылки попасть на это сайт программно? (инструкция есть, или просто захотелось)
suggestions.dadata.ru - что от него конкретно хочется поиметь?



Исправлено 3 раз(а). Последнее : of63, 29.11.17 00:25
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
Вот инструкция dadata.ru этот запрос получения по ИНН данных фирмы, Предоставляется типа бесплатно. Но как по этой инструкции сделать запрос из под фокса не пойму. Нужен хотя бы похожий пример.



Исправлено 3 раз(а). Последнее : arshin, 29.11.17 07:55
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
of63

Сообщений: 25240
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
-d '{ "query": "7719402047" }' \
может это уже не заголовок, а тело запроса, передай его в Send:
oHTTP.send(0h + '{ "query": "7719402047" }')
Ratings: 0 negative/1 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
APIKey = 'Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' && тут вместо xxxxx свой токен
Local http as "WinHttp.WinHttpRequest"
http = Createobject("WinHttp.WinHttpRequest.5.1")
Timeout = 2000 && milliseconds
http.SetTimeouts(Timeout, Timeout, Timeout, Timeout)
Query = "название конторы" && или ИНН
Request = '{ "query": " ' + Query + ' " } '
http.Open("POST", "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party")
http.SetRequestHeader("Content-Type", "application/json")
http.SetRequestHeader("Authorization", APIKey )
http.Send(Request)
*ssa* Resp = http.ResponseText
Return http.ResponseText

ps: при правильно заданном вопросе получил бы ответ еще 25.11.2017


------------------
Лень - это неосознанная мудрость.




Исправлено 2 раз(а). Последнее : ssa, 29.11.17 09:26
Ratings: 0 negative/1 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
Большое спасибо работает!



Исправлено 1 раз(а). Последнее : arshin, 29.11.17 10:56
Ratings: 0 negative/0 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
JSON сам будешь разбирать или воспользуешься готовым? Ссылка на nfjson тут уже мелькала.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/2 positive
Re: Автоматическое заполнение реквизитов контрагентов по ИНН
arshin
Автор

Сообщений: 44
Дата регистрации: 15.02.2011
Только хотел спросить!
Ratings: 0 negative/0 positive


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

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика