Thiết kế website bán hàng | Phần 6: Lập trình trang thanh toán

Bước quan trọng nhất trong thiết kế website bán hàng là bước này, vì nó tính toán giá, kiểm tra thanh toán tiền, rồi lưu dữ liệu vào trong cở sở dữ liệu. Trong nội dung của ứng dụng mẫu này không hướng dẫn cách thanh toán vì có thể thanh toán qua nhiều cổng thanh toán khác nhau: ngân hàng, paypal, linkpoint, beanstream,… Thiết kế số sẽ viết 1 bài giới thiệu về các kiến thức của việc thanh toán, trong nội dung bài này chỉ dừng lại ở mức độ lưu trữ dữ liệu của khách hàng nhập vào, rồi gửi về mail của bạn, sau đó lưu lại đơn hàng.

Việc thanh toán xong sẽ phát sinh thêm việc lưu lại đơn đặt hàng, nên chúng ta cần thêm 2 table nữa:

– 1 bảng đơn hàng (lưu lại thông tin khách hàng, số tiền họ mua, ngày mua…)

– 1 bảng đơn hàng chi tiết( lưu lại đơn hàng đó đặt những sản phẩm nào, số lượng mỗi sản phẩm,….)

tạo 2 table như sau:
lesson_order:

CREATE TABLE `lesson_order` (
`id` int(5) NOT NULL auto_increment,
`billing_fullname` varchar(255) collate utf8_unicode_ci default NULL,
`billing_address` varchar(255) collate utf8_unicode_ci default NULL,
`billing_tel` varchar(255) collate utf8_unicode_ci default NULL,
`billing_email` varchar(255) collate utf8_unicode_ci default NULL,
`shipping_fullname` varchar(255) collate utf8_unicode_ci default NULL,
`shipping_address` varchar(255) collate utf8_unicode_ci default NULL,
`shipping_tel` varchar(255) collate utf8_unicode_ci default NULL,
`total` float default NULL,
`date` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;

lesson_order_detai:

CREATE TABLE `lesson_order_detail` (
`id` int(5) NOT NULL auto_increment,
`orderid` int(5) default NULL,
`proid` int(5) default NULL,
`price` float default NULL,
`qty` int(3) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Lập trình mẫu: checkout.php

<?php include ‘connect.php’;
if(!count($_SESSION[‘shopping’])) header(‘location: cart.php’);
if($_POST){
$billing_fullname = addslashes($_POST[‘billing_fullname’]);
$billing_address = addslashes($_POST[‘billing_address’]);
$billing_tel = addslashes($_POST[‘billing_tel’]);
$billing_email = addslashes($_POST[‘billing_email’]);
$shipping_fullname = addslashes($_POST[‘shipping_fullname’]);
$shipping_address = addslashes($_POST[‘shipping_address’]);
$shipping_tel = addslashes($_POST[‘shipping_tel’]);
$total = 0;
foreach($_SESSION[‘shopping’] as $rs) $total += $rs[‘price’]*$rs[‘qty’];
$sql = “INSERT INTO lesson_order(billing_fullname,billing_address,billing_tel,billing_email,shipping_fullname,shipping_address,shipping_tel,total,`date`) VALUES(‘$billing_fullname’,’$billing_address’,’$billing_tel’,’$billing_email’,’$shipping_fullname’,’$shipping_address’,’$shipping_tel’,’$total’,NOW())”;

mysql_query($sql) or die(mysql_error());
$order_id = mysql_insert_id();
if($order_id){
$emailMsg = ‘Order information’;
foreach($_SESSION[‘shopping’] as $rs){
mysql_query(“INSERT INTO lesson_order_detail(orderid,proid,price,qty) VALUES($order_id,'”.$rs[‘id’].”‘,'”.$rs[‘price’].”‘,'”.$rs[‘qty’].”‘)”);
$emailMsg .= ‘<br />- ‘.$rs[‘name’].’ – price: ‘.$rs[‘price’].’ – qty: ‘.$rs[‘qty’];
}
@mail($billing_email,’Order information’,$emailMsg,’From: admin@phpbasic.com’);
unset($_SESSION[‘shopping’]);
header(‘location: finish.php’);
}
}
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Home page</title>
<link href=”css/style.css” rel=”stylesheet” />
</head>

<body>
<?php include ‘inc_header.php’;?>
<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td width=”26%” valign=”top”><br />
<?php include ‘inc_category.php’;?></td>
<td width=”74%” valign=”top”> <!– Start list product–>
<h3>Checkout</h3>
<form action=”” method=”post”>
<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td width=”49%”><h4>Thông tin thanh toán</h4></td>
<td width=”51%”><h4>Thông tin vận chuyển</h4></td>
</tr>
<tr>
<td valign=”top”><table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td width=”23%”>Họ tên</td>
<td width=”77%”><label>
<input type=”text” name=”billing_fullname” id=”billing_fullname” />
</label></td>
</tr>
<tr>
<td>Địa chỉ</td>
<td><input type=”text” name=”billing_address” id=”billing_address” /></td>
</tr>
<tr>
<td>Điện thoại</td>
<td><input type=”text” name=”billing_tel” id=”billing_tel” /></td>
</tr>
<tr>
<td>Email</td>
<td><input type=”text” name=”billing_email” id=”billing_email” /></td>
</tr>
</table></td>
<td valign=”top”><table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td width=”23%”>Họ tên</td>
<td width=”77%”><label>
<input type=”text” name=”shipping_fullname” id=”billing_fullname” />
</label></td>
</tr>
<tr>
<td>Địa chỉ</td>
<td><input type=”text” name=”shipping_address” id=”billing_address” /></td>
</tr>
<tr>
<td>Điện thoại</td>
<td><input type=”text” name=”shipping_tel” id=”billing_tel” /></td>
</tr>
</table></td>
</tr>
</table>

<div align=”center”><input type=”submit” name=”button” id=”button” value=”Finished” /></div>
</form>
<!–Kết thúc list sản phẩm–> </td>
</tr>
</table>
<?php include ‘inc_footer.php’;?>

</body>
</html>

*Lưu ý: ở đây chúng ta cần lấy 2 thông tin khách hàng thông tin hóa đơn (billing information) và thông tin giao hàng (shipping information)
VD:
Khi bạn ở Ba Đình mua 1 bó hoa để tặng cho người bạn ở Cầu Giấy thì:
Thông tin giao hàng là ở Cầu giấy, còn thông tin thanh toán thì ở Ba Đình.

Sau bước này sẽ chuyển sang thông báo thành công:  finish.php

<?php include ‘connect.php’;?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Home page</title>
<link href=”css/style.css” rel=”stylesheet” />
</head>

<body>
<?php include ‘inc_header.php’;?>
<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td width=”26%” valign=”top”><br />
<?php include ‘inc_category.php’;?></td>
<td width=”74%” valign=”top”> <!– Start list product–>
<h3>Finish</h3>
<div>Đơn hàng của bạn đã được đặt thành công, vui lòng kiểm tra mail để biết thêm chi tiết</div>

<!–kết thúc list sản phẩm–> </td>
</tr>
</table>
<?php include ‘inc_footer.php’;?>

</body>
</html>

Bây giờ bạn xem từ bài 1 đến bài 6, bạn đã có thể tự làm 1 trang bán hàng đơn giản.

Chúc bạn thành công

FOLLOW US

Leave a Reply

Your email address will not be published. Required fields are marked *