|
1c и Qiwi-scoring | ☑ | ||
---|---|---|---|---|
0
vvf
01.03.14
✎
18:04
|
Стоит следующая задача
Получать в 1с данные из системы Qiwi-scoring 1. Привожу техническую документацию, что дали из qiwi //****************************************************** Описание взаимодействия с информационной системой QIWI Scoring: 1. Общие сведения Предоставление услуг QIWI Scoring осуществляется посредством работы с веб-сервисом, работающим по протоколу SOAP или HTTPS. 2. Описание веб-сервиса 2.1 Описание процесса информационного взаимодействия Информационное взаимодействие производится по инициативе системы-потребителя информации. Взаимодействие осуществляется в синхронном режиме. Схематично процесс взаимодейвтия выглядит следующим образом: Процесс взаимодействия состоит сз следующих щагов: 1. Система-потребитель создает proxy-класс веб-сервиса на основании WSDL. 2. Система-потребитель вызывает метод веб-сервиса ProcessRequest, передает в этот метод XML-строку надлежащего формата. 3. Веб-сервис возвращает XML с данными по платежам запрошенного пользователя QIWI. 2.2 Формат запроса Система принимает на вход строку строку XML-документа Описание элементов входящего XML: extId - Уникальный номер запроса (от 2 до 20 латинских букв или цифры); number - Номер телефона клиента (10 цифр); startdate – Дата в формате YYYY-MM-DD, начиная с которой должен быть сформирован отчет; type - Тип возвращаемых периодов. Принимаются следующие значения: d – сутки m – месяц q – квартал y – год периоды отсчитываются от даты указанной в элементе <startdate> в большу сторону, count - Максимальное количество таких периодов в ответе. Пример запроса: <request> <extId>0123456789qwertyuiop</extId> <number>9012223344</number> <params startdate="2012-01-01" type="d" count="30"/> </request> На этот запрос система-поставщик вернет данные по номеру 9012223344 за период с 2012-01-01 по 2012-02-01 с разбиением по дням. 2.3 Форматы ответа. В рамках проекта QIWI Scoring предусмотрено несколько вариантов предоставляемого ответа. 2.3.1 Стандартный формат. Предоставляет данные по кол-ву и сумме платежей пользователя QIWI в разрезе периодов. Пример успешного ответа: <Response> <Result>ОК</Result> <ExtId>0123456789qwertyuiop </ExtId> <Description>Успешно</Description> <Data> <Startdate>2012-01-01</Startdate> <Type>d</Type> <Period number="0" <firstdate>2012-01-01</firstdate> <Phone count="3" sum="1500.00"/> </Period> <Period number="1" <firstdate>2012-01-02</firstdate> <Phone count="10" sum="12501.00"/> </Period> </Data> </Response> Описание элементов возвращаемого ответа: Result - Результат обработки Возможные значения: 1) OK 2) Error ExtId - Уникальный номер запроса. (Значение берется из значения элемента extId входящего запроса) Description - Описание результата обработки Возможные варианты значения: 1) Успешно – в случае, если в элементе <Result> стоист значение OK 2) Описание ошибки – в случае, если в элементе <Result> стоист значение Error Data - Элемент, содержащий детальное описание по платежам пользователя Startdate - Дата начала отчетного периода. Значение берется из значения элемента startdate входящего запроса. Type - Тип периода. Значение берется из значения элемента type входящего запроса. Period – Элемент, описывающий информацию по платежам пользователя в разрезе одного периода. Дочерние аттрибуты: number – аттрибут, обозначает номер периода в рамках запрашиваемых данных firstdate – Элемент, обозначает дату первого платежа в периоде Phone – детализация всех платежей на указанный номер телефона. Дочерние аттрибуты: count – кол-во платежей в периоде sum – сумма платежей в периоде 2.3.2 Формат с детализаций по регионам. Предоставляет данные по кол-ву и сумме платежей пользователя QIWI в разрезе периодов и регионов (субъектов федерации). Пример успешного ответа: <response> <result>ОК</result> < extId >0123456789qwertyuiop </ extId > <Description>Успешно</Description> <Data> <startdate>2012-01-01</startdate> <type>d</type> <Period number="0" region_id="Московская обл"> <firstdate>2013-03-18</firstdate> <Phone count="1" sum="50.00"/> </Period> <Period number="0" region_id="Саха"> <firstdate>2013-03-18</firstdate> <Phone count="2" sum="200.00"/> </Period> </Data> <Data> <type>stat</type> <summax>1000</summax> <summax6mouth>1000</summax6mouth> <first>2013-03-18</first> <last>2013-04-15</last> <maxPeriod>3</maxPeriod> </Data> </Response> Описание возвращаемого ответа: Базовая структура XML соответствует документу из пункта 2.3.1, к нему добавляется второй элемент Data с аггрегированными данными. К эелементу <Period> добавляется аттрибут region_id принимащий значение субъекта РФ, в котором производились платежи. В случае, если не удается определить регион для данного платежа, в элементе указывается значение «Не определено» Описание второго элемента Data: type - статичное значение, всегда равно stat summax - максимальная сумма платежа за весь запрашиваемый период summax6mouth - максимальная сумма платежа за последние 6 месяцев запрашиваемого периода first - дата первого платежа в запрашиваемом периоде last - дата последнего платежа в запрашиваемом периоде maxPeriod - максимальный период в днях между платежами 2.3.3 Формат аггрегированных данных за 1 год. Пример успешного ответа: <Response> <Result>OK</Result> <ExtId>123</ExtId> <Description>Успешно</Description> <Data> <Startdate>2013-07-01</Startdate> <type>d</type> <Period number="17"> <firstdate>2013-07-18</firstdate> <Bank count="0" sum="0" /> <Utility count="0" sum="0" /> <Phone count="1" sum="150" /> </Period> <Period number="20"> <firstdate>2013-07-21</firstdate> <Bank count="0" sum="0" /> <Utility count="0" sum="0" /> <Phone count="1" sum="200" /> </Period> </Data> <AggregatedData> <PhoneNumber>9000000000</PhoneNumber> <ActualDate>2013-08-31</ActualDate> <TotalPaymentsSum>4117</TotalPaymentsSum> <Payments6MonthSum>2197</Payments6MonthSum> <Payments3MonthSum>800</Payments3MonthSum> <Payments1MonthSum>150</Payments1MonthSum> <TotalPaymentsCount>32</TotalPaymentsCount> <Payments6MonthCount>14</Payments6MonthCount> <Payments3MonthCount>5</Payments3MonthCount> <Payments1MonthCount>1</Payments1MonthCount> <TotalMaxPayment>500</TotalMaxPayment> <MaxPayment6Month>500</MaxPayment6Month> <MaxPayment3Month>200</MaxPayment3Month> <MaxPayment1Month>150</MaxPayment1Month> <FirstPayDate>2012-08-05</FirstPayDate> <LastPayDate>2013-07-31</LastPayDate> <ProviderWithMaximumPaymentsCount>Билайн</ProviderWithMaximumPaymentsCount> <ProviderWithMaximumPaymentsSum>Билайн</ProviderWithMaximumPaymentsSum> <PaymentsForMaxPaymentsCountProvider>32</PaymentsForMaxPaymentsCountProvider> <MaxDifferenceInDays>63</MaxDifferenceInDays> <FirstPaymentRegion>Московская обл</FirstPaymentRegion> <MaxPaymentRegion>Москва г</MaxPaymentRegion> <life_period>0</ period > <MAXGAPDAYS>31</MAXGAPDAYS> <region_maxpays>Москва г</region_maxpays> <region_maxpayscount>27</region_maxpayscount> <region_percent>79</region_percent> <AverageSum>94</AverageSum> <MaxPayHour>0</MaxPayHour> <MaxPayHourValue>0</MaxPayHourValue> <RosSvyaz_Region>Москва и Московская область</RosSvyaz_Region> <RosSvyaz_Operator>МегаФон</RosSvyaz_Operator> </AggregatedData> </Response> Описание возвращаемого ответа: Базовая структура XML соответствует документу из пункта 2.3.1, к нему добавляется второй элемент AggregatedData с аггрегированными данными по платежам пользователя QIWI за последний год от текущей даты. К элементу Period добавляется два дочерних элемента Bank и Utility. В результате: Элемент Bank – содержит кол-во и сумму платежей в пользу банковских услуг Элемент Phone – содержит кол-во и сумму платежей в пользу сотовой связи Элемент Utility – содержит кол-во и сумму платежей в пользу всех остльаных провайдеров Описание элемента AggregatedData: PhoneNumber --Номер телефона ActualDate --Дата актуальности выгрузки TotalPaymentsSum --Сумма платежей через терминалы за всё время Payments6MonthSum --Сумма платежей через терминалы за последние 6 месяцев Payments3MonthSum --Сумма платежей через терминалы за последние 3 месяца Payments1MonthSum --Сумма платежей через терминалы за последний 1 месяц TotalPaymentsCount --Количество платежей через терминалы за всё время Payments6MonthCount --Количество платежей через терминалы за последние 6 месяцев Payments3MonthCount --Количество платежей через терминалы за последние 3 месяца Payments1MonthCount --Количество платежей через терминалы за последний 1 месяц TotalMaxPayment --Сумма максимального платежа за всё время MaxPayment6Month --Сумма максимального платежа за последние 6 месяцев MaxPayment3Month --Сумма максимального платежа за последние 3 месяца MaxPayment1Month --Сумма максимального платежа за последний месяц FirstPayDate --Дата первого платежа LastPayDate --Дата последнего платежа ProviderWithMaximumPaymentsCount --Название провайдера с наиболее частыми платежами ProviderWithMaximumPaymentsSum --Название провайдера с максимальным платежом PaymentsForMaxPaymentsCountProvider --Количество платежей наиболее частому провайдеру MaxDifferenceInDays --Максимальный период между платежами в днях FirstPaymentRegion --Регион первого платежа LastPaymentRegion --Регион последнего платежа MaxPaymentRegion --Регион максимального платежа life_period --Время жизни номера: 0 – до месяца, 1 - от месяца до года, 2 – больше года и меньше 3-х лет, 3 – больше 3-х лет и до 5 лет, 4 – более 5 лет MAXGAPDAYS --Максимальный период между платежами в днях за последние 6 месяцев region_maxpays --Доминирующий регион по кол-ву платежей region_maxpayscount –Кол-во платежей, произведенных в доминирующем регионе region_percent –Процент пополнения в доминирующем регионе (по кол-ву платежей) AverageSum –Средняя сумма платежа за весь период MaxPayHour –Основное время пополнения (час в сутках) MaxPayHourValue –Максимальное кол-во платежей, произведенное в основное время пополнения. RosSvyaz_Region –Регион телефона по ресурсу нумерации РосСвязи. RosSvyaz_Operator –Оператора телефона по ресурсу нумерации РосСвязи. 2.3.4 Ответ в случае отсутствия платежей по указаноому номеру. Если по указанному номеру телефона не было платежей, запрос все равно считается успешным, но элементы Period могут отсутствовать. <Response> <Result>ОК</Result> <ExtId>0123456789qwertyuiop </ExtId> <Description>Успешно</Description> <Data> <Startdate>2010-01-03</Startdate> <type>m</type> </Data> </Response> 2.3.5 Ответ в случае ошибки обработки запроса Пример ответа в случае некорректного формата запроса <Response> <Result>Error</Result> <Description>Описание ошибки</Description> </Response> 3. Ограничения Система QIWI Scoring предоставляет данные максимум за 1 год от первого дня текущего месяца. Тестовая версия веб-сервиса возвращает данные только по 1 номеру телефона (9000000000) не зависимо от запрашиваемого номера Для доступа к рабочему веб-сервису необходимо прислать свой IP адрес и получить клиентский сертификат. 4. Доступ к веб-сервису 4.1 SOAP Для тестирования следует использовать веб-серис, расположеный по адресу http://ratservice.gc-master.ru/Service.svc Рабочий веб-сервис расположен по адресу https://qiwiscoring.gc-master.ru/service.svc - ограничения по доступу описаны в пункте 3. 4.2 HTTP Для тестирования следует отправлять POST запросы на адрес http://ratservice.gc-master.ru/scorephone.aspx Для работы с полноценной системой QIWI Scoring следует отправлять POST запросы на адрес https://qiwiscoring.gc-master.ru /scorephone.aspx - ограничения по доступу описаны в пункте 3. //****************************************************** 2. Qiwi прислала сертификат, который был успешно установлен на сервер. 3. Написал обработку со следующим кодом ИмяСертификата = "LOCAL_MACHINE\My\ScoringCertificate"; Запрос = "<request>" + "<extId>79279066369qwerty</extId>" + "<number>79279066369</number>" + "<params startdate=""2013-09-01"" type=""m"" count=""6""/>" + "</request>"; // Запрос //Попытка пОбъект= Новый COMObject("WinHttp.WinHttpRequest.5.1"); пОбъект.Option(9,80); // Попробовать закомментирвать следующую строку пОбъект.Option(4,13056); Тм = пОбъект.SetClientCertificate(ИмяСертификата); пОбъект.Open("POST","https://qiwiscoring.gc-master.ru/scorephone.aspx",0); пОбъект.SetRequestHeader("Accept-Language", "ru"); пОбъект.SetRequestHeader("Accept-Charset","Windows-1251"); пОбъект.setRequestHeader("Content-Language", "ru"); пОбъект.setRequestHeader("Content-Charset", "Windows-1251"); пОбъект.setRequestHeader("Content-Type","text/xml; charset=Windows-1251"); пОбъект.Send(Запрос); Сообщить(пОбъект.ResponseText()); 4. При запуске обработки выходит следующая ошибка {Форма.Форма.Форма(30)}: Ошибка при вызове метода контекста (Send) пОбъект.Send(Запрос); по причине: Произошла исключительная ситуация (WinHttp.WinHttpRequest): The certificate authority is invalid or incorrect Как решить проблему непонятно, техподдержка qiwi не в силах помочь |
|||
1
Wobland
01.03.14
✎
18:09
|
прям беда. что планируешь делать?
|
|||
2
xReason
01.03.14
✎
18:14
|
c QIwi лучше не связываться сдохнуть может внезапно
|
|||
3
vvf
01.03.14
✎
18:23
|
Есть ответы по-существу решения проблемы?
|
|||
4
shuhard
01.03.14
✎
18:26
|
(3) используй иную среду, например php
|
|||
5
Маленький Мук
01.03.14
✎
18:35
|
Проблема с сертификатом скорее всего. А так попробуй из php или из 1с постучись к ним на тест без сартификата в номер 9000000000
|
|||
6
mistеr
02.03.14
✎
00:01
|
(0) Километровая портянка копипасты не по делу отбивает желание отвечать. Учти на будущее.
Qiwi не при чем, погугли как заставить WinHttp работать с клиентскими сертификатами. Это большая редкость в вебе, так что возможны и баги. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |