/ / Implementando Django-oscar COD - python, django, django-oscar

Implementando Django-oscar COD - python, django, django-oscar

Ha pasado 1 semana y no puedo encontrar la manera de implementar COD en django-oscar. Estaré realmente agradecido si alguien al menos me da una ventaja para realizar esta tarea. He tratado de usar pocos Github repositorios, pero o están desactualizados o no son lo suficientemente claros para ser utilizados con el proyecto. Un buen comienzo será lo suficientemente bueno para que pueda comenzar desde cero. Gracias

Respuestas

1 para la respuesta № 1

Todavía no he implementado COD para Oscar, perohan estado cavando en el código fuente de oscar durante semanas para otra integración de pago no estándar. La parte difícil es que el pago implica las aplicaciones de pago, la cesta, el socio, el pedido y el pago. Mantenga el código fuente del archivo views.py original de pago y cierre, y consúltelo a menudo.

¿Cuáles son los pasos cruciales:

  1. Toda la gestión de pagos se realiza en la Vista de detalles de pago de la aplicación de pago, por lo que necesita una aplicación de pago con bifurcación para comenzar a crear una subclase de Pago de detalles detallada.
  2. Necesitas anular el enviar() método donde creas un número de pedido, congelarla cesta, guárdela en la sesión y envíe la señal de pago previo (solo copie / pegue el código fuente). Debido a que el pago no se realizará aquí, deberá eliminar esa parte de su implementación personalizada de submit () en este momento.
  3. A continuación, deberá continuar como si se hubiera efectuado el pago y llamar al handle_order_placement (), que llamará handle_successful_order ()
  4. Posteriormente, cuando se haya efectuado el pago a la llegada de sus productos, deberá implementar handle_payment () para el número de pedido correspondiente, y active la señal de pago posterior.

De eso se trata en pocas palabras, pero obviamente también se necesita un manejo de excepciones. ¡Espero que esto te ayude a comenzar!


1 para la respuesta № 2

Recientemente he implementado COD en django-oscar. Esto es lo que necesitas hacer.

Usted debe entender cómo el proceso de compra deoscar trabaja. Déjame mostrarte en el bit. Hay una aplicación de "pago y envío" en el Oscar que maneja todos los pagos, ordenando cosas similares. Por lo tanto, en primer lugar, debe bifurcar esa aplicación con el siguiente comando.

./manage.py oscar_fork_app checkout apps/shop

Luego agrégalo a la INSTALLED_APPS en la configuración.

Ahora, si te fijas bien en la aplicación de pago "s views.py, hay esta clase PagoDetallesVista que maneja las cosas de orden y pago de colocación.

Ahora, en su página preview.html, puede agregar la opción de puerta de enlace como "cod". Cuando el usuario selecciona esta opción de "código" y la envía para "realizar pedido", puede verificar el código de puerta de enlace enviado en la handle_payment método de la clase bifurcada 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

Cuando vuelvas de la handle_payment Método, continúa ejecutando el submit Método de la misma clase y realiza el pedido.

Después de eso puedes mencionar en el panel de control que, este producto tiene cash-on-delivery opción. Después de la entrega puede capturar otro evento de pago como "CASH-RECEIVED".

Pregunte si tiene alguna otra consulta.