Skip to main content

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

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

Release files for django-mailru-money 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-mailru-money 0.1.2
File Size Uploaded
django-mailru-money-0.1.2.tar.gz 9.6 kB Details

Release files / django-mailru-money-0.1.2.tar.gz

Download URL django-mailru-money-0.1.2.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a1d41aaf8138401b1907bb5bd6fc7cab82512b62831ad0786b6a125f204602b8
BLAKE2b-256 checksum
How to use checksums
139cf1bec2dfc4165e9fc3bbe404e60c1e4061050dc79b50fca2892aeaa27945
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.2 This release

1 release file

0.1.1

1 release file

0.1

1 release file

0.0.3h

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page