/ / Реалізація КПК Джанго-Оскар - пітон, джанго, джанго-оскар

Реалізація Django-oscar COD - python, django, django-oscar

Зараз минуло 1 тиждень, і я не можу розібратися, як реалізувати ХПК у джанго-оскарі. Я буду дуже вдячний, якщо хтось хоча б дасть мені початок виконувати це завдання. Я намагався використовувати декілька Гітуб сховища, але вони або застарілі, або недостатньо чіткі, щоб використовуватись із проектом. Головний старт буде досить хорошим для мене, щоб почати з нуля. Спасибі

Відповіді:

1 для відповіді № 1

Я ще не застосував COD для «Оскара», але явже кілька тижнів копають у вихідному коді Oscar для чергової нестандартної інтеграції платежів. Важкою частиною є те, що оплата включає замовлення, кошик, партнера, програми замовлення та оплати. Тримайте вихідний код оригінального файлу оформлення замовлення view.py близько та посилайтеся на нього часто.

Отже, які важливі кроки:

  1. Вся обробка платежів відбувається в програмі CheckDetailsView для оформлення замовлення, тому для початку вам потрібно застосувати роздрібну програму оформлення замовлення, щоб створити спеціальний підклас PaymentDetailsView.
  2. Потрібно перевизначити submit () метод, коли ви створюєте номер замовлення, заморожуйтекошик, збережіть його в сеансі і надішліть сигнал попередньої оплати (просто скопіюйте / вставте вихідний код). Оскільки оплата тут не буде здійснена, вам потрібно буде видалити цю частину зі своєї спеціальної реалізації submit () у цей момент.
  3. Потім вам доведеться продовжувати, як якщо б відбувся платіж, і дзвонити handle_order_placement (), які будуть дзвонити handle_successful_order ()
  4. Після цього, коли оплата відбудеться по прибуттю вашої продукції, вам потрібно буде реалізувати обработка_платеж () для відповідного номера замовлення та запустити сигнал післяплати.

Це про це у двох словах, але очевидно, що також потрібна обробка виключень.


1 для відповіді № 2

Нещодавно я впроваджував COD на django-oscar. Ось, що вам потрібно зробити.

Ви повинні зрозуміти, як відбувається процес оформлення касироботи Оскара. Дозвольте показати вам трохи. В Оскарі є одне додаток "оформлення замовлення", яке обробляє всі платежі, розміщуючи замовлення, як наповнення. Отже, перш за все вам потрібно роздрібнити цю програму із командою нижче.

./manage.py oscar_fork_app checkout apps/shop

Потім додайте його в INSTALLED_APPS в налаштуваннях.

Тепер, якщо ви уважно придивитесь до програми оформлення каси views.py, є цей клас PaymentDetailsView який обробляє замовлення та оплату.

Тепер на сторінці preview.html ви можете додати параметр шлюзу як "треска". Коли користувач вибере цю опцію "треска" та подає заявку на "замовлення на замовлення", ви можете перевірити надісланий код шлюзу на handle_payment метод класу роздвоєних PaymentDetailsView.

CorePaymentDetailsView = get_class("checkout.views", "PaymentDetailsView")

class PaymentDetailsView(CorePaymentDetailsView):
"""
currently used to redirect to preview page
Handles the payment and cod.
"""
def handle_payment(self, order_number, total, **kwargs):
self.amount = float(total.excl_tax)
gateway_code = self.request.POST.get("gateway_code", None)
if gateway_code and gateway_code == "cash-on-delivery":
# Record payment source and event
source_type, is_created = SourceType.objects.get_or_create(
name="cash-on-delivery")
source = source_type.sources.model(
source_type=source_type,
amount_allocated=total.excl_tax)
self.add_payment_source(source)
self.add_payment_event("CREATED", total.excl_tax)
return

Коли ви повернетесь із handle_payment метод, він продовжує виконувати submit метод того ж класу і розміщує замовлення.

Після цього на інформаційній панелі ви можете зазначити, що цей продукт має cash-on-delivery варіант. Після доставки ви можете зафіксувати ще одну подію платежу як "CASH-RECEIVED".

Запитайте, чи є якісь інші запити.