Woocommerce: pagina pagamento ordine senza login

Descrizione

Fino alla versione 2.6  di Woocommerce era possibile utilizzare la “Pagina di pagamento del cliente” per un ordine associato ad un utente anche senza che questo fosse autenticato.

Infatti il link alla pagina funzionava anche senza autenticazione.

In questo modo si rendeva possibile un workflow di pagamento basato sulla creazione manuale dell’ordine da parte dell’amministratore del sito, l’associazione dell’ordine ad un cliente e l’invio del link di pagamento per completare l’ordine.

Chiunque utilizzasse quel link poteva pagare l’ordine e, in caso di esito positivo della transazione, l’ordine veniva aggiornato correttamente passando allo stato “completato”.

Dalla versione 3 di Woocommerce questa procedura non è più possibile in quanto per ordini associati ad un cliente la pagina dell’ordine è accessibile solo all’utente cui l’ordine viene assegnato.

Inoltre in questo caso visitando la pagina di pagamento senza essere autenticati (o con un utente diverso dal titolare dell’ordine) si riceve un messaggio di errore generico invece che un avviso che è necessario autenticarsi per consultare la pagina (a questo proposito è aperto uno specifico issue su GitHub con milestone 3.1 ma a tuttoggi alla 3.2 il problema permane).

La posizione di Woocommerce è che questo particolare workflow non è mai stato supportato e si basava su una scorretta implementazione dei controlli di sicurezza.

Esistono dei workflow alternativi che è possibile provare ad implementare nel caso di utilizzo specifico.

Possibili soluzioni

1. Ordini non assegnati ad alcun utente (Ordine Guest)

Se non è necessario consevare l’associazione di un ordine ad uno specifico utente è possibile creare un ordine manuale per un “Ospite” (quindi non associandolo ad alcun utente esistente).

In questo caso la pagina di pagamento sarà utilizzabile anche senza autenticazione e il link funzionerà senza autenticazione.

2. Ordini gestiti interamente dal supporto clienti

Se il workflow veniva implementato per permettare il pagamento off-line o on-line da parte del supporto clienti (ad esempio utilizzando dati della carta di credito forniti telefonicamente), è possibile utilizzare le medesime procedure ma integrandole con l’utilizzo di un plug-in che permetta l’impersonificazione di un utente senza conoscerne le credenziali.

Ad esempio utilizzando il plug-in User Switching è possibile dopo la creazione dell’ordine e l’assegnazione all’utente desiderato, impersonare l’utente e procedere al pagamento come se si fosse autenticati con il suo account.

3. Ordini predisposti da completare dal cliente autenticato

Si potrebbe cambiare il workflow integrando nelle comunicazioni da inviare al cliente, oltre al link alla pagina di pagamento, le istruzioni che indicano la necessità di autenticarsi preventivamente per procedere alla corretta imputazione del pagamento.

Questo nel caso il workflow prevedeva la creazione on fly dell’utente per la sola gestione del pagamento (è il caso ad esempio di conferme di prenotazioni o servizi a clienti una-tantum) introduce una complicazione difficilmente gestibile. Il cliente in effetti non si è mai registrato e non conosce la password, dovrebbe quindi procedere al recupero password, autenticarsi e quindi procedere al pagamento.

Altre soluzioni al momento non disponibili

Stiamo valutanto lo sviluppo di un plugin che possa rendere possibile workflow analoghi a quelli disponibili nella versione 2.6 di Woocommerce.

La difficoltà principale non è di natura tecnica ma sulla verifica che tali funzionalità non diminuiscano la sicurezza del sistema.

Non a caso tra i possibili work-around non abbiamo incluso il ritorno alla versione 2.6 (ovviamente l’installazione di versioni precedenti alla 3 consente l’utilizzo del vecchio workflow), convinti che, come concetto generale, è necessario utilizzare sempre le ultime versioni aggiornate dei componenti di WordPress (core, temi e plugins) per garantire la massima sicurezza disponibile.

 

Risorse