Алгоритм оплати:
- сценарій PHP посилає платіжну інформацію в клірингову компанію. Інформація містить ім’я клієнта, адресу, інформацію кредитної картки та суму грошей, яку треба зняти;
- клірингова компанія перевіряє: (1) — інформація кредитної картки правильна і (2) — на рахунку клієнта є достатня кількість коштів для оплати покупки. Якщо ці дві умови виконані, то з кредитної картки знімаються кошти і результат повертається сценарію;
- залежно від результату трансакції сценарій визначає подальші дії. Якщо трансакція успішна, виконуються необхідні дії для виконання замовлення, якщо ні, клієнтові пропонується повторно ввести інформацію для оплати.
Так авторизується оплата в реальному масштабі часу. Інший варіант — реалізація пакетної обробки. Спершу збираються всі замовлення, а обробляються пізніше. Серед компаній обробки оплати слід вибрати ту, яка найбільше відповідатиме потребам бізнесу і далі відповідно до її вимог створювати сценарії оплати. Список таких компаній можна знайти в мережі Інтернет, наприклад на пошуковику Yahoo:
http://dir.yahoo.com/Business_and_Economy/Business_to_Business/Financial_Services/Transaction_Clearing/
Виконання замовлення:
- склад збирає замовлену продукцію для відвантаження/ ви-
дачі;
- компанія-кур’єр відправляє продукцію клієнту (клієнт отримує продукцію).
Виконання замовлення залежить від виду продукції, замовлення та оплати (доставка клієнту чи клієнт забезпечує доставку).
Клієнти та замовлення повинні відслідковуватись в Enterprise. Для цього необхідні дві таблиці: таблиця замовлень — orders і таблиця order_items (елементи замовлення). Між orders і order_items існує відношення «один до множини»: замовлення може включати один або більшу кількість елементів замовлення (продукції), і елементи одного типу можуть належати одному або більшій кількості замовлень. Між замовленнями (orders) та продукцією (items) існує відношення «множина—до—множини», і оскільки відносини такого типу не описуються в реляційних БД безпосередньо, введемо «таблицю зв’язку» між замовленнями (orders) та продукцією (order_items). Ця «таблиця зв’язку» описує відношення «множина—до—одного» з таблицею замовлень (по order_id) та таблицею продукції (по product_id).
Таблиця замовлень orders призначена для зберігання інформації замовлення. Кожен запис в цій таблиці містить:
Ідентифікатор |
Пояснення |
id |
Ідентифікатор замовлення (згенерований MySQL) |
username |
Ім’я користувача, клієнта, який створив замовлення |
a_timestamp |
Дата/час створення замовлення |
a_timestamp |
Дата/час авторизації оплати або невдачі оплати |
status |
Стан процесу авторизації |
status_details |
Текст, що описує стан процесу авторизації |
сustinfo |
Інформація про клієнта |
comments |
Вказівки, коментарі, що супроводжують замовлення |
amount |
Грошова сума, утримана з клієнта |
Створюємо таблиці:
mysql -u root -р
USE Enterprise;
CREATE TABLE orders (
id int not null auto_increment,
username varchar(16) not null,
о_timestamp datetime,
а_timestamp datetime,
status tinyint,
status_details varchar(255),
custinfo text,
comments text,
amount float(5,2),
PRIMARY KEY (id),
INDEX username (username));
Таблиця order_items зберігає елементи (продукцію), які є частиною замовлення. Поля таблиці:
Ідентифікатор |
Пояснення |
order_id |
Ідентифікатор замовлення приналежності елемента |
product_id |
Виріб, який був замовлене (з таблиці продукції) |
Price |
Ціна продукції на час закупівлі (може різнитися з поточною) |
Qty |
Кількість продукції |
Створюємо цю таблицю:
CREATE TABLE order items (
order_id int not null,
product_id int not null,
price float(5, 2) not null,
qty int not null,
PRIMARY KEY (order id, product id)); |