Skip to main content

Vkontakte Merchant API django app

Project description

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 )

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

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

Source Distribution

django-vkontakte-merchant-0.1.tar.gz (13.1 kB view details)

Uploaded Source

File details

Details for the file django-vkontakte-merchant-0.1.tar.gz.

File metadata

File hashes

Hashes for django-vkontakte-merchant-0.1.tar.gz
Algorithm Hash digest
SHA256 02f1045ce00d955a6f01c0fa3fde1163d32dba8b082db70b61c30602eec2f7f1
MD5 00acfd77b5b1bf6a25149bfcfcd51ab9
BLAKE2b-256 a0b6f571b88eae9cccdcc7f11de5ae4e141bbcc4004da6ede40f2a06e26284ee

See more details on using hashes here.

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