/ / Implementazione di Django-oscar COD - python, django, django-oscar

Implementazione di Django-oscar COD - python, django, django-oscar

È passata 1 settimana e non riesco a capire come implementare COD in django-oscar. Sarò davvero grato se qualcuno mi darà almeno un vantaggio per portare a termine questo compito. Ho provato a usarne pochi Github repository ma sono obsoleti o non abbastanza chiari da poter essere usati con il progetto. Un vantaggio iniziale mi consentirà di iniziare da zero. Grazie

risposte:

1 per risposta № 1

Non ho ancora implementato il COD per Oscar, ma iosono stati scavando nel codice sorgente oscar per settimane per un'altra integrazione di pagamento non standard. La parte più difficile è che il pagamento riguarda le app di pagamento, il carrello, il partner, l'ordine e il pagamento. Mantenere il codice sorgente del file view.py checkout originale chiuso e fare spesso riferimento a esso.

Quindi quali sono i passaggi cruciali:

  1. Tutta la gestione dei pagamenti avviene in PaymentDetailsView dell'applicazione di checkout, quindi è necessario disporre di un'app di checkout forfettaria per creare una sottoclasse di PaymentDetailsView personalizzata.
  2. Devi scavalcare il Sottoscrivi() metodo in cui si crea un numero d'ordine, bloccoil cestino, salvarlo nella sessione e inviare il segnale pre_payment (basta copiare / incollare il codice sorgente). Poiché il pagamento non verrà effettuato qui, sarà necessario rimuovere la parte dall'implementazione di invio personalizzato () a questo punto.
  3. Dovrai quindi continuare come se il pagamento è avvenuto, e chiamare handle_order_placement (), che chiamerà handle_successful_order ()
  4. Successivamente, quando il pagamento è avvenuto all'arrivo dei tuoi prodotti, dovrai implementarli handle_payment () per il numero di ordine pertinente e attivare il segnale post_payment.

Questo è tutto sommato, ma ovviamente c'è anche bisogno di una gestione delle eccezioni. Spero che questo ti possa iniziare!


1 per risposta № 2

Ho recentemente implementato COD su django-oscar. Ecco cosa devi fare.

Dovresti capire come funziona il processo di checkout dioscar funziona. Lascia che ti mostri un po '. C'è un'app "checkout" nell'oscar che gestisce tutto il pagamento, ponendo ordine come roba. Quindi, prima di tutto è necessario forgiare quell'app con il comando di sotto.

./manage.py oscar_fork_app checkout apps/shop

Quindi aggiungilo nel INSTALLED_APPS alle impostazioni.

Ora, se si guarda da vicino l'app di pagamento "s views.py, c'è questa classe PaymentDetailsView che gestisce l'ordine di piazzamento e il pagamento.

Ora, nella tua pagina preview.html, puoi aggiungere l'opzione gateway come "cod". Quando l'utente seleziona questa opzione "cod" e la invia per "ordine di luogo", è possibile verificare il codice gateway inviato al handle_payment metodo della classe biforcuta 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

Quando ritorni dal handle_payment metodo, continua a eseguire il submit metodo della stessa classe e inserisce l'ordine.

Dopo di che puoi menzionare sul cruscotto che, questo prodotto ha cash-on-delivery opzione. Dopo la consegna puoi catturare un altro evento di pagamento come "CASH-RECEIVED".

Chiedi se hai altre domande.