parti dal presupposto che ti servirebbe qualcosa di univoco e le funzioni hashing più note e utilizzate non lo sono, per quanto buone possano essere ci sono delle collisioni. Detto questo puoi risolvere semplicemente prendendo ciò che rende univoco un' acquisto, io penso che tu abbia un db con almeno le seguenti tabelle con almeno i seguenti campi:
Prodotti
id, descrizione,prezzo
Utenti
id, username, password
Acquisti
id, utente_id, data, seme, scadenza, stato
Dettaglio
id, acquisti_id, utenti_id, prodotti_id
Già l'id dell'acquisto è univoco e permette perfettamente di inquadrare una vendita(utenti e prodotti annessi), quindi potresti usare come ultima/e cifra/e del codice univoco il valore di tale campo e a questo prependi l'hashing tramite sha1 su qualcosa che ritieni sicuro e segreto tu, poi ricorda che di sicuro non c'è niente per sempre, quindi sicuramente visto che l'ordine va confermato entro una certa data fa si che il codice sia valido fino a quella data.
Quindi ricapitolando e considerando anche le temporaneità della validità del codice di conferma potresti fare:
-Acquisto.id = 5
-Scadenza validità conferma: 21-12-2011
-seme valido solo per l'acquisto 5 e solo fino alla scadenza: "fkld5fd34xvklsflk?!ù"
Quindo il codice di conferma sarà qualcosa del tipo
sha1("21-12-2011"."fkld5fd34xvklsflk?!ù").5
Ti spiego il perchè si mette alla fine l'id dell'acquisto... sha1 ha output a lunghezza fissa mentre l'id essendo autoincrementato no, quindi per prendere l'acquisto prendi solo le ultime cifre. sha1 dovrebbe generare a prescindere dall'input una stringa di 40 caratteri quindi tutto ciò che viene dopo è l'id dell'acquisto. Per essere sicuro, che il codice sia valido confronti i primi 40 caratteri del codice con sha1("21-12-2011"."fkld5fd34xvklsflk?!ù"). Se matchano e "21-12-2011" è minore della data odierna allora ti è arrivata una conferma valida.