Domanda

Non sto usando un carrello della spesa pre-fatto, ho la programmazione io stesso. Funziona perfettamente bene il 99% del tempo, ma circa una volta ogni paio di mesi un ordine passa attraverso per $ 0. Non riesco a capire perché. Faccio un acquisto di prova con lo stesso prodotto e lo stesso informazioni e non posso ottenere che sia $ 0 per me. Non sono sicuro di come fare per la risoluzione dei problemi questo, devo un disclaimer dicendo che non onoriamo i prezzi errati. Il cliente vuole questo per fermare accadendo però. Sto usando PHP per fare tutto questo. Dal momento che non riesco a duplicare l'occurnace mi sto trovando difficile andare a fondo della questione. Chiunque può offrire qualche consiglio su come risolvere questo?

Grazie !!

È stato utile?

Soluzione

In definitiva, si vuole capire perché questo sta accadendo. Senza vedere il codice, non posso davvero aiutarti molto con questo. Nel breve termine, però, perché non è sufficiente aggiungere un controllo di integrità alla fine del processo di checkout?

if ( $final_price < 1 ) {
    do_epic_fail(); // Show an error, whatever.
}

Altri suggerimenti

Mi piacerebbe iniziare utilizzando alcuni vasto annotare ordine. Ogni click, ogni input, ogni query SQL. Poi, quando succede di nuovo passare attraverso i registri di che, per vedere cosa è successo.

Ci sono un paio di possibilità che vengono in mente. Uno, avete un errore temporaneo nelle query per tirare i totali voce. Forse quando la query non riesce appena di default a 0,00. Ad esempio, cosa succede quando digitano -1 per la quantità o mettere in qualche testo come 'ABC'

In alternativa si potrebbe avere un problema di sql injection in cui se l'utente mette qualcosa di sbagliato in uno dei campi si carica di un valore pari a zero per il prezzo.

Qualunque cosa sia verranno alla luce con la registrazione destra.

Avete un'URL del sito?

In caso contrario, posso solo immaginare che i dati da qualche parte si consente passati nella dall'utente per determinare il prezzo (ad esempio, un campo nascosto o di un parametro), che l'utente può eseguire l'override.

Assicurarsi che si sta passando un ID per il prodotto al codice lato server, e moltiplicare il prezzo sul server * la quantità di ordine. (Ad esempio, mai fidarsi l'input dell'utente)

Il tuo codice di contare su $ _SESSION dati? Se un utente è stato quello di attendere un tempo molto lungo, alcuni dati necessari potrebbero scadenza, ma alla cassa può ancora procedere.

Mentre gli altri hanno detto, è difficile commentare ulteriormente senza codice sorgente.

Stai scrivendo i dettagli ammontano al gateway di pagamento dal lato client (i campi del modulo nascosti)? Se è così allora si può facilmente ignorato utilizzando le barre degli strumenti del browser come web developer ecc.

pubblicare sempre i dati di pagamento dal lato server.

Se il prezzo finale è 0, forse controllare l'ordine di nuovo per vedere se contiene in realtà tutti gli articoli. Ho potuto vedere, eventualmente, avere un ordine per zero se si dispone di tutti gli elementi liberi o promozioni speciali in corso, quindi forse questa è la strada da percorrere.

Questa è una domanda difficile a cui rispondere senza vedere la vostra fonte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top