Skip to main content

django-vkontakte-merchant - приложение для интеграции платежной системы ВКонтакте (Merchant API) в проекты на Django.

Для исползования следует ознакомиться с официальной документацией по Merchant API (http://vkontakte.ru/developers.php?id=-1_12904887&s=1).

Установка

$ pip install -U django-vkontakte-merchant vkontakte

Потом следует добавить ‘merchant_api’ в INSTALLED_APPS и выполнить

$ python manage.py syncdb

или, если используется South,

$ python manage.py migrate

Настройка

В settings.py нужно указать следующие настройки:

  • MERCHANT_API_SHOP_ID - id магазина

  • MERCHANT_API_SHOP_SECRET_KEY - секретный ключ магазина

  • MERCHANT_API_ORDER_FORMS - (не обязательно) модуль с формой для обработки заказа

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

Написание логики обработки заказа

django-vkontakte-merchant не берет на себя ответственность за логику обработки заказа, т.к. эта логика может отличаться от сайта к сайту. Вместо этого можно реализовать любую логику, предоставив свою форму обработки уведомлений (унаследовав ее от базовой, в которой уже выполнена основная работа по проверке данных).

Для того, чтобы изменить логику обработки данных, следует указать модуль с формой обработки заказа в settings.py:

# settings.py
MERCHANT_API_ORDER_FORMS = 'orders.forms'

В модуле orders.forms должна быть форма с названием OrderForm. Ее удобно унаследовать от merchant_api.forms.OrderForm. Пример:

# coding: utf-8
# my_project/orders/forms.py

from django import forms
from merchant_api.forms import OrderForm as MerchantOrderForm
from goods.models import Product, Purchase

class OrderForm(MerchantOrderForm):

    def clean_currency(self):
        # например, магазин поддерживает только рубли
        currency = self.cleaned_data['currency']
        if currency != '643':
            raise forms.ValidationError('Currencies other than RUR are not supported')
        return currency

    def clean_notification_type(self):
        # простой магазин, обрабатываем только уведомления
        # типа "Изменение статуса заказа"
        tp = self.cleaned_data['notification_type']
        if not tp.startswith('order-state-change'):
            raise forms.ValidationError('This notification type is not supported.')
        return tp

    def clean_item(self, item):
        # переопределяйте этот метод, чтобы проверить, что заказаны
        # правильные позиции по нужной цене
        try:
            product = Product.objects.get(pk = item['item_id'])
            if product.price != int(item['price']):
                raise forms.ValidationError("Price is invalid", 22)
            if not product.have_enough(int(item['quantity'])):
                raise forms.ValidationError("Can't buy so many", 24)
        except Product.DoesNotExist:
            raise forms.ValidationError("Invalid product id.")

    def save(self, *args, **kwargs):
        # тут можно выполнить любые доп. действия по обработке заказа
        vk_order = super(OrderForm, self).save(*args, **kwargs)
        for item in vk_order.items.all():
            for x in range(0, item.quantity):
                Purchase.objects.create(
                    product_id = item.item_id,
                    order = vk_order,
                    user = vk_order.django_user
                )
        return vk_order

urls.py

Для приема платежей следует подключить merchant_api.urls:

urlpatterns = patterns('',
    #...
    url(r'^merchant/', include('merchant_api.urls')),
    #...
)

После этого следует указать адрес обратного вызова в настройках магазина (http://<домен>/merchant/callback в данном примере).

Клиентская часть

Инструкцию по написанию клиентской части можно найти в официальной документации по Merchant API ( http://vkontakte.ru/developers.php?id=-1_12904887&s=1 )

Release files for django-vkontakte-merchant 0.1

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-vkontakte-merchant 0.1
File Size Uploaded
django-vkontakte-merchant-0.1.tar.gz 13.1 kB Details

Release files / django-vkontakte-merchant-0.1.tar.gz

Download URL django-vkontakte-merchant-0.1.tar.gz
Size 13.1 kB
Tags Source
SHA-256 checksum
How to use checksums
02f1045ce00d955a6f01c0fa3fde1163d32dba8b082db70b61c30602eec2f7f1
BLAKE2b-256 checksum
How to use checksums
a0b6f571b88eae9cccdcc7f11de5ae4e141bbcc4004da6ede40f2a06e26284ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1 This release

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