Forum

Benvenuto!

Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.

Nuovo 'Acquirente di Pagamento' esterno in e-commerce (v12)

Chiuso
Avatar
Gianmarco Conte

La domanda è stata chiusa con motivazione: Duplica il post

da
Gianmarco Conte
- 24/02/2021 09:19:57

Buonasera a tutti,  come da titolo sto provando ad implementare un nuovo payment.acquirer sull'ecommerce di odoo.

Nel momento in cui un cliente clicca sul tasto 'Paga' faccio una super della funzione payment_transaction con una chiamata request(post). Dovrie poi fare redirect ad uno specifico Url restituito dalla mia request.

Ho visto che ad esempio il modulo Paypal funziona diversamente e tramite la funzione '_get_paypal_urls' fa il return di un url fisso(dopo che prepara i dati con paypal_form_generate_values)

Potrei anche io sfruttare il _get_paypal_urls del model 'payment.acquirer' passandogli però un url dinamico? Se si, come?

Spero di essere stato abbastanza chiaro..

Grazie in anticipo a tutti

Avatar
Abbandona
5 Risposte
1
Avatar
Luigi Di Naro
Migliore risposta

Nu ... almeno per me .... se stai ad implementare un nuovo acquirer from scratch implementa il flusso per come richiesto ed usa super solo se effettivamente ha uno strato di astrazione degno di essere usato .... fare un mix del tuo modulo con quello paypal mi sembra una pessima idea. Fare una redirect è abbastanza semplice, puoi usare le funzioni werkezub (o come azzo si scrive) oppure usare il wrapper fornito da odoo. Bene prendere spunto da un modulo esistente ma ragiona con la tua testa ....

Se usi _get_paypal_urls dovresti far dipendere il tuo modulo da quello di paypal ... che senso ha?

Avatar
Abbandona
0
Avatar
Gianmarco Conte
Migliore risposta

Aggiornamento:

Tramite la funzione nome_acquirer_get_form_action_url e _get_nomeacquirer_urls ed una variabile globale riesco a passare correttamente alla funzione render di odoo il link per il redirect dopo aver fatto la mia chiamata request.

Adesso quando faccio redirect al sito ricevo quest'errore:

403 error: csrf token missing

se apro la pagina in nuova scheda però funziona..


Avatar
Abbandona
0
Avatar
Gianmarco Conte
Migliore risposta

Il problema è che odoo tramite la funzione render fa una chiamata POST all'url e non un redirect.

Qualcuna sa come poterlo cambiare e fare redirect?

Avatar
Abbandona
0
Avatar
Gianmarco Conte
Migliore risposta

Grazie Gigi, ma forse mi sono spiegato male..non volevo assolutamente far dipendere il mio modulo da quello paypal, ma stavo guardando un po di codice e _get_ 'acquirers' _urls è un metodo usato dai vari acquirer per passare url di redirect ma da quello che ho capito, fisso.
Mi sa che procederò con una delle due che dicevi.
Thank's

Avatar
Abbandona
0
Avatar
Luigi Di Naro
Migliore risposta

Piu' tardi se riesco gli do un'occhio ...  forse e' gestita con una sorta di "chain of responsability" come delivery ....

Avatar
Abbandona
0
Avatar
Gianmarco Conte
Migliore risposta

C'è una funzione render in payment_acquirer.py nel modulo payment che in poche parole va a prendere l'url per il redirect tramite la funzione 'get_form_action_url'. Quest'ultima chiama 'provider'_get_form_action_url e quindi l'url. Il problema è in quest'ultima che è su payment.acquirer e quindi non ho il sale order..

Avatar
Abbandona