django-yandex-kassa

Integrating django project with yandex-kassa


Keywords
django
License
MIT
Install
pip install django-yandex-kassa==0.9.15

Documentation

django-yandex-kassa

ДокумСнтация ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

  1. ИдСм на kassa.yandex.ru
  2. РСгистрируСмся
  3. БозваниваСмся с сапортом, отправляСм сканы, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ SCID & ShopID

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ (ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏ. ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ Ρ‡Π΅Ρ€Π΅Π·

  • Π‘Π±Π΅Ρ€, Ρ‚.ΠΊ. ΠΎΠ½ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈ, Π²ΠΎΠΎΠ±Ρ‰Π΅, особСнный;
  • ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ: Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ 'ΠΎΠ³ΠΎ способа ΠΎΠΏΠ»Π°Ρ‚Ρ‹ сайт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±ΠΎΡ€ΠΎΡ‚ΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ 30Ρ‚Ρ€ Π² мСсяц +ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° оговариваСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ;
  • QiWi;
  • MasterPass.

Установка

  1. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚:

    pip install django-yandex-kassa
  2. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ yandex_kassa Π² settings.INSTALLED_APPS:

    INSTALLED_APPS = (
        ...
        'yandex_kassa',
        ...
    )
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ с Π‘Π”:

    python manage.py syncdb
  4. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² urls.py:

    urlpatterns = patterns('',
        # ...
        url(r'^kassa/', include('yandex_kassa.urls')),
    )
  5. Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ Π² settings ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

    YANDEX_KASSA_DEBUG = False
    YANDEX_KASSA_SCID = 123123
    YANDEX_KASSA_SHOP_ID = 123123
    YANDEX_KASSA_SHOP_PASSWORD = 'password'
    
    YANDEX_KASSA_DISPLAY_FIELDS = ['paymentType', 'cps_email', 'cps_phone']
    
    YANDEX_KASSA_CALLBACK_URL = '/kassa/callback/'
    YANDEX_KASSA_FAIL_URL = '/kassa/fail/'
    YANDEX_KASSA_SUCCESS_URL = '/kassa/success/'
    
    YANDEX_KASSA_PAYMENT_TYPE = ['ab', 'ac', 'gp', 'pb', 'pc', 'wm']
  6. Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ЯндСкс ΠšΠ°ΡΡΡ‹ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅ натсрйоки для ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ:

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

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования

  1. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ прСдставлСниС ΠΈ модСль Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈ Π·Π°ΠΊΠ°Π·Π°:

    # -*- coding: utf-8 -*-
    
    # ...
    
    class HomeView(TemplateView):
        template_name = 'home.html'
    
        def get_context_data(self, **kwargs):
            count = randint(1, 3)
            item = Item.objects.all().order_by('?').first()
            amount = count * item.price
    
            payment = Payment(order_amount=amount)
            payment.save()
    
            order = Order(item=item, count=count,
                          amount=amount, payment=payment)
            order.save()
    
            ctx = super(HomeView, self).get_context_data(**kwargs)
            ctx['order'] = order
            ctx['form'] = PaymentForm(initial=dict(orderNumber=order.uuid, sum=amount,
                                                   customerNumber=payment.customer_number))
            return ctx
    # -*- coding: utf-8 -*-
    
    # ...
    
    class Item(models.Model):
        name = models.CharField('НаимСнованиС', max_length=32)
        price = models.PositiveIntegerField('Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ')
    
        def __unicode__(self):
            return truncatechars(self.name, 16)
    
        class Meta:
            verbose_name = 'Π’ΠΎΠ²Π°Ρ€'
            verbose_name_plural = 'Π’ΠΎΠ²Π°Ρ€Ρ‹'
    
    
    class Order(models.Model):
        uuid = models.CharField('ID Π·Π°ΠΊΠ°Π·Π°', max_length=64,
                                default=get_uuid, primary_key=True)
        item = models.ForeignKey('app.Item', verbose_name='Π’ΠΎΠ²Π°Ρ€')
        count = models.PositiveIntegerField('Кол-во', default=1)
        payment = models.ForeignKey('yandex_kassa.Payment',
                                    verbose_name='ΠŸΠ»Π°Ρ‚Π΅ΠΆ')
        amount = models.PositiveIntegerField('Π‘ΡƒΠΌΠΌΠ° Π·Π°ΠΊΠ°Π·Π°')
    
        class Meta:
            verbose_name = 'Π—Π°ΠΊΠ°Π·'
            verbose_name_plural = 'Π—Π°ΠΊΠ°Π·Ρ‹'
  2. Π¨Π°Π±Π»ΠΎΠ½ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹:

    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
        <form action="{{ form.target }}"
              method="post" class="form" name="ShopForm" id="payment_form_id">
            {% bootstrap_form form %}
    
            {% buttons %}
                <button type="submit" class="btn btn-success">
                    {% bootstrap_icon "shopping-cart" %}
                    ΠžΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ "{{ order.item.name }}" x{{ order.count }} ΡˆΡ‚
                </button>
            {% endbuttons %}
        </form>
    </div>