Skip to main content

Этот пакет позволяет легко интегрировать платежную систему Click через фреймворк Django в Python

Project description

banner

Downloads Downloads Downloads Downloads Downloads

Интеграция сервиса онлайн оплаты CLICK SHOP API через фреймворк Django в Python

С помощью пакет python-click вы сможете очень легко интегрировать платежную систему CLICK SHOP API. Используйте версию 0.1 для интеграции CLICK SHOP API. В этом руководстве показано, как интегрировать систему оплаты CLICK SHOP API. Через этот «CLICK SHOP API» вы сможете получать платежи за различные товары, услуги и покупки в Интернет Магазине. Более подробная информация об интеграции находится на официальной документации OOO "Click"

Необходимые пакеты

Django - свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC.

Django REST framework - это мощный и гибкий инструментарий для создания веб-приложений.

Установка

Установите с помощью pip, включая любые дополнительные пакеты, которые вы хотите...

pip install python-click==0.1

...или клонируйте проект с github

git clone https://github.com/yakubov9791999/python-click.git

Создадим новое приложение с названием basic

python manage.py startapp basic

Имя приложении не обязательно должно быть basic. Вы можете использовать любое имя, которое хотите

Поместите это в settings.py

INSTALLED_APPS = [
    ...
    'pyclick',
    'rest_framework',
    'basic',
]

CLICK_SETTINGS = {
    'service_id': "<Ваш сервис ID>",
    'merchant_id': "<Ваш merchant ID>",
    'secret_key': "<Ваш секретный ключ>",
    'merchant_user_id': "<Ваш merchant user ID>",
}

Примечание: Эти информации будет предоставлена ​​вам после того, как вы подписали контракт с OOO «Click»

В приложении basic в models.py создайте новую модель ClickOrder, с помощью этой модели мы можем создать заказ

from django.db import models

class ClickOrder(models.Model):
    is_paid = models.BooleanField(default=False)
    amount = models.DecimalField(decimal_places=2, max_digits=12)

В приложении basic создайте serializers.py, потом поместите эти коды

from rest_framework import serializers
from .models import ClickOrder

class ClickOrderSerializer(serializers.ModelSerializer):
    class Meta:
        model = ClickOrder
        fields = ["amount", "is_paid"]

В приложении basic в views.py создайте новый класс CreateClickOrderView,OrderCheckAndPayment и OrderTestView. C помощью CreateClickOrderView класса мы создадим заказ, после этого система Click проверяет наш заказ с помощью классы OrderCheckAndPayment и OrderTestView. Чтобы получить больше информации, переходите по этой ссылке Документация Click.

from django.shortcuts import redirect
from rest_framework.generics import CreateAPIView
from basic import serializers
from basic.models import ClickOrder
from pyclick import PyClick
from pyclick.views import PyClickMerchantAPIView


class CreateClickOrderView(CreateAPIView):
    serializer_class = serializers.ClickOrderSerializer

    def post(self, request, *args, **kwargs):
        amount = request.POST.get('amount')
        order = ClickOrder.objects.create(amount=amount)
        return_url = 'http://127.0.0.1:8000/'
        url = PyClick.generate_url(order_id=order.id, amount=str(amount), return_url=return_url)
        return redirect(url)


class OrderCheckAndPayment(PyClick):
    def check_order(self, order_id: str, amount: str):
        if order_id:
            try:
                order = ClickOrder.objects.get(id=order_id)
                if int(amount) == order.amount:
                    return self.ORDER_FOUND
                else:
                    return self.INVALID_AMOUNT
            except ClickOrder.DoesNotExist:
                return self.ORDER_NOT_FOUND

    def successfully_payment(self, order_id: str, transaction: object):
        """ Эта функция вызывается после успешной оплаты """
        try:
            order = ClickOrder.objects.get(id=order_id)
            order.is_paid = True
            order.save()
        except ClickOrder.DoesNotExist:
            print(f"no order object not found: {order_id}")


class OrderTestView(PyClickMerchantAPIView):
    VALIDATE_CLASS = OrderCheckAndPayment

Добавьте следующее в свой корневой каталог urls.py файл.

from django.urls import include

urlpatterns = [
    ...
    path('', include('basic.urls')),
]

В приложении basic создайте urls.py, потом поместите эти коды

from django.urls import path
from basic import views

urlpatterns = [
    path('', views.CreateClickOrderView.as_view()),
    path('click/transaction/', views.OrderTestView.as_view()),
]

Выполните команды makemigrations и migrate

python manage.py makemigrations
python manage.py migrate

Теперь вы можете создать заказ в своем браузере по адресу http://127.0.0.1:8000/ . Получим сумму заказа 500 сумов.

Предупреждение: Если вы создадите сумму по-другому, произойдет ошибка при локальном тестировании через тестовое программное обеспечение.

Обратите внимание, что после создания заказа мы перейдем на сайт http://my.click.uz

Но нам нужно сначала проверить заказ локально для этого мы можем использовать данное программное обеспечение. Мы просто получаем номер заказа и закрываем вкладку, начинаем проверку локально через программное обеспечение.

Предупреждение: Если вы используете базу данных SQLite, вы можете получить ошибку OverflowError, поэтому мы рекомендуем использовать другую базу данных. Например: MySQL или PostgreSQL


Введите в Prepare URL и Complete URL http://localhost:8000/click/transaction/?format=json. Заполните service_id, merchant_user_id, secret_key информацией, предоставленной "CLICK", в merchant_trans_id введите номер заказа. После этого начинайте проверить заказа.

Это программное обеспечение проверяет заказ с помощью нескольких запросов. Всего существует 15 сценариев. В каждом сценарии отправляется разная информация, и заказ проверяется. Подробнее здесь

Примечание: После сценариев 7 и 11 программа останавливается. Выберите следующий сценарий и продолжите тестирование

Если у вас успешно прошли 15 сценариев, то ваши коды готовы к интеграции с платежной системой CLICK.

Для более подробной информации, production интеграция с системой CLICK, настройка личного кабинета и для проверки заказа через систему Merchant CLICK, вы можете посмотреть это видео

Watch the video

Спасибо за внимание!

Автор

Sirojiddin Yakubov

Социальные сети

Подпишитесь на нас, чтобы получать больше новостей о веб-программировании:
YouTube | Instagram | Facebook | TikTok | Telegram

Project details


Download files

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

Source Distribution

python-click-0.1.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_click-0.1-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file python-click-0.1.tar.gz.

File metadata

  • Download URL: python-click-0.1.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for python-click-0.1.tar.gz
Algorithm Hash digest
SHA256 bdb008aab1ca7ee0d1b7461d51cee8e77e3ad60d426562426dc909ac01acfa62
MD5 c4771dbe44717e2ac397f6a93c37395a
BLAKE2b-256 24c3361dd4d2f3f971222f733b05ef1f32de4e3d3087a8ed248f8cc9ced29d01

See more details on using hashes here.

File details

Details for the file python_click-0.1-py3-none-any.whl.

File metadata

  • Download URL: python_click-0.1-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for python_click-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9adc6cf4f2e97defd7a050ab8e853dee9fd062473e1fda7c1b0450a80618c3e5
MD5 cc9ed65457a250ea3ff92087b477dbf5
BLAKE2b-256 ff6f0b8d0ba95557ceb4e981c2ec4fb1359bb0bb5ca9af16aaf51d46679cbba8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page