Перейти к содержимому


Serg-vi

Регистрация: 20 сен 2016
Не в сети Активность: окт 26 2017 21:23
-----

Мои сообщения

В теме: 30$ за помощь в отправке XML запроса

23 ноября 2016 - 00:31

 

Надо просто ЗАМЕТИТЬ - а вот это и есть самое непростое.

Надо отладчик иметь :))

 

Отладчик в этом деле не помощник : подпись это шифр и х.з. что в ней зашифровано: правильные данные или случайно попавшая туда (как в данном случае) строка из 5 букв


В теме: 30$ за помощь в отправке XML запроса

22 ноября 2016 - 23:19

Вообщем, препятствия было 2: те кавычки и неработа Indy-компонента (который отправляет-принимает запросы)

Когда отсылал запрос напрямую (без переменной Sklei), упирался в Indy. А когда правильно настраивал Indy, упирался в 1й косяк.  Это ж надо, малая ошибка, даже просто описка не давала мне продвигаться столько времени! А я искал причину в более сложных вещах...  Но обнаружение именно этой мелочи послужило выходом из порочного круга. А ведь помочь-то мне мог фактически любой - тут даже программистом быть не надо. Надо просто ЗАМЕТИТЬ - а вот это и есть самое непростое.

Поэтому приз достаётся самому замечательному (всё-то он замечает :) ) участнику форума под ником Jaguar.

Сообщите свой Z-кошелёк, и, если есть Viber, Skype или Telegram.


В теме: 30$ за помощь в отправке XML запроса

17 ноября 2016 - 21:31

Всё в силе, был очень занят, не мог добраться, чтобы проверить.

Кавычки исправил, но выдало ещё одну ошибку. Предполагаю, это из-за Indy. Копаться с Indy не буду, я и так слишком долго вокруг него танцы с бубном устраивал, просто попробую через Synapse и отпишусь.

P.S. Пользователь Jaguar, похоже, претендент на победу


В теме: 30$ за помощь в отправке XML запроса

14 ноября 2016 - 02:50

Отличное замечание!
Неуж то я из-за этой мелочи 3 месяца долбался)))
Менял, компоненты доступа, перепробовал многие кодировки, обращался к различным Xml - интерфейсам...
А эту строку просто блоком копировал всё время, и ни разу не заметил, что там кавычки)
Сегодня днём буду дома - проверю, отпишусь.

В теме: 30$ за помощь в отправке XML запроса

12 ноября 2016 - 21:38

В том то и дело что все на PHP только и пишут, и там больше ответов, чем вопросов и всё гораздо проще.

1. Но на php придётся держать свой ключ не дома, а на каком-нибудь сервере, владелец которого  может иметь к нему доступ.

2. php - это открытый код, получив доступ к которому, можно меняя его, делать что хочешь

3. Да, я не гуру в защите данных, но думаю, что в случае с домашним компьютером добраться до ключа гораздо сложнее, а поменять что-то в exe-файле почти нереально.

Итак код:

 
 
procedure TForm1.Button5Click(Sender: TObject);
Var
  Pst: TStringList;              // PostData , т.е. строки для Post запроса.
  wmid, Podpis, Sklei, OperId,s1, tip: String;
  er: smallint;
Begin
 wmid   := '123456789012';    
 OperId := '23205594';
 tip:='3';                 // вернуть все заявки
 
 Memo1.Lines.Add('Подписываю...');
 Sklei :=wmid+tip;            //+OperId;  // для 3го XML интерфейса.
 Podpis := Intf.SignString('Sklei');
 er:= Intf.ErrorCode;
 if er=0 then begin  // если подписали успешно, то отправляем XML запрос
    Memo1.Lines.Add('Отправляю запрос');
    Pst:=TStringList.Create;
    Pst.Add('<wm.exchanger.request>');          //  откывающий тэг
    Pst.Add('<wmid>'+wmid+'</wmid>');           //  wmid
    Pst.Add('<signstr>'+Podpis+'</signstr>');   //  Подпись
    Pst.Add('<type>3</type>');                        //  Тип запроса 3-вернуть все заявки
   // Pst.Add('<queryid>+OperId+</queryid>');   //  № заявки (не обязательно)
    Pst.Add('</wm.exchanger.request>');         //  закрывающий тэг
    Memo1.Lines.Add(UTF8toNorm(s1));
   Pst.Free;
 end; 
End; 
 
После чего строка s1 содержит: 
<?xml version="1.0"?><wm.exchanger.response>
<retval>-4</retval>
<retdesc>Ошибка загрузки XML c параметрами запроса - Ошибка при указании подписи, тег signstr.Идентификатор клиента не указан</retdesc></wm.exchanger.response>
 
Это была реализация через компонент Indy
Если реализовывать через Synapse то пишет:
Подпись не прошла проверку. Вы уверены что производили цифровую подпись ключами ВМ-идентификатора 123456789012 и подписывали строку 1234567890123 ?
 
P.S. 123456789012 - wmid 
1234567890123 - wmid+'3' т.е. склейка из wmid и 3 - вернуть все заявки