Как создать и хранить уникальный идентификатор заказа?
Попробуйте сделать поле с UUID.
Вот документация
Оттуда:A UUID is designed as a number that is globally unique in space and time. Two calls to UUID() are expected to generate two different values, even if these calls are performed on two separate computers that are not connected to each other.
Вам должно подойти.UPD1. Как хранить:
Создаем поле типа BINARY( 16 ) (вместо int) и делаем его primary key.
Это получается потому-что мы из строки110E8400-E29B-11D4-A716-446655440000 
удаляем все тире и у нас получается110E8400E29B11D4A716446655440000
Это 32 символа в шеснадцатеричной системе, если хранить в бинарной - получается 16. Преобразовать в бинарную можно с помощью такой конструкции:UNHEX("110E8400E29B11D4A716446655440000")
Обратно:HEX(field_binary)
С производительностью проблем никаких, т.к. храним число в бинарном виде.
Вот тут более подробно разобрано: stackoverflow
формируете хэш на основе hash=md5(timestamp.summ) и записываете в отдельную колонку рядом с порядковым номером.
Вам искать - в одном поле: по порядковому номеру или hash'у. (OR)
По ссылке - роутер ищет только по hash.
После оплаты - запрещайте просмотр по hash.