Автоматическая выписка счета

Приведенный ниже код позволит выписать счет тому, кто зайдет на страницу вашего магазина. Код содержит в себе элемент ActiveX, и поэтому по умолчанию он работает только c браузером Internet Explorer, а для работы ActiveX в  Netscape Navigator необходим соответствующий plug-in.

<OBJECT ID="WMAcceptor" CLASSID="CLSID:463ED66E-431B-11D2-ADB0-0080C83DA4EB" CODEBASE="http://download.webmoney.ru/wmacceptor.cab#version=1,0,0,31" WIDTH=94 HEIGHT=92 LANGUAGE="JavaScript"> <PARAM NAME="nInvoice" VALUE=5> <PARAM NAME="nState" VALUE=32> <PARAM NAME="strStoresPurse" VALUE="Z313292867832"> <PARAM NAME="Notes" VALUE="Утюг"> <PARAM NAME="Amount" VALUE=500.00> <PARAM NAME="DateOfCreate" VALUE="1998.11.23 13:33:47"> <PARAM NAME="Expiration" VALUE=0> <PARAM NAME="Protection" VALUE=0> <PARAM NAME="Signature" VALUE="83ce8f067fe6045efdfb4b0a3433faac158941982c688061378de14563e6e900d69 94f95a9807b6034b0990db299f76f3aaaeac236395fed49da2f65158f99630429"> </OBJECT>

Внимание: перенос в строке «VALUE="83ce…» сделан для удобства чтения. При формировании реальной страницы переноса быть не должно!

Данный тэг вставляет на страницу браузера ActiveX-объект, который выглядит как картинка с изображением WM-кассы. В случае, если кто-либо зайдет на страницу вашего магазина и бросит монетку в ActiveX из своего WebMoney Keeper, на его имя будет выписан счет с параметрами, переданными в данном ActiveX.

Эти параметры означают следующее:

nInvoice — целое число, определяющее номер счета, выписываемого ActiveX. Оно необходимо для отслеживания счетов, выписанных вашим магазином, и, в идеале, должно быть уникальным для каждого выписываемого счета (или для каждого товара);

nState — режим ActiveX для статических магазинов должен быть равен 32 (остальные режимы необходимы для динамических магазинов и будут описаны в шаблонах динамических магазинов);

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

Notes — название товара и комментарии к товару;

Amount — цена товара, сумма, на которую покупателю будет выписан счет (число с дробной частью, отделенной точкой);

DateOfCreate — дата счета, большой роли не играет и, в идеале, должна быть равна дате выписки счета (обязателен формат YYYY.MM.DD hh:nn:ss);

Expiration — целое число, определяющее количество дней действия счета;

Protection — целое число, определяющее количество дней протекции сделки по данному счету;

Signature — сертификат счета. Как его сформировать, будет описано ниже.

Для браузеров, не поддерживающих технологию ActiveX, вы можете вставить в HTML следующий тэг (не забудьте, что для Netscape Navigator данный тэг должен быть внутри тега FORM).

<TEXTAREA id=Cert READONLY name=Cert ROWS=1 COLS=55> СЕРТИФИКАТ СЧЕТА МАГАЗИНА СИСТЕМЫ WEBMONEY EXCHANGE №: 3 товар: Утюг сумма: 500.00 дата создания: 1998.11.22 18:44:43 кошелек магазина: Z313292867832 срок протекции: 0 время жизни: 0 сертификат: 83ce8f067fe6045efdfb4b0a3433faac158941982c688061378de14563e6e900d69 94f95a9807b6034b0990db299f76f3aaaeac236395fed49da2f65158f99630429 </TEXTAREA>

Как вы видите, это простое текстовое поле, где перечислены те же параметры счета, что и у ActiveX. Здесь необходимо учитывать следующие особенности:

- счет должен формироваться точно так же, как это сделано выше, без пропуска строк;
- названия параметров должны совпадать, быть в том же регистре и отделяться от значения параметра двоеточием и пробелом;
- после каждого значения параметра должна следовать последовательность ВКПС (возврат каретки перевод строки #13#10).

Чтобы сделать ваш счет работающим, то есть подписать его вашим закрытым ключом и создать таким образом сертификат счета, необходимо вызвать интерфейс кошелька WebMoney Keeper.
На языке VBScript (в Windows Scripting Host) это может выглядеть следующим образом:
Dim Keeper ' вызов интерфеса  к этому моменту WebMoney Keeper должен быть запущен
Set Keeper = WScript.CreateObject("WebMoneyRun.Keeper") 
Dim gid, gname, gprice, gdate, shoppurse, gdayhold, gdayvalid
gid = 3
gname = "Утюг" 
gprice = "500.00"
gdate = "1998.11.23 13:33:47"
shoppurse = "Z313292867832"
gdayhold = 0
gdayvalid = 0

Dim gcodestr
gcodestr = "№: " & gid & chr(13) & chr(10) & _
	"товар: " & gname & chr(13) & chr(10) & _
	"сумма: " & gprice & chr(13) & chr(10) & _
	"дата создания: " & gdate & chr(13) & chr(10) & _
	"кошелек магазина: " & shoppurse & chr(13) & chr(10) & _
	"срок протекции: " & gdayhold & chr(13) & chr(10) & _
	"время жизни: " & gdayvalid & chr(13) & chr(10)
'формирование строки на подпись формат строки должен быть именно таким

Dim SIGN_
SIGN_ = ""

Dim Login_
Login_ = "221563405131" 'WM идентификатор 

Dim Pwd_
Pwd_ = "123qwe" ' Пароль 

SIGN_ = Keeper.StringSign(Login_, Pwd_, gcodestr)
'Подпись строки возвращенная строка будет содержать сертификат подписанного счета
MsgBox SIGN_ ' Вывести подпись

' end of the sample
Этот код можно сохранить в файл .VBS, подправить (вставить свои значения для счета) и выполнить. Вы получите строку (сигнатуру), которую надо вставить в дальнейшем в параметры счета (в VALUE для PARAM NAME="Signature"). Если результатом выполнения этого кода будет пустая строка, то либо возникла ошибка, либо введен неверный пароль или WM-идентификатор.

Чтобы увидеть, как работает данный код, попробуйте бросить (из трея с иконки "мигающего муравья" или из списка кошельков WM Keeper) с помощью Drag&Drop монетку в кассу (для Microsoft IE), или в текстовое поле сертификата счета (для Netscape Communicator). Информационное сообщение запросит ввести адрес доставки товара (необязательный параметр). После этого система попытается выписать счет на оплату.

Для браузера Microsoft Internet Explorer:

Для браузера Netscape Communicator:
 
 
Если в процессе выписки счета в Кипере покупателя возникает сообщение "Вы не авторизованы корреспондентом для выполнения данной операции", значит, у покупателя стоит ограничение на прием счетов ( в Кипере Меню-Настройки-Программы_Ограничения).

Особенность!
В коде указанного выше элемента ActiveX есть строка <PARAM NAME="nState" VALUE=32>. Эта строка определяет режим работы. Другие режимы работы 2, 4, 8, 16, 32 и т.д. описаны в других подразделах (см. слева). Можно комбинировать эти режимы (складывать их значения) для того, чтобы один раз выполнить сразу несколько функций. Так в режиме 35 (1+2+32) ActiveX будет проверять компьютер клиента на инсталляцию и запуск WM Keeper, а также работать в качестве статического счета.
Воспроизводимые на данном сайте торговые марки WEBMONEY и WEBMONEY TRANSFER используются держателями сайта с разрешения правообладателя.
Copyright WebMoney © 1998.
сотрудничество | карьера | пресс-центр | контакты | вопросы и ответы | юридическая информация

По всем вопросам обращайтесь support.wmtransfer.com