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 apps
carpeta 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:
Puede alguien ayudarme con esto?
Respuestas
2 para la respuesta № 1Hay dos formas de integrar efectivo contra entrega en django-oscar
proyecto:
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 elcashondelivery
plantillas de pago, al menospayment_details
. Entonces, primero necesita reemplazar estos archivos de plantilla y luego crear una aplicación y dentro de ella agregar unaapp.py
archivo donde anula la aplicación de pago comocashondelivery
documentación dice.Crea una vista personalizada y una aplicación de pago:
Puedes ver endjango-oscar-paypal
paquete de integración un ejemplo de caja de arena para integrarpaypal
conOscar
. 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 anulanview.py
archivo yapp.view
expediente; anular plantillas y anularapp.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.
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!