PHP项目开发全程实录(第4版)
上QQ阅读APP看书,第一时间看更新

2.17 在线支付技术专题

所谓在线支付就是客户端(金融机构需客户端安装由金融机构签发的数字证书,信用卡免安装)将支付信息加密后通过互联网传送到支付网关(支付网关是解决网络上安全支付问题的交易平台,位于互联网和传统的金融机构内部网之间,其主要作用是将互联网和金融网络安全地连接起来,将不安全的网上交易信息传给安全的金融网络,起到隔离和保护金融网络的作用),同时金融机构网上支付系统反馈有关支付信息,客户确认无误后进行支付确定,支付网关负责商户网上交易资金的清算,并根据商户提供的开户行、账号等结账信息将网上消费款项汇总划入商户账户。

BCTY365网上社区的在线支付是与中国工商银行合作来共同完成的。BCTY365网上社区的在线支付操作步骤如下:

(1)登录网上社区,如图2.49所示。

图2.49 在线订购的操作页面

(2)购买商品。在本页中,不但可以购买商品,还可以查看商品的详细信息和购物车中的商品信息,如图2.50所示。

(3)进入购物车操作页面。在该页面中,可以修改购物数量、删除指定商品、清空购物车、继续购物和统计购买商品的金额,也可以单击“结算”按钮进入到商品结算页面,如图2.51所示。

图2.50 购买商品操作页面

图2.51 购物车操作页面

(4)进入到购物结算页面,填写收货人的详细信息,确认后提交该数据,如图2.52所示。

(5)订单确认。订单确认以后,就可以提交订单,准备进行网上支付,如图2.53所示。

图2.52 填写收货人的详细信息

图2.53 订单确认

(6)进行网上支付。在这里可以选择工行网上支付,也可以选择取消该订单,如图2.54所示。

图2.54 执行网上支付

接下来的操作在工行B2C支付页面上进行。首先网上社区按照工商银行B2C订单数据规范形成提交数据,并使用工商银行提供的API和商户证书对订单数据签名,形成form表单返回客户浏览器,表单action地址指向工商银行接收商户B2C订单信息的servlet;然后在客户确认使用工行网上支付后,提交此表单到工商银行;最后工行网银系统接收此笔B2C订单,对订单信息和商户信息进行检查,通过检查则显示工行B2C支付页面。

客户通过工行B2C支付页面实现网上支付,商户查询网上银行的账户,如果货款已经到账,则根据客户指定的方式将货物送达客户手中。

上述内容就是网上社区系统的在线支付流程,涉及工商银行的操作内容这里不做讲解。这里主要讲解如何将订单信息提交到工商银行。该项操作主要通过shopping_tjdd.php文件来实现,首先从数据库中读取订单信息,然后将订单信息进行输出,最后创建“取消订购”和“工行网上支付”两个超链接,通过JavaScript脚本来调用不同的执行文件。关键代码如下:

代码贴士

❶base64_decode():PHP实现对base64编码的字符进行解码。PHP实现字符串的base64编码通过base64_encode()函数。

❷str_replace():实现字符串的替换。该函数的语法如下:


    mixed str_replace(mixed search, mixed replace, mixed subject, int &count)

str_replace()将所有在参数subject中出现的search以参数replace替换,参数&count表示替换字符串执行的次数。

❸openprintwindow():JavaScript脚本中自定义的函数,用于执行订单的打印操作。

有关在线支付流程中的其他操作实现方式已经在2.10节中进行了详细的讲解,这里不再赘述。其具体的代码可参考本书的资源包TM\02\bcty365\。