Skip to main content

Приложение для подключения сайта к деньгам@mail.ru

Project description

django-mailru-money - это приложение для подключения django-сайта к платежной системе деньги@mail.ru.

Лицензия - MIT. Поддерживается python 2.6, 2.7 и 3.2; django 1.3 и 1.4.

Установка

$ pip install django-mailru-money

В settings.py пропишите данные своего магазина:

MAILRU_MONEY_SHOP_ID = 'my_shop_id'
MAILRU_MONEY_SECRET_KEY = 'my_secret_key'

Подключите обработчик приема платежей в urls.py:

urlpatterns = patterns('',
    # ...
    url(r'^mailru-money/', include('mailru_money.urls')),
    # ...
)

ResultURL (который нужно сообщить в money.mail.ru) в этом случае будет http://your-site.com/mailru-money/result/.

Затем добавьте 'mailru_money' в INSTALLED_APPS и выполните syncdb (migrate, если используется South).

В INSTALLED_APPS также должны быть 'django.contrib.auth' и 'django.contrib.contenttypes'.

Использование

На странице оплаты используйте mailru_money.forms.MailruOrderForm для вывода формы оплаты и формирования заказа:

# views.py
from django.shortcuts import get_object_or_404, render
from mailru_money.forms import MailruOrderForm
from myapp.models import Item

@login_required
def pay(request, item_id)

    # товар, который будем оплачивать
    item = get_object_or_404(Item, id=item_id)

    # создаем заказ
    form = MailruOrderForm(
        amount = item.price,
        description = item.description,
        user = request.user
        pay_for = item,
    )

    return render(request, 'myapp/pay.html', {'form': form})

В шаблоне требуется сформировать форму оплаты:

{# myapp/pay.html #}
{# ... #}

<form method='post' action='{{ form.ACTION }}'>
    {{ form }}
    <input type='submit' value='Оплатить через Деньги@mail.ru'>
</form>

{# ... #}

Обратите внимание, что {% csrf_token %} использовать не нужно. Форма будет выведена как набор скрытых полей.

Обработку платежей можно осуществлять в сигнале mailru_money.signals.order_status_changed:

from mailru_money.models import MailruOrder
from mailru_money.signals import order_status_changed

from myapp.models import Item

def mailru_payment_received(sender, order, old_status, **kwargs):
    item = order.pay_for
    if order.state == MailruOrder.PAID:
        item.deliver_to(order.user)
    elif order.state == MailruOrder.REJECTED:
        item.unblock()

order_status_changed.connect(mailru_payment_received)

Сигнал шлется только когда у заказа изменился статус. Оплаченный заказ при этом стать неоплаченным не может.

django-mailru-money поддерживает и другую схему работы (можно не использовать встроенные средства для контроля заказов). См. исходный код, если описанная выше схема не устраивает.

Разработка

Разработка идет на bitbucket.org и github.com:

Баг-трекер - на битбакете: https://bitbucket.org/kmike/django-mailru-money/issues/new

Для запуска тестов склонируйте репозиторий, установите tox и запустите

$ tox

из корня репозитория.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-mailru-money-0.1.1.tar.gz (9.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page