/ / Contra reembolso del usuario en django-oscar - python, django, e-commerce, django-oscar

Pago a cuenta del usuario en django-oscar: python, django, e-commerce, django-oscar

Estoy trabajando en el proyecto de e-shop usando django-oscar y estoy tratando de agregar soporte COD. Estoy usando django-oscar-cash-on-delivery.

Hice el pasos, puedes ver mi configuración:

THIRD_PARTY_APPS = [
"jet.dashboard",
"jet",

"axes",
"cashondelivery",
"django_extensions",
"oscarapi",
"paypal",
"payu",
"rest_framework",
"robots",
"widget_tweaks",
"webpack_loader",
]

Y creó una aplicación llamada apps y cargado correctamente:

INSTALLED_APPS = THIRD_PARTY_APPS + PROJECT_APPS + [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.sites",
"django.contrib.messages",
"django.contrib.staticfiles",
"django.contrib.flatpages",
] + get_core_apps(
[
"apps.shipping"
]
)

En appscarpeta he creado un apps.py archivo con este código dentro:

from oscar.app import Shop

# from apps.checkout.app import application as checkout_app
from cashondelivery.app import application as checkout_app


class ApplicationShop(Shop):
checkout_app = checkout_app


application = ApplicationShop()

Pero no puedo entender por qué Oscar no me muestra la plantilla de pago con el método de pago contra reembolso.

Esta es mi carpeta de estructura: enter image description here

Puede alguien ayudarme con esto?

Respuestas

2 para la respuesta № 1

Hay dos formas de integrar efectivo contra entrega en django-oscar proyecto:

  1. Anular la aplicación de pago:
    En este caso, es necesario anular las plantillas de pago porque, de forma predeterminada, Oscar no puede o no puede obtener el cashondelivery plantillas de pago, al menos payment_details. Entonces, primero necesita reemplazar estos archivos de plantilla y luego crear una aplicación y dentro de ella agregar una app.py archivo donde anula la aplicación de pago como cashondelivery documentación dice.

    enter image description here

  2. Crea una vista personalizada y una aplicación de pago:
    Puedes ver en django-oscar-paypal paquete de integración un ejemplo de caja de arena para integrar paypal con Oscar. Puede ver en este paquete que usan una aplicación de pago para reemplazar la aplicación de pago predeterminada; dentro de esta aplicación ellos anulan view.py archivo y app.view expediente; anular plantillas y anular app.py archivo.

Entonces, podemos hacer lo mismo para django-oscar-cash-on-delivery, asi que:
a. Crea una nueva aplicación llamada checkout dentro de apps Aplicación si quieres, o alguna como tu. Esta aplicación solo contendrá las vistas y el archivo de la aplicación.enter image description here

segundo. En el archivo de vistas pondremos el cash-on-delivery puntos de vista Archivo, ahora está en la carpeta sanbox.

do. En el archivo de la aplicación dentro de la caja declaramos la aplicación de la caja:

from oscar.apps.checkout import app
from .views import PaymentDetailsView

class CheckoutApplication(app.CheckoutApplication):
payment_details_view = PaymentDetailsView

application = CheckoutApplication()

re. Finalmente, declaramos nuestra aplicación de pago como aplicación de pago por defecto como documentación dice.
mi. Nos aseguramos de que la aplicación anule la aplicación de desprotección predeterminada, en la configuración:

INSTALLED_APPS = + get_core_apps(
[
"apps.checkout",
"apps.shipping"
]
)

Ahora puede pagar con efectivo en el método de entrega en su proyecto de Oscar.
Recomendamos el uso de la segunda forma porque le permite usar más de un método de pago.

PD:
A qué nueva versión master hemos trasladado el views.py archiva en la carpeta de sandbox, entonces, la primera opción ya no funcionará. Pero, si quieres que vuelva, ¡dinos por favor!