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


Jaguar

Регистрация: 18 июн 2012
Не в сети Активность: сен 23 2017 14:15
-----

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

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

30 ноября 2016 - 15:40

 

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

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

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

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

 

Умение замечать подобные ошибки все же нарабатывается именно после долгих часов медитаций над глючащим кодом :)

 

Z-кошелёк: Z703928958167

 

Telegram: @KuzminAV_RU но я там редко бываю.

 

30 WMZ получил.

Будут ещё подобные проблемы - готов помочь, если будет время. )


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

23 ноября 2016 - 12:25

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

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

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

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

 

Умение замечать подобные ошибки все же нарабатывается именно после долгих часов медитаций над глючащим кодом :)

 

Z-кошелёк: Z703928958167

 

Telegram: @KuzminAV_RU но я там редко бываю.


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

18 ноября 2016 - 18:14

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

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

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

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

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

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

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


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

16 ноября 2016 - 21:05

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

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


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

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);