Инструменты пользователя

Инструменты сайта


django

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следущая версия
Предыдущая версия
Последняя версия Both sides next revision
django [2011/08/02 10:36]
admin создано
django [2011/09/02 10:14]
admin
Строка 3: Строка 3:
 Пользователи других фреймворков могут написать своё приложение,​ специально для этого основная функциональность собрана в файле `common.py`. \\ Пользователи других фреймворков могут написать своё приложение,​ специально для этого основная функциональность собрана в файле `common.py`. \\
 Фреймворко-зависимую часть (запросы,​ систему хранения,​ обработку форм, оповещение менеджеров) нужно будет переписать,​ взяв за основу текущий код.\\ ​ Фреймворко-зависимую часть (запросы,​ систему хранения,​ обработку форм, оповещение менеджеров) нужно будет переписать,​ взяв за основу текущий код.\\ ​
 +{{:​onpay-django1.png|}}\\
 +{{:​onpay-django2.png|}}\\
    
 ====Схема работы Onpay.ru через фреймворк Django==== ====Схема работы Onpay.ru через фреймворк Django====
Строка 11: Строка 13:
 ====Настройки в личном кабинете Onpay.ru для работы с Django==== ====Настройки в личном кабинете Onpay.ru для работы с Django====
  
-В личном ​кабинете Onpay.ru (Настройки магазина) необходимо настроить параметры API IN: +В [[http://​wiki.onpay.ru/​doku.php?​id=cabinet|Личном ​Кабинете]] Onpay.ru (Настройки магазина) необходимо настроить параметры API IN: 
    ​Уведомлять по API - Да     ​Уведомлять по API - Да 
    ​Проверять MD5 на ссылках - Да (не обязательно) ​    ​Проверять MD5 на ссылках - Да (не обязательно) ​
    URL API: http://​вашдомен/​onpay/​api/​ (можно переопределить через URLconf) ​    URL API: http://​вашдомен/​onpay/​api/​ (можно переопределить через URLconf) ​
    ​Пароль для API IN: ksjgJskLJds - ваш секретный код, который будет нужен при настройках платежного модуля Onpay.ru в Django    ​Пароль для API IN: ksjgJskLJds - ваш секретный код, который будет нужен при настройках платежного модуля Onpay.ru в Django
- +{{:​onpay-django3.png|}}\\  
 ====Установка Django-Onpay==== ====Установка Django-Onpay====
  
Строка 53: Строка 56:
  
    "​use_balance_table":​ True,     "​use_balance_table":​ True, 
-   # записывать в таблицу баланса. ​Без нее если честно не пробовал ​+   # записывать в таблицу баланса. ​
  
    "​pay_mode":​ "​fix", ​    "​pay_mode":​ "​fix", ​
Строка 66: Строка 69:
    "​enable_email_notify":​ None,     "​enable_email_notify":​ None, 
    # если включить опцию, при платежах будет отправлен email     # если включить опцию, при платежах будет отправлен email 
-   # через функцию email_managers ​ +   # через функцию email_managers ​ 
- +
-   "​enable_footman_update_balance":​ None,  +
-   # это только для примера и включать ни в коем случае нельзя!  +
-   # при получении платежа накидывается баланс на счет пользователя  +
-   # из профиля другого приложения (не путать с таблицей Balance)  +
-   # по аналогии стоит написать свою функцию и подключить через сигнал,​  +
-   # если вам требуется хранить счет пользователя в другом месте  +
- +
-   "​new_operation_status":​ 0,  +
-   # опция довольно бесполезная,​ оставил так как была в рхршных примерах ​+
  
    "​debug":​ None,     "​debug":​ None, 
-   # на данный момент отправляет через mail_admins запрос от onpay +   # на данный момент отправляет через mail_admins запрос от Onpay.ru ​
  
-Чтобы встроить платежную систему в свой дизайн надо переопределить шаблоны ​ из папки onpay. ​Надеюсь с этим справитесь без проблем. ​ +Чтобы встроить платежную систему в свой дизайн надо переопределить шаблоны ​ из папки onpay.\\  
- +\\ 
-Можно вместо include в urls.py прописать свои роуты к своим views, ​ +Можно вместо include в urls.py прописать свои роуты к своим views, если требуется какие-то изменения. ​\\ 
-если требуется какие-то изменения.  +\\ 
- +Можно поменять параметры после инициализации IframeGenerator: ​\\ 
-Можно поменять параметры после инициализации IframeGenerator:​  +   ​iframe_generator = IframeGenerator()  
- +   ​iframe_generator.set_f(3)  
-iframe_generator = IframeGenerator()  +   ​iframe_generator.width = 100500  
-iframe_generator.set_f(3)  +   ​iframe_generator.pay_mode = "​free"​  
-iframe_generator.width = 100500  +\\ 
-iframe_generator.pay_mode = "​free"​  +После оплаты отправляется сигнал `onpay.signals.refilled_balance`,​ если на него подписать свою функцию,​ можно добиться любой функциональности. Примеры смотрите в файле `signals.py`. \\ 
- +\\ 
-После оплаты отправляется сигнал `onpay.signals.refilled_balance`, ​ +Ну и, наконец,​ можно изменить исходные тексты и прислать hg патчи нам - по возможности добавим в репозиторий
-если на него подписать свою функцию,​ можно добиться любой функциональности. ​ +
-Примеры смотрите в файле `signals.py`. ​+
  
-Ну и, наконец,​ можно изменить исходные тексты и прислать hg патчи мне  +   common.py для работы с dom.minidom
-- по возможности добавлю в репозиторий. Комментарии писались по большей части  +
-на русском,​ так как сама платежная система русская.  +
-common.py для работы с dom.minidom+
  
-# coding: UTF-8 +   # coding: UTF-8 
-import urllib +   ​import urllib 
-from hashlib import md5 +   ​from hashlib import md5 
-#from lxml import etree +   ​#from lxml import etree 
-from xml.dom.minidom import getDOMImplementation+   ​from xml.dom.minidom import getDOMImplementation
  
-from onpay.conf import get_constant+   from onpay.conf import get_constant
  
-class IframeGenerator(object):​ +   class IframeGenerator(object):​ 
-    def __init__(self):​ +       ​def __init__(self):​ 
-        self.pay_mode = get_constant("​pay_mode",​ "​fix"​) +           ​self.pay_mode = get_constant("​pay_mode",​ "​fix"​) 
-        self.currency = get_constant("​currency",​ "​RUR"​) +           ​self.currency = get_constant("​currency",​ "​RUR"​) 
-        self.convert ​ = get_constant("​convert",​ "​yes"​) +           ​self.convert ​ = get_constant("​convert",​ "​yes"​) 
-        self.url_success = get_constant("​url_success"​) +           ​self.url_success = get_constant("​url_success"​) 
-        self.private_code = get_constant("​private_code"​) +           ​self.private_code = get_constant("​private_code"​) 
-        self.onpay_login = get_constant("​onpay_login"​) +           ​self.onpay_login = get_constant("​onpay_login"​) 
-        self.set_f(get_constant("​f"​))+           ​self.set_f(get_constant("​f"​))
  
     def iframe_url_params(self,​ operation_id,​ summ, email=None):​     def iframe_url_params(self,​ operation_id,​ summ, email=None):​
Строка 170: Строка 158:
         return u'<​iframe %s></​iframe>'​ % (u" "​.join(options_gen))         return u'<​iframe %s></​iframe>'​ % (u" "​.join(options_gen))
  
-def answer(type,​ code, pay_for, order_amount,​ order_currency,​ text):+   def answer(type,​ code, pay_for, order_amount,​ order_currency,​ text):
     "​функция выдает ответ для сервиса onpay в формате XML на чек запрос"​     "​функция выдает ответ для сервиса onpay в формате XML на чек запрос"​
     array_for_md5 = (type, pay_for, order_amount,​ order_currency,​ str(code),     array_for_md5 = (type, pay_for, order_amount,​ order_currency,​ str(code),
Строка 200: Строка 188:
  
  
-def answer_dict(POST,​ code, text):+    ​def answer_dict(POST,​ code, text):
     "​Shortcut for call answer with POST or form dict as parameter"​     "​Shortcut for call answer with POST or form dict as parameter"​
     return answer(     return answer(
Строка 211: Строка 199:
     )     )
  
-def answerpay(type,​ code, pay_for, order_amount,​ order_currency,​ text, onpay_id):+   def answerpay(type,​ code, pay_for, order_amount,​ order_currency,​ text, onpay_id):
     "​функция выдает ответ для сервиса onpay в формате XML на pay запрос"​     "​функция выдает ответ для сервиса onpay в формате XML на pay запрос"​
  
Строка 244: Строка 232:
     #                        xml_declaration=True,​ encoding='​UTF-8'​)     #                        xml_declaration=True,​ encoding='​UTF-8'​)
  
-def answerpay_dict(request_dict,​ code, text):+   def answerpay_dict(request_dict,​ code, text):
     "​Shortcut for call answerpay with POST or form dict as parameter"​     "​Shortcut for call answerpay with POST or form dict as parameter"​
     return answerpay(     return answerpay(
Строка 255: Строка 243:
         request_dict.get('​onpay_id'​),​         request_dict.get('​onpay_id'​),​
     )     )
- 
-To-Do 
- 
-То, что хотелось бы сделать (но врядли у меня дойдут руки до этого, ​ 
-"и так работает"​): ​ 
- 
-1. Опция для английского языка фрейма ​ 
-1. Более качественная поддержка fix платежей (я концентрировался на free)  
-1. Поддержка скинов для одной валюты ​ 
-1. Добавить сигналы на все случаи жизни ​ 
-1. Сделать `setup.py` и установку через `pip`  
-1. Автоматические тесты ​ 
-1. Еще несколько фич, которые в данный момент не помню ​ 
  
  
-Автор: Денис Бурый  +Автор: Денис Бурый\\  
-Лицензия:​ MIT +Лицензия:​ MIT\\ 
django.txt · Последние изменения: 2014/03/26 07:15 — admin