Базиран на CodeIgniter електронен магазин, проблем с дизайна на адреса за доставка и подарък

Докато изграждах платформа за електронна търговия, се натъкнах на проблеми с дизайна. Работя с вградения клас количка на CodeIgniter. Той съхранява цялата информация за количката в сесията. Да кажем, че количката вече е пълна с продукти и потребителят щраква върху касата. Кога трябва да съхранявам поръчката в базата данни? Само след това щракване или след няколко стъпки на събиране на информация и съхраняването й в сесия? Как да се справим с допълнителни функции като различни методи за доставка? Трябва ли първо да го добавя в кошницата и да получа допълнителен (адрес за подарък) към сесията? Не искам да го съхранявам в база данни, защото е необходима връзка между адреса на подаръка и поръчката и тъй като не знам какъв е идентификаторът на поръчката. Озадачен съм :) Освен това смятам, че е от решаващо значение количката да бъде информирана за методите на доставка и допълнителните закупени услуги (при избиране на адрес за подарък има допълнителна такса), защото съдържанието на количката е точно като касова бележка?

Накратко, каква е най-добрата практика за обработка на плащане?


person aambrozkiewicz    schedule 18.12.2010    source източник


Отговори (1)


Можете да добавите допълнителни атрибути към артикула от количката си (като опции за доставка), като използвате стойността "options" на количка.

$data = array(
           'id'      => 'sku_123ABC',
           'qty'     => 1,
           'price'   => 39.95,
           'name'    => 'T-Shirt',
           'options' => array('shipId' => '1234abcd5678efghi')
        );

$this->cart->insert($data);

Имайте предвид, че не се нуждаете от допълнителни идентификатори от базата данни; можете да създадете уникални идентификатори с uniqid() или com_create_guid().

Тъй като питате за мнение... Трябва да съхранявате различни адреси за доставка в отделна таблица с адресна книга, свързана с потребителя, а не свързана с поръчката. Когато най-накрая създадете поръчка като част от плащането, трябва да копирате всички данни (данни за адреса и съответните данни за продукта) в отделни таблици за поръчки, тъй като данните за продукта и данните от адресната книга могат да се променят; данните за поръчката трябва да се записват веднъж и никога да не се актуализират, освен статуса. След като поръчката бъде запазена, можете да изтриете данните за сесията.

person Barnabas Kendall    schedule 23.12.2010