Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

API WebMoney. Загрузка операций в 1С

API WebMoney. Загрузка операций в 1С
Я
   i_rodionov
 
11.09.16 - 20:57
У меня был сервер Win 2003 x64, на котором я успешно реализовал для интернет магазина выписки из движений кошелька WebMoney. Теперь они мигрировали на Win 2012 x64 в немецком облаке. И все перестало работать. Сервер Вебмани отвечает, что проблема с сертификатами защищенного веб-соединения. У кого был такой опыт, поделитесь, пожалуйста.
Спасибо.
 
 
   i_rodionov
 
1 - 11.09.16 - 21:02
Дополнительно. Если забирать данные вручную из 1С клиента, то все хорошо (32 разряда). Если регламентное задание - перестало работать на Win2012 x64, хотя классно работало на Win 2003 x64
   i_rodionov
 
2 - 11.09.16 - 21:16
Неужели никто не работал в Webmony?
   Кащей Бессмертный
 
3 - 11.09.16 - 21:17
Если жалуется на сертификат, то нужно вызывать код с сервера и смотреть, что за сертификаты он там спрашивает.
Вполне вероятно, что не хватает какого-то корневого сертификата.
   Cyberhawk
 
4 - 11.09.16 - 21:18
Плохо мигрировали. Ты админ?
   i_rodionov
 
5 - 11.09.16 - 21:19
(4) не, не админ. Но я прописал все сертификаты в корневое хранилище
   i_rodionov
 
6 - 11.09.16 - 21:20
(4) иначе у меня даже 32 разряда бы не работало (из клиента 1С)
   Кащей Бессмертный
 
7 - 11.09.16 - 21:23
Вопрос - а пользователь сервера в это хранилище вхож ?
   i_rodionov
 
8 - 11.09.16 - 21:25
(7) Да, когда это делает юзер интерактивно, нажимает кнопку в обработке, все замечательно (исполняется код в контексте 32 разряда). Когда это делает регламент (уже 64 разряда) под той же ролью - не работает
   i_rodionov
 
9 - 11.09.16 - 21:26
(7) там RDP все юзеры и сервер на одном сервере
   Cyberhawk
 
10 - 11.09.16 - 21:26
Поставь 8.3.9 х64 клиент и проверь с толстого клиента обычного приложения
 
 Рекламное место пустует
   Cyberhawk
 
11 - 11.09.16 - 21:27
Так ты поймешь, в чем дело - в 64 битах или в разных пользователях ОС, из-под которых выполняется код
   Cyberhawk
 
12 - 11.09.16 - 21:27
Ну а для быстрого решения проблемы можешь просто запускать службу сервера приложений из-под полноценного пользовтеля ОС
   Cyberhawk
 
13 - 11.09.16 - 21:28
(под которым все работает в 32б, например)
   i_rodionov
 
14 - 11.09.16 - 21:28
(10) Оно же не вышло официально?
   Cyberhawk
 
15 - 11.09.16 - 21:29
(14) Ну так тебе ж проверить чисто
   i_rodionov
 
16 - 11.09.16 - 21:29
(12) Админ уверяет, что у службы дофига прав. Думаешь, пользователь службы не может прочесть корневой каталог сертифов?
   Cyberhawk
 
17 - 11.09.16 - 21:30
(16) У процессов, запускаемых как служба, есть отличия в поведении и окружении ОС по сравнению с теми, которые запускаются в интерактивном сеансе ОС...
   i_rodionov
 
18 - 11.09.16 - 21:33
(17) Я это заметил ,когда их переводил. Много, что было сделано через COM, я переписывал через ADO. Но не знаю, что еще сделать. Если есть подсказка, буду благодарен
   Кащей Бессмертный
 
19 - 11.09.16 - 21:33
(16) Вполне реально, что для него их просто нет.
   Кащей Бессмертный
 
20 - 11.09.16 - 21:34
(18) Просто COM из 64 в 32 - напрямую не работает. Нужно костыли делать.
   i_rodionov
 
21 - 11.09.16 - 21:34
(20) Я от них ушел в АДО. Но Вебмани - вебная штука, уйти некуда
   i_rodionov
 
22 - 11.09.16 - 21:37
А заодно, Оффтоп. Тут кто-нибудь делал интеграцию с LaModa? Это селлер центр
   Кащей Бессмертный
 
23 - 11.09.16 - 21:38
(21) Web-то можно через HTTPСоединение обрабатывать.
   i_rodionov
 
24 - 11.09.16 - 21:39
(23) Ясное дело. Только перестало работать в Win2012
   Кащей Бессмертный
 
25 - 11.09.16 - 21:40
(24) А вообще - процесс с сервера запросы отправляет ?

Поставить рядом apache и ходить к нему и смотреть, что и как работает - после того как в тесте всё будет ходить - переходить к рабочему серверу.
   i_rodionov
 
26 - 11.09.16 - 21:43
(25) Да, все отлично, кроме того, что он отбрасывает соединение, как незащищенное. Стоящий рядом 2003 сервер x64 с теми же сертификатами все обрабатывает
   i_rodionov
 
27 - 11.09.16 - 21:45
(25) рекомендуешь Фиддлером посмотреть общение серверов?
   Кащей Бессмертный
 
28 - 11.09.16 - 21:45
(26) Вот и нужно смотреть, что происходит, когда ходишь на свой "домашний" сервер, и смотреть, какого сертификата не хватило.
А, может быть, ему ещё и флажок какой нужно поставить, чтобы он сертификаты использовал.
P.S. а, может быть, специалисты из 1С так быстро всё писали, что в 64-битной версии он просто не умеет работать.
   Кащей Бессмертный
 
29 - 11.09.16 - 21:46
(27) Можно, только https-трафик не так просто смотреть.
Поэтому, лучше смотреть на своём сервере - там видно, что он запросил, и что ему сервер ответил.
   Cyberhawk
 
30 - 11.09.16 - 21:46
А может какая-нибудь политика сети в 2012 бородит
   i_rodionov
 
31 - 11.09.16 - 21:47
(28) У меня столько вопросов к Win2012, что всех не перечислить. Я сюда писал с надеждой, что кто-то столкнулся с проблемой и, может быть, нашел решение
   i_rodionov
 
32 - 11.09.16 - 21:50
У меня еще впереди программирование авторизации в Приватбанк, Днепропетровск. То ли еще будет )
   i_rodionov
 
33 - 11.09.16 - 22:06
WMID = Константы.ВебМани_ВМИД.Получить();//Логин - айди кипера

    НомерКошелька = Константы.ВебМани_НомерКошелька.Получить();
    УникальныйНомерЗапроса = Формат(ТекущаяДата(),"ДФ=yyyyMMddHHmmss");
    
      Signer = Новый COMОбъект("WMSignerX.Signer");
    Signer.Login = WMID;
    Signer.Passwd = Константы.ВебМани_ПарольКипера.Получить();
    Signer.KeyFName = Константы.ВебМани_ПутьКФайлуКлючей.Получить();
    СтрокаПодписи = Signer.SignString(НомерКошелька+УникальныйНомерЗапроса);// зашифровывает строку подписи

    
    ДанныеЗапроса = "<w3s.request>";
    ДанныеЗапроса = ДанныеЗапроса + "<reqn>"+УникальныйНомерЗапроса+"</reqn>";
    ДанныеЗапроса = ДанныеЗапроса + "<wmid>"+WMID+"</wmid>";
    ДанныеЗапроса = ДанныеЗапроса + "<sign>"+СтрокаПодписи+"</sign>";
    ДанныеЗапроса = ДанныеЗапроса + "<getoperations>";
    ДанныеЗапроса = ДанныеЗапроса + "<purse>"+НомерКошелька+"</purse>";
    ДанныеЗапроса = ДанныеЗапроса + "<wmtranid></wmtranid>";  //номер операции в системе ВебМани. Пусто - фильтр не наложен

    ДанныеЗапроса = ДанныеЗапроса + "<tranid></tranid>";// номер перевода. Пусто - фильтр не наложен

    ДанныеЗапроса = ДанныеЗапроса + "<wminvid></wminvid>";//номер счета в системе ВебМани. Пусто - фильтр не наложен

    ДанныеЗапроса = ДанныеЗапроса + "<orderid></orderid>";//номер заказа. Пусто - фильтр не наложен

    ДанныеЗапроса = ДанныеЗапроса + "<datestart>"+Формат(ДатаНачала,"ДФ='yyyyMMdd HH:mm:ss'")+"</datestart>";
    ДанныеЗапроса = ДанныеЗапроса + "<datefinish>"+Формат(ДатаКонца,"ДФ='yyyyMMdd HH:mm:ss'")+"</datefinish>";
    ДанныеЗапроса = ДанныеЗапроса + "</getoperations>";
    ДанныеЗапроса = ДанныеЗапроса + "</w3s.request>";  
    
    Прокси = Новый ИнтернетПрокси;
    Прокси.Установить("http","10.100.0.1",3128);
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type","text/xml");
    
    Запрос = Новый HTTPЗапрос("/asp/XMLOperations.asp", Заголовки);
    Запрос.УстановитьТелоИзСтроки(ДанныеЗапроса,КодировкаТекста.ANSI);
    
    SSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows());
    //ЗаписьЖурналаРегистрации("ВебМани",,,,"НАЧАЛО");


    АдресСервера = "w3s.webmoney.ru";
    Попытка
        Соединение = Новый HTTPСоединение(АдресСервера,,,,Прокси,,SSL);// защищенное соединение!

    Исключение
        
        #Если Клиент Тогда

        Сообщить("Не удалось установить соединение с сервером :" 
        + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
        #КонецЕсли

    
        Возврат;
    КонецПопытки;
    
    ФайлРезультата = ПолучитьИмяВременногоФайла();
    Попытка
        Ответ = Соединение.ОтправитьДляОбработки(Запрос, ФайлРезультата);
        Соединение = Неопределено;
    Исключение
        
        #Если Клиент Тогда

        Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
        #КонецЕсли

    
        Возврат;
    КонецПопытки;
    //ЗаписьЖурналаРегистрации("ВебМани",,,,ФайлРезультата);

    //Возврат;

    
    Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ФайлРезультата);
    
    ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(Чтение);

    Чтение.Закрыть();
    УдалитьФайлы(ФайлРезультата);
    
    КоличествоОпераций = Число(ОбъектXDTO.operations.cnt);
    
    Если КоличествоОпераций = 0 Тогда
        Возврат;
    КонецЕсли;
    
    Если КоличествоОпераций = 1 Тогда
        ТекущаяОперация = ОбъектXDTO.operations.operation;
        
        Если ТекущаяОперация.pursedest = НомерКошелька Тогда
            ОбработатьПлатежВебМани(ТекущаяОперация, Перечисления.ВидыОперацийПоступлениеБезналичныхДенежныхСредств.ОплатаПокупателя);
        Иначе
            ОбработатьПлатежВебМани(ТекущаяОперация, Перечисления.ВидыОперацийППИсходящее.ОплатаПоставщику);
        КонецЕсли;
    Иначе
        
        Для Каждого ТекущаяОперация Из ОбъектXDTO.operations.operation Цикл
            
            Если ТекущаяОперация.pursedest = НомерКошелька Тогда
                ОбработатьПлатежВебМани(ТекущаяОперация, Перечисления.ВидыОперацийПоступлениеБезналичныхДенежныхСредств.ОплатаПокупателя);
            Иначе
                ОбработатьПлатежВебМани(ТекущаяОперация, Перечисления.ВидыОперацийППИсходящее.ОплатаПоставщику);
            КонецЕсли;
            
        КонецЦикла;
    КонецЕсли;
 
 
   i_rodionov
 
34 - 11.09.16 - 22:14
Это пример кода, который работает в Win2003x64 и в клиенте 1С. Может, пригодится кому
   Torquader
 
35 - 11.09.16 - 22:43
(34) А Signer в 64-битах правильно работает ?
   i_rodionov
 
36 - 11.09.16 - 22:49
(35) Есть его две версии, в 32 и 64
   i_rodionov
 
37 - 11.09.16 - 22:50
(35) Было опробованно на Win2003x64 - безупречно
   Serginio1
 
38 - 11.09.16 - 22:57
   i_rodionov
 
39 - 11.09.16 - 23:15
(38) Это для чего?
   Serginio1
 
40 - 12.09.16 - 07:51
   Serginio1
 
41 - 12.09.16 - 11:09
Кроме того ты можешь использовать эти библиотеки через COM

RegAsm.exe .\..\PUBLIC\v3.2-bin\WebMoney.Cryptography.dll \tlb
gacutil.exe /if .\..\PUBLIC\v3.2-bin\WebMoney.Cryptography.dll
gacutil.exe /if .\..\PUBLIC\v3.2-bin\BusinessTools.Cryptography.dll

Можешь зарегистрировать через мою 
РегистрацияКомСервера.exe от администратора. Там регистрируется сразу и в 32 и 64 разрядные


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует