django-vkontakte-merchant
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 )
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django-vkontakte-merchant-0.1.tar.gz | 13.1 kB | Without provenance | Details for django-vkontakte-merchant-0.1.tar.gz |
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 |
Security for django-vkontakte-merchant 0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.