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


Фотография

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

XML

  • Пожалуйста, авторизуйтесь для ответа.
24 ответов в данной теме

#1 Пользователь Serg-vi (WMID 379091742499 )

  • Группа: Пользователи
  • сообщений 9
  • Регистрация: 20-сентября 16
  • Webmoney BL

Отправлено 08 ноября 2016 - 21:57

Задача:
Средствами Delphi отправить верный XML запрос на сервер WM.

Код писать Не обязательно, просто проконсультировать меня, что я делаю не так.

На данном этапе на отправляемые мной XML запросы сервер прямо или косвенно жалуется на подпись (если я правильно понял).

Функция генерации подписи формирует её (выдаёт 132-символьную строку).

При этом ErrCode=0 т.е. говорит, что всё прошло Ok.

Но сервер WebMoney что-то не устраивает

 

Например XML интерфейс №3

 

<wm.exchanger.request>

<wmid> мой wmid </wmid>
<signstr> моя подпись </signstr>
<type> 3 </type>

</wm.exchanger.request>

 

Возвращает ответ: Подпись не прошла проверку...

 

Вообщем цель: исправить мою ошибку, чтобы все интерфейсы заработали.
 

Оплата.

10$ за решение данного вопроса (более 1 дня)

20$ если решите в течение 1 дня.

30$ если решите в течение 1 часа. 

 

Skype:  Serg-vi  (редко)
Viber : +375 29 7112223 (постоянно)


    • 0
  • Наверх

#2 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 09 ноября 2016 - 00:41

Функция генерации подписи формирует её (выдаёт 132-символьную строку).

Функцию сами писали?


Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 0
  • Наверх

#3 Пользователь Serg-vi (WMID 379091742499 )

  • Группа: Пользователи
  • сообщений 9
  • Регистрация: 20-сентября 16
  • Webmoney BL

Отправлено 09 ноября 2016 - 11:32

Функция генерации подписи формирует её (выдаёт 132-символьную строку).

Функцию сами писали?

Нет, знал бы как писать, сам написал бы )  Использовал WMSignerX.dll  Там есть функция подписи строки. 


Сообщение отредактировал Serg-vi: 09 ноября 2016 - 11:32

    • 0
  • Наверх

#4 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 10 ноября 2016 - 01:30

Может кодировка не нравится? Должно всё быть в CP-1251.


Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 0
  • Наверх

#5 Пользователь Serg-vi (WMID 379091742499 )

  • Группа: Пользователи
  • сообщений 9
  • Регистрация: 20-сентября 16
  • Webmoney BL

Отправлено 10 ноября 2016 - 02:33

Может кодировка не нравится? Должно всё быть в CP-1251.

Пробовал и UTF-8 и windows-1251, не идёт.
В какой кодировке принимает запросы и даёт ответы XML сервер WebMoney :
CharSet = ?
Encoding = ?


    • 0
  • Наверх

#6 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 10 ноября 2016 - 10:53

Всё в windows-1251.

Хотя нет, CharSet может и utf-8 быть.


Сообщение отредактировал ^-^: 10 ноября 2016 - 10:54

Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 0
  • Наверх

#7 Участник Jaguar (WMID 385960635969 )

  • Группа: Пользователи
  • сообщений 11
  • Регистрация: 18-июня 12
  • Webmoney BL

Отправлено 10 ноября 2016 - 23:18

Задача:
Средствами Delphi отправить верный XML запрос на сервер WM.

Код писать Не обязательно, просто проконсультировать меня, что я делаю не так.

На данном этапе на отправляемые мной XML запросы сервер прямо или косвенно жалуется на подпись (если я правильно понял).

Функция генерации подписи формирует её (выдаёт 132-символьную строку).

При этом ErrCode=0 т.е. говорит, что всё прошло Ok.

Но сервер WebMoney что-то не устраивает

 

Например XML интерфейс №3

 

<wm.exchanger.request>

<wmid> мой wmid </wmid>
<signstr> моя подпись </signstr>
<type> 3 </type>

</wm.exchanger.request>

 

Возвращает ответ: Подпись не прошла проверку...

 

Вообщем цель: исправить мою ошибку, чтобы все интерфейсы заработали.
 

Оплата.

10$ за решение данного вопроса (более 1 дня)

20$ если решите в течение 1 дня.

30$ если решите в течение 1 часа. 

 

Skype:  Serg-vi  (редко)
Viber : +375 29 7112223 (постоянно)

из любопытства (сумма у вас неинтересная), просто привычка решать подобные головоломки:

можете привести реальный пример запроса?

конечно, же обезличив его

например, все цифры поменять на нули, а буквы на... пусть будет "x"

только не удаляя пробелы и прочие другие символы

цифры и буквы, конечно же, менять только в значениях, а не в названиях XML-тегов и атрибутов

и - чем из Delphi XML генерится?


    • 0
  • Наверх

#8 Пользователь Serg-vi (WMID 379091742499 )

  • Группа: Пользователи
  • сообщений 9
  • Регистрация: 20-сентября 16
  • Webmoney BL

Отправлено 12 ноября 2016 - 02:10

Хорошо, буду дома днём, выложу код.
Сумму могу и увеличить. Просто все в основном вообще бесплатно всё спрашивают, а я готов выразить благодарность хотя бы в таком виде.
    • 0
  • Наверх

#9 Знаток ! добрый торговец ! (WMID 217358758215 )

  • Группа: Пользователи
  • сообщений 9 850
  • Регистрация: 18-мая 09
  • МестоположениеЭфиопия
  • Webmoney BL

Отправлено 12 ноября 2016 - 08:00

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

Все, в основном, за php спрашивают, а тут - Delphi:) Сами вы в Delphi, судя по всему, не особо сечете, так что, остается загадкой, почему именно - он.


    • 0
  • Наверх

#10 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 12 ноября 2016 - 11:09

остается загадкой, почему именно - он.

Исходя из определения пишется прога не для сервера, а для пк.


Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 0
  • Наверх

#11 Пользователь Serg-vi (WMID 379091742499 )

  • Группа: Пользователи
  • сообщений 9
  • Регистрация: 20-сентября 16
  • Webmoney BL

Отправлено 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 - вернуть все заявки

Сообщение отредактировал Serg-vi: 12 ноября 2016 - 21:40

    • 0
  • Наверх

#12 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 12 ноября 2016 - 23:10

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

И? Это хорошо или плохо?
 

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

- localhost?

- Не, не слышали.

:lol:


Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 0
  • Наверх

#13 Знаток ! добрый торговец ! (WMID 217358758215 )

  • Группа: Пользователи
  • сообщений 9 850
  • Регистрация: 18-мая 09
  • МестоположениеЭфиопия
  • Webmoney BL

Отправлено 12 ноября 2016 - 23:56

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

Ну, общеизвестна практика, когда на сервере лежит не от основного кипера ключ, а от доверенного вмид, т.е. заводится еще один вмид и ему выписывается доверие на осуществление нужных операций.
Собственно, ключ ваш нафик никому не нужен, кошельки опустошаются именно с той машины, где сам ключ и лежит (откуда запросы идут) или кипер запущен, сервер это или комп домашний :) Но, добраться, возможно, действительно, сложнее будет.

Сообщение отредактировал ! добрый торговец !: 12 ноября 2016 - 23:59

    • 0
  • Наверх

#14 Участник Jaguar (WMID 385960635969 )

  • Группа: Пользователи
  • сообщений 11
  • Регистрация: 18-июня 12
  • Webmoney BL

Отправлено 13 ноября 2016 - 16:10

 

В том то и дело что все на 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 - вернуть все заявки

 

Всё-таки хотелось бы увидеть, что за XML формируется (что содержит Pst.Lines перед отправкой).

Интерфейсы WebMoney не изучал, но, навскидку:
 
 
Какая кодировка выставлена у idHTTP1?
 
+ посмотрел интерфейс:
 
  • signstr - 132-символьная цифровая подпись (ключами .kwm идентификатора wmid) значений 3-х тэгов запроса склееных в одну строку без пробелов "wmid + type + queryid" (формирование цифровой подписи см. в описании общих ВМ-интерфейсов для разработчиков)

 

может, все же попробовать в signstr добавить queryid?

правда, я пока не понял, откуда его брать.

 

+ еще: возможно, в качестве подписи совсем не склейка строк должна быть, а именно подпись, сгенерированная на ее основе


    • 0
  • Наверх

#15 Участник Jaguar (WMID 385960635969 )

  • Группа: Пользователи
  • сообщений 11
  • Регистрация: 18-июня 12
  • Webmoney BL

Отправлено 13 ноября 2016 - 16:28

 

 

В том то и дело что все на 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 - вернуть все заявки

 

Всё-таки хотелось бы увидеть, что за XML формируется (что содержит Pst.Lines перед отправкой).

Интерфейсы WebMoney не изучал, но, навскидку:
 
 
Какая кодировка выставлена у idHTTP1?
 
+ посмотрел интерфейс:
 
  • signstr - 132-символьная цифровая подпись (ключами .kwm идентификатора wmid) значений 3-х тэгов запроса склееных в одну строку без пробелов "wmid + type + queryid" (формирование цифровой подписи см. в описании общих ВМ-интерфейсов для разработчиков)

 

может, все же попробовать в signstr добавить queryid?

правда, я пока не понял, откуда его брать.

 

+ еще: возможно, в качестве подписи совсем не склейка строк должна быть, а именно подпись, сгенерированная на ее основе

 

только что обратил внимание:

Podpis := Intf.SignString('Sklei');

думаю, должно быть так:

Podpis := Intf.SignString(Sklei);


    • 1
  • Наверх

#16 Пользователь Serg-vi (WMID 379091742499 )

  • Группа: Пользователи
  • сообщений 9
  • Регистрация: 20-сентября 16
  • Webmoney BL

Отправлено 14 ноября 2016 - 02:50

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

Сообщение отредактировал Serg-vi: 14 ноября 2016 - 02:51

    • 0
  • Наверх

#17 Участник Jaguar (WMID 385960635969 )

  • Группа: Пользователи
  • сообщений 11
  • Регистрация: 18-июня 12
  • Webmoney BL

Отправлено 16 ноября 2016 - 21:05

Так хэппи-энд произошел или нет?

Проблема решилась?


    • 0
  • Наверх

#18 Пользователь Serg-vi (WMID 379091742499 )

  • Группа: Пользователи
  • сообщений 9
  • Регистрация: 20-сентября 16
  • Webmoney BL

Отправлено 17 ноября 2016 - 21:31

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

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

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


    • 0
  • Наверх

#19 Знаток ^-^ (WMID 273407224562 )

  • Группа: Пользователи
  • сообщений 6 059
  • Регистрация: 10-сентября 13
  • Webmoney BL

Отправлено 18 ноября 2016 - 16:18

Если не секрет: пишется кипер по линукс?


Бесплатный SSL на 3 мес. / Сертификат SSL от 299 руб.
    • 0
  • Наверх

#20 Участник Jaguar (WMID 385960635969 )

  • Группа: Пользователи
  • сообщений 11
  • Регистрация: 18-июня 12
  • Webmoney BL

Отправлено 18 ноября 2016 - 18:14

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

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

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

А что за новая ошибка?

Я, конечно, не знаю, что за программу вы пишете и какие к ней требования.

Но выбор Delphi не очень ясен.

Или там сложный пользовательский интерфейс рисовать надо?


    • 0
  • Наверх





Еще теги с одним или более ключевыми словами: XML