首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》28.6 实现付款

关灯直达底部

当用户点击"Purchase"按钮时,我们将调用process.php脚本来处理付款细节。可以在图28-10中看到成功付款的结果。

图 28-10 付款操作成功,我们将发送顾客订购的商品

process.php脚本如程序清单28-16所示。

我们将处理用户的信用卡,如果所有操作成功完成,再销毁用户的会话。

我们编写的信用卡处理函数将简单地返回true。在具体实现过程中,可能需要先执行一些验证(检查信用卡的过期日期是否仍然有效以及卡号是否正确),然后再执行真正的付款操作。

程序清单28-16 process.php——该脚本处理顾客的付款并显示处理结果

<?php

include('book_sc_fns.php');

//The shopping cart needs sessions,so start one

session_start;

do_html_header('Checkout');

$card_type=$_POST['card_type'];

$card_number=$_POST['card_number'];

$card_month=$_POST['card_month'];

$card_year=$_POST['card_year'];

$card_name=$_POST['card_name'];

if(($_SESSION['cart'])&&($card_type)&&($card_number)&&

($card_month)&&($card_year)&&($card_name)){

//display cart,not allowing changes and without pictures

display_cart($_SESSION['cart'],false,0);

display_shipping(calculate_shipping_cost);

if(process_card($_POST)){

//empty shopping cart

session_destroy;

echo"<p>Thank you for shopping with us.Your order has been placed.</p>";

display_button("index.php","continue-shopping","Continue Shopping");

}else{

echo"<p>Could not process your card.Please contact the card

issuer or try again.</p>";

display_button("purchase.php","back","Back");

}

}else{

echo"<p>You did not fill in all the fields,please try again.</p><hr/>";

display_button("purchase.php","back","Back");

}

do_html_footer;

?>

实际建立站点时,必须决定采用哪种事务清除机制。我们可以:

■与一个事务清理提供商签约。根据所在地的不同,可以选择许多服务商。一些服务商提供实时的数据清理,一些服务商则不是。是否需要实时的数据清理取决于向用户提供的服务。如果提供的是在线服务,可能最希望实时清理;如果发送货物,实时处理就不是很重要了。无论选择哪种方式,这些服务商都承担了保存信用卡号码的责任。

■通过加密邮件将信用卡号码发送给自己,加密算法可以采用PGP或GPG等,这些内容已经在第18章中详细介绍。当接收并解密这些邮件之后,就可以手动处理这些事务。

■在数据库中保存信用卡号。如果没有慎重考虑这样做对系统安全性能的潜在危害,那么我们不推荐采用这种选择。可以参阅第18章的详细介绍,明白为什么这是一个糟糕的主意。

以上就是购物车模块和付款模块。