Вопрос о подключении платёжной системы к сайту. Основная сложность заключается в недостатке квалификации в web-программировании. И как следствие, в формулировании внятных запросов к Гуглу — просто не хватает опыта и вовлечённости в область, так что извините, если вопросы покажутся чайниковыми. Буду очень признателен за разъяснение некоторых моментов.
Есть сайт на платформе Windows 2003 Server + IIS 7 + MS SQL Server + ASP.NET/C#. У пользователей ресурса будет внутренний счёт. Так что от платёжной системы требуется автоматизированная возможность как снимать деньги со счёта, так и класть их. Это одна из причин, по которой не подходят централизованные системы оплаты вроде Assist или Plimus.
Насчёт WebMoney я смотрел на разных форумах, включая RSDN, cafe.owebmoney.ru, forum.webmoney.ru. Увы, не смог выудить информацию в достаточном объёме, чтобы справиться с задачей. По всей видимости, нужен один из двух интерфейсов — Web Merchant Interface или XML-интерфейсы. Какой из них предпочтительнее и почему? Какой проще использовать, у какого больше возможностей, у какого меньше недостатков?
Попалась статья «Автоматический прием WM-платежей. Сервис WebMoney Merchant», но там рассматривается только первый способ взаимодействия, примеры даны на PHP и есть некоторые другие непонятки. Возможно, более опытные товарищи, которые уже сталкивались с сабжем, смогут поделиться примером кода на ASP.NET/C#?
Также с благодарностью выслушаю любые хинты относительно процесса получения WebMoney ID, регистрации кошельков, оформления аттестатов. В частности, нужен ли аттестат продавца для использования интерфейсов WebMoney? Чем отличается регистрация WMID (или кошельков?) для физических и юридических лиц?
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, 0K.
Q>Спасибо большое за отклик!
0K>>Есть проект для разработчиков использующих WebMoney с ASP.Net: www.wmsigner.com. На этом сайте есть WMSigner разработанный полностью для платформы .Net и работающий примерно в 10 раз быстрее старого COM-овского за счет применения алгортма Монтгомери для RSA-подписи. Так-же есть примеры работы со всеми интерфейсами системы (правда эти самые примеры на данный момент в разработке).
Q>Да, мне попадались ссылки на этот проект. Емнип, там есть возможность работать только с клиентом WM Keeper Classic, мне же нужна версия аутентификации WM Keeper Light.
Посмотрите на Модуль для интеграции с XML-интерфейсами системы WebMoney. Работает как с ключем Classic, так и с сертификатом (и закрытым ключем) WM Keeper Light. Только контейнер .pfx хранится в виде байтового массива, но вы можете загружать и с хранилища сертификатов компьютера (используйте класс X509Store).
0K>>Web Merchant Interface -- для приема средств. 0K>>XML-интерфейс №2 -- для перечисления средств
Q>Я понял немного не так. Для перечисления средств от ресурса к пользователю нужен X2, а в обратном направлении — X1, это интерфейс с выписыванием счёта. Web Merchant Interface можно вообще не трогать. Впрочем, скоро придётся плотно потестить эти два интерфейса. Пока что удалось разобраться только с «безобидным» интерфейсом X9 — получение информации о балансе.
Существует 4 способа принимать оплату от клиентов с помощью системы WebMoney:
с помощью интерфейса WebMoney Merchant;
с помощью выписки счета на оплату, используя XML-интерфейс №1;
напрямую переводить титульные знаки с доверенных кошельков клиентов, используя XML-интерфейс №2;
с помощью интерфейса Click&Buy;
1 способ -- для мгновенного зачисления средств через шлюз WebMoney. Т.е. клиент будет перенаправлен на сайт WM, где и произведет операцию. Вы же получите только результат (оплатил/не оплатил и какую сумму). Этот вариант приема средств самый распространенный
2 способ -- отложенный. Клиент получает счет на оплату, он может оплатить его в определенный срок (несколько дней) или отказаться от оплаты счета.
3 способ позволяет снимать деньги с кошелька клиента напрямую. Но клиент должен должен доверить вам это делать (с указанием суммы, которую вы можете снимать).
4 способ -- мгновенное зачисление средств одним кликом. Пример работы вы можете посмотреть здесь.
Q>Трудность ещё была в работе с персональными цифровыми сертификатами X.509, которые используются для аутентификации при работе с WM Keeper Light. Q>Мне нужен код на ASP.NET/C# (в которых я пока что не очень-то разбираюсь), а в примере на офсайте находятся лишь не вполне вразумительные примеры на ASP/JScript (в которых я вообще никак). В частности, вызвал вопрос фрагмент Q>
Q>Вроде как создаётся какой-то COM-объект, и у него устанавливается какое-то свойство. Ну, я смекнул, что это дело неплохо бы выразить в терминах HttpWebRequest, но вот что делать с этим setOption() не сообразил. В итоге пришлось установить сертификат в хранилище Windows (через WinHttpCertCfg.exe), затем при каждом запросе его оттуда извлекать, как-то так: Q>
Q>var store = new X509Store("...", StoreLocation.LocalMachine);
Q>store.Open(OpenFlags.ReadOnly);
Q>X509Certificate certificate = store.Certificates[0];
Q>request.ClientCertificates.Add(certificate);
Q>
Вы все верно делаете. Установите сертификат с закрытым ключем в хранилище машины (не пользователя) и используйте HttpWebRequest для создания запросов. Пример вы можете найти здесь.
Вот вам код на C# для запросов к серверу WM с аутентификацией сертификатом Light:
Q>В общем, разбираться с подключением плат. систем — удовольствие ниже среднего. В идеале от webmoney.ru хотелось бы, чтобы они предоставили на каждую основную операцию по 2*2*2=8 примеров: через Web Merchant Interface и через XML-интерфейсы, с аут-цией через Classic и Light, исходники на ASP.NET/C# и PHP.
Примеры для ASP.Net, как вы заметили, есть. Они действительно находятся в разработке. Однако при желании разобраться можно.
Здравствуйте, Qbit86, Вы писали:
Q>У пользователей ресурса будет внутренний счёт. Так что от платёжной системы требуется автоматизированная возможность как снимать деньги со счёта, так и класть их.
Т.е. система должна уметь осуществлять проводку со счётов своих клиентов (неважно WM или сбербанк) на счёта Ваших клиентов. Если я всё правильно понимаю — Вы в данном случае являетесь некоторым аналогом банка. У Вас есть лецензия на банковскую деятельность?. Насколько законной Вы полагаете такую операцию?
Мне кажеться — Вы имели ввиду следующую ситуацию: Вы предоставляете какую-то услугу, которую пользователь может использовать продолжительное время. В этом случае Вы заключаете договор с платежной системой (и, возможно, с каким-то определёным системой банком) и пишете систему, которая отслеживает состояние Вашего счета и произоводит какие-то операции (продление или прекращение предоставления услуги, например). В этом случае у платежных систем несложно найти примеры организации подключения к ним (правда некоторые два года назад давали доступ к примерам только после заключения договора).
Примеры простые, неплохо документированные и всегда есть возможность тестового прогона сколь угодно долго.
СОВЕТ: никогда и не при каких условиях НЕЛЬЗЯ хранить учётные данные доступа Ваших клиентов к платежным системам.
Здравствуйте, Kvazimodo75, Вы писали:
K>Т.е. система должна уметь осуществлять проводку со счётов своих клиентов (неважно WM или сбербанк) на счёта Ваших клиентов. Если я всё правильно понимаю — Вы в данном случае являетесь некоторым аналогом банка.
Не совсем. Счёт клиентов — это некие credits, ближайший аналог — это фишки в казино или, быть может, баланс на ресурсе какого-нибудь интернет-провайдера, я подобные видел. Что такое «проводка со счетов» я не знаю, но, имхо, более близкая трактовка — это купля у ресурса/продажа ресурсу некоего нефизического товара. Хотя возможно это не самая верная аналогия. Внутренний счёт делается для того, чтобы при каждом акте перевода маленьких сумм не нужно было постоянно обращаться к платёжной системе. Пользователь просто один раз кладёт небольшую сумму на внутренний счёт, затем маленькими порциями с этого счёта оплачивает некоторые услуги, или, наоборот, получает бонусы. В конце цонцов, он может снять эти кредиты с внутреннего счёта обратно на WM-кошелёк. Это снижает вероятность компрометации основного кошелька.
K>СОВЕТ: никогда и не при каких условиях НЕЛЬЗЯ хранить учётные данные доступа Ваших клиентов к платежным системам.
Согласен. Вместо того, чтобы хранить в базе учётные данные доступа клиентов к платежным системам, мы заводим свой внутренний аккаунт, где храним информацию только о тех платёжных средствах, которые пользователь планирует распоряжаться внутри нашего ресурса.
K>Примеры простые, неплохо документированные и всегда есть возможность тестового прогона сколь угодно долго.
Примеры или для слишком простых случаев (guide_simple.asp), или таки плохо документированные. Возможно, просто сказывается недостаток опыта, поэтому много непонятного. Наверное, подключение платёжных систем не так уж и сложно, просто нужно единожды освоить процесс. Во второй раз, очевидно, подключение займёт куда меньше времени. Плюс если ещё в целом веб-программирование подтяну :)
K>В этом случае у платежных систем несложно найти примеры организации подключения к ним (правда некоторые два года назад давали доступ к примерам только после заключения договора).
Да, примеры использования XML-интерфейсов вроде бы становятся доступны после заключения договора. Но хотелось бы узнать, стоит ли овчинка выделки, или дешевле использовать старый интерфейс Web Merchant? Последний произвёл впечатление избыточно сложного. XML-интерфейс вроде попроще в обращении, но конкретной информации нет.
В идеале хотелось бы увидеть как можно более полный пример на ASP.NET/C#, в котором реализована возможность покупать/продавать за WebMoney, причём реализована и первым, и вторым способом (для сравнения).
Здравствуйте, Qbit86, Вы писали:
Q>Уважаемые коллеги, нуждаюсь в вашей помощи!
Q>Вопрос о подключении платёжной системы к сайту. Основная сложность заключается в недостатке квалификации в web-программировании. И как следствие, в формулировании внятных запросов к Гуглу — просто не хватает опыта и вовлечённости в область, так что извините, если вопросы покажутся чайниковыми. Буду очень признателен за разъяснение некоторых моментов.
Есть проект для разработчиков использующих WebMoney с ASP.Net: www.wmsigner.com. На этом сайте есть WMSigner разработанный полностью для платформы .Net и работающий примерно в 10 раз быстрее старого COM-овского за счет применения алгортма Монтгомери для RSA-подписи. Так-же есть примеры работы со всеми интерфейсами системы (правда эти самые примеры на данный момент в разработке).
Проект не левый, он создан при поддержке "Вычислительных Сил" (они разрабатывают ПО для WM). Этот же WMSigner для .Net c хорошо документированный вы можете скачать и с самого сайта WebMoney.
Q>Есть сайт на платформе Windows 2003 Server + IIS 7 + MS SQL Server + ASP.NET/C#. У пользователей ресурса будет внутренний счёт. Так что от платёжной системы требуется автоматизированная возможность как снимать деньги со счёта, так и класть их. Это одна из причин, по которой не подходят централизованные системы оплаты вроде Assist или Plimus.
Q>Насчёт WebMoney я смотрел на разных форумах, включая RSDN, cafe.owebmoney.ru, forum.webmoney.ru. Увы, не смог выудить информацию в достаточном объёме, чтобы справиться с задачей. По всей видимости, нужен один из двух интерфейсов — Web Merchant Interface или XML-интерфейсы. Какой из них предпочтительнее и почему? Какой проще использовать, у какого больше возможностей, у какого меньше недостатков?
Web Merchant Interface -- для приема средств.
XML-интерфейс №2 -- для перечисления средств
Q>Попалась статья «Автоматический прием WM-платежей. Сервис WebMoney Merchant», но там рассматривается только первый способ взаимодействия, примеры даны на PHP и есть некоторые другие непонятки. Возможно, более опытные товарищи, которые уже сталкивались с сабжем, смогут поделиться примером кода на ASP.NET/C#?
Опять же, два варианта примеров есть здесь.
Q>Также с благодарностью выслушаю любые хинты относительно процесса получения WebMoney ID, регистрации кошельков, оформления аттестатов. В частности, нужен ли аттестат продавца для использования интерфейсов WebMoney? Чем отличается регистрация WMID (или кошельков?) для физических и юридических лиц?
Для использования интерфейсов нужен персональный аттестат WM как для физ. так и для юр. лиц.
Спасибо большое за отклик!
0K>Есть проект для разработчиков использующих WebMoney с ASP.Net: www.wmsigner.com. На этом сайте есть WMSigner разработанный полностью для платформы .Net и работающий примерно в 10 раз быстрее старого COM-овского за счет применения алгортма Монтгомери для RSA-подписи. Так-же есть примеры работы со всеми интерфейсами системы (правда эти самые примеры на данный момент в разработке).
Да, мне попадались ссылки на этот проект. Емнип, там есть возможность работать только с клиентом WM Keeper Classic, мне же нужна версия аутентификации WM Keeper Light.
0K>Web Merchant Interface -- для приема средств. 0K>XML-интерфейс №2 -- для перечисления средств
Я понял немного не так. Для перечисления средств от ресурса к пользователю нужен X2, а в обратном направлении — X1, это интерфейс с выписыванием счёта. Web Merchant Interface можно вообще не трогать. Впрочем, скоро придётся плотно потестить эти два интерфейса. Пока что удалось разобраться только с «безобидным» интерфейсом X9 — получение информации о балансе.
Трудность ещё была в работе с персональными цифровыми сертификатами X.509, которые используются для аутентификации при работе с WM Keeper Light.
Мне нужен код на ASP.NET/C# (в которых я пока что не очень-то разбираюсь), а в примере на офсайте находятся лишь не вполне вразумительные примеры на ASP/JScript (в которых я вообще никак). В частности, вызвал вопрос фрагмент
var xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP");
if ('light' == AuthorizeType)
{
xmlhttp.setOption(3, 'WM id: '+reqwmid)
}
xmlhttp.open('POST', url, false);
Вроде как создаётся какой-то COM-объект, и у него устанавливается какое-то свойство. Ну, я смекнул, что это дело неплохо бы выразить в терминах HttpWebRequest, но вот что делать с этим setOption() не сообразил. В итоге пришлось установить сертификат в хранилище Windows (через WinHttpCertCfg.exe), затем при каждом запросе его оттуда извлекать, как-то так:
var store = new X509Store("...", StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate certificate = store.Certificates[0];
request.ClientCertificates.Add(certificate);
В общем, разбираться с подключением плат. систем — удовольствие ниже среднего. В идеале от webmoney.ru хотелось бы, чтобы они предоставили на каждую основную операцию по 2*2*2=8 примеров: через Web Merchant Interface и через XML-интерфейсы, с аут-цией через Classic и Light, исходники на ASP.NET/C# и PHP.
Спасибо за подробный и развёрнутый ответ с исходниками и ссылками — буквально образцовый комментарий :)
Надо будет подробнее присмотреться к WM Signer.
Ещё в гугле пробегала ссылка на WmClasses — обёртка на C# над XML-интерфейсами. Вам приходилось с ней работать?
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, 0K!
Q>Спасибо за подробный и развёрнутый ответ с исходниками и ссылками — буквально образцовый комментарий Q>Надо будет подробнее присмотреться к WM Signer. Q>Ещё в гугле пробегала ссылка на WmClasses — обёртка на C# над XML-интерфейсами. Вам приходилось с ней работать?
Ссылка на эту библиотеку есть на сайте здесь (предпоследняя). Автор тоже учавствует в проекте.
В идеале нужна библиотека с документацией, которую можно использовать в приложениях работающих с WM-интерфейсами. К сожалению на данный момент такого продукта нет (хотя, на сколько я знаю, работы ведутся). Вы можете использовать то что есть (любую из 2-х библиотек) как пример.
В кратце. Первая библиотека (WM-API) -- использует серилизацию и гораздо сложнее в реализации. Вторая (WmClasses) -- намного проще, применяется простое строковое представление запроса (преобразовывает в xml-документ). Обе библиотеки не являются законченными реализациями и использовать на данный момент (в том состоянии, в каком они сейчас) я бы их не стал.
Единственный законченный и документированный продукт на сайте wmsigner.com -- сам WMSigner для .Net. Его использовать вместо обычного обязательно. Причем обязательн версию 2.0 (работает в 20 раз быстрее версии 1.1). На сайте WebMoney можно скачать только версию 1.1, 2.0 только на родном сайте.
ЗЫ
Если нет персонального аттестата, то можно скачать с английской версии сайта.
Здравствуйте, 0K, Вы писали:
0K>Есть проект для разработчиков использующих WebMoney с ASP.Net: www.wmsigner.com. На этом сайте есть WMSigner разработанный полностью для платформы .Net и работающий примерно в 10 раз быстрее старого COM-овского за счет применения алгортма Монтгомери для RSA-подписи. Так-же есть примеры работы со всеми интерфейсами системы (правда эти самые примеры на данный момент в разработке).
Привет!
Правильно ли я понимаю, что если для ввода денег (покупатель => магазин) использовать WebMoney Merchant, то WMSigner не нужен, а нужен он для использования WM-интерфейсов?
И еще пара вопросов. Для того чтобы перевести деньги в обратную сторону (магазин => покупатель) надо использовать интерфейс X2? Это будет автоматический перевод?
Здравствуйте, Powerz, Вы писали:
P>Привет! P>Правильно ли я понимаю, что если для ввода денег (покупатель => магазин) использовать WebMoney Merchant, то WMSigner не нужен, а нужен он для использования WM-интерфейсов?
Правильно понимаете
P>И еще пара вопросов. Для того чтобы перевести деньги в обратную сторону (магазин => покупатель) надо использовать интерфейс X2? Это будет автоматический перевод?
Зависит, что вкладывать в слово "автоматический". Перевод будет совершён скриптами, если запрограммируете автоматическое совершение платежей — будет автоматическое