Содержимое: wmt.zip (55.42 KB)
Загружен: 31.03.2003

Положительные отзывы: 0
Отрицательные отзывы: 0

Возвраты: 0

В закладки





Библиотека API WebMoney Transfer для языка Python, реализует весь набор функций HTTPS-интерфейса WebMoney Transfer для Keeper Classic, требует внешней программы генерации электронной подписи по алгоритму SIGN, кроссплатформенная (требуется поддержка Python´ом SSL-сокетов для данной платформы / наличия функции socket.ssl() /).

Прорабатывается вариант реализации процедуры SIGN-подписи как модуль-расширения Python (на C/C++), что позволит отказаться от использования внешней (дополнительной) программы.

Документация для разработчиков пока отсутствует, но есть тестовый файл test.py, в котором проверяются (используются) все реализованные функции.
#!/usr/bin/python2.2 -O
""" WebMoney Transfer

Keeper Classic HTTPS interface test module (c) 2003 eugene_beast
Encoding: cp1251

Вместо xxxxxxxxxxxx подставить wmid & wm purse магазина и клиента.
"""

__version__ = (0, 0, 1, ´alpha´)

from base import WMTError
from wmhttps import ClassicHTTPS as WMThttps
from wmxml import ClassicXML as WMTxml

# WMID клиента
cl_wmid = ´xxxxxxxxxxxx´
# WM-кошелек клиента
cl_wmpurse = ´Zxxxxxxxxxxxx´

# WMID магазина
t = WMThttps(´xxxxxxxxxxxx)
x = WMTxml(´xxxxxxxxxxxx´)
# WM-кошелек магазина
t.shop_wmpurse = x.shop_wmpurse = ´Zxxxxxxxxxxxx´
# период протекции при переводе денег (для TransCreateProt) - 1 день (по умолчанию 3 дня)
t.trans_prtime = x.trans_prtime = 1

# номер счета и номер транзакции перевода в магазине
shop_inv_number = shop_trans_number = 1
#-------------------------------------------------------------------------------
print ´Выписка счета, WMThttps.InvCreate()...´
wm_inv_id = None
try:
wm_inv_id = int(open(´test.wmt_inv_id´, ´r´).readline())
print ´Info: saved WMT Invoice ID found...´
except:
try:
wm_inv_id = t.InvCreate(cl_wmid, 1.21, shop_inv_number, ´descr:test´, ´address:void´)
open(´test.wmt_inv_id´, ´w´).write(str(wm_inv_id))
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
print ´WM Invoice ID: ´+str(wm_inv_id)
#-------------------------------------------------------------------------------
print ´Проверка состояния счета, WMThttps.InvCheck()...´
states = { -2: ´Счет не найден´,\
-1: ´Счет не был оплачен покупателем и покупатель отказался от оплаты счета´, \
0: ´Счет еще не оплачен покупателем´, \
1: ´Счет оплачен, но по операции с протекцией сделки - деньги еще не у магазина, для завершения необходимо ввести код протекции в течение срока протекции магазина´, \
2: ´Счет оплачен, деньги уже перечислены на кошелек магазина´}
try:
state = x.InvCheck(shop_inv_number, cl_wmid, wm_inv_id)
print ´Classic XML: %d: %s´ % (state, states[state])
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
# test - stop right here
import sys
sys.exit(0)
try:
state = t.InvCheck(shop_inv_number, cl_wmid, wm_inv_id)
print ´Classic HTTPS: %d: %s´ % (state, states[state])
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
#-------------------------------------------------------------------------------
print ´Проверка соответствия кошелька идентификатору, WMThttps.CheckWMIDPurse()...´
states = { 0: ´Указанного WM идентификатора не существует´, \
1: ´WM идентификатор существует, но он не имеет указанного кошелька´, \
2: ´WM идентификатор существует и имеет указанный кошелек´ }
print ´%s/%s должен существовать и иметь кошелек´ % (cl_wmid, cl_wmpurse)
try:
state = t.CheckWMIDPurse(cl_wmid, cl_wmpurse)
print state, states[state]
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
wrong_purse = ´Z813374817225´
print ´%s/%s должен существовать но кошелька иметь не должен´ % (cl_wmid, wrong_purse)
try:
state = t.CheckWMIDPurse(cl_wmid, wrong_purse)
print state, states[state]
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
wrong_wmid = ´001000300000´
print ´%s/%s не должен существовать идентификатор´ % (wrong_wmid, wrong_purse)
try:
state = t.CheckWMIDPurse(cl_wmid, wrong_purse)
print state, states[state]
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
#-------------------------------------------------------------------------------
print ´Перевод денег, WMThttps.TransCreate()...´
wm_trans_id = None
try:
wm_trans_id = int(open(´test.wmt_trans_id´, ´r´).readline())
print ´Info: saved WMT money transfer Transaction ID found:´, wm_trans_id
except:
try:
wm_trans_id = t.TransCreate(cl_wmpurse, 0.01, shop_trans_number, ´test:trans´)
print ´Перевод денег произведен, номер транзакции:´, wm_trans_id
open(´test.wmt_trans_id´, ´w´).write(str(wm_trans_id))
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
if wm_trans_id:
try:
status = t.TransCheck(wm_trans_id)
print ´ - проверим успешность перевода...´ + status and ´успешно.´ or ´Error: ´ + err
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
else:
print ´Error: Не могу проверить успешность транзакции перевода - нет номера транзакции.´
#-------------------------------------------------------------------------------
print ´Перевод денег с протекцией, WMThttps.TransCreateProt()...´
wm_trans_id = None
try:
wm_trans_id = int(open(´test.wmt_trans_id_prot´, ´r´).readline())
print ´Info: saved WMT money transfer Transaction ID found:´, wm_trans_id
except:
try:
wm_trans_id = t.TransCreateProt(cl_wmpurse, 1, shop_trans_number, ´test:trans_prot´, ´123456´)
print ´Перевод денег произведен, номер транзакции:´, wm_trans_id
open(´test.wmt_trans_id_prot´, ´w´).write(str(wm_trans_id))
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
if wm_trans_id:
try:
status = t.TransCheck(wm_trans_id)
print ´ - проверим успешность перевода...´ + status and ´успешно.´ or ´Error: ´ + err
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
else:
print ´Error: Не могу проверить успешность транзакции перевода - нет номера транзакции.´
#-------------------------------------------------------------------------------
print ´Отправка сообщения, WMThttps.SendMsg()...´
wm_msg_id = None
try:
wm_msg_id = int(open(´test.wmt_msg_id´, ´r´).readline())
print ´Info: saved WMT Message ID found:´, wm_msg_id
except:
try:
wm_msg_id = t.SendMsg(cl_wmid, unicode(´Привет! Это тестовое сообщение из разрабатываемой мной библиотеки WMT для языка Python. Can you read this?´, ´utf-8´).encode(´cp1251´))
print ´Сообщение послано, номер сообщения:´, wm_msg_id
open(´test.wmt_msg_id´, ´w´).write(str(wm_msg_id))
except WMTError, error:
print ´Error %s:´ % error.errno, error.strerror
#-------------------------------------------------------------------------------
Отзывов от покупателей не поступало