修改zen-cart下单和付款流程以防止漏单文档.docVIP

修改zen-cart下单和付款流程以防止漏单文档.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
修改zen-cart下单和付款流程以防止漏单文档

zen-cart进入第三方支付网站后,如果不能正常返回,则会造成客户已付款但后台却无订单数据的尴尬局面。本文就针对该问题给出一种解决方案,希望对 被同样问题困扰的同行有所帮助。 用过zen-cart的人都知道,zen-cart中下单步骤是下面这样的(其中[]中的表示不是必须的): 1. 购物车(shopping cart) 2. [货运方式(delivery method)] 3. 支付方式(payment method) 4. 订单确认(confirmation) 5. [第三方网站支付] 6. 订单处理(checkout process)——这一步比较重要,因为会在这里将购物车中的信息写入订单 7. 下单成功(checkout success) 这样的流程在正常情况下是没有任何问题的。但是,从第5步到第6部的过程中,用户可能以为付款成功就直接关闭掉网页了,或者由于网络原因造成不能正 常跳转到checkout_process页面,这样造成的后果是很严重的,因为订单不能被正常的创建。 基于上述的分析, 我们希望稍微地改变一下流程,即在支付之前订单已经创建好了,这样就算在支付时不能从第三方支付网站跳转回来,我们也不会存在用户付款成功却在后台没有订 单的情况了。经过修改后的蓝图基本是下面这样的: 1. 在checkour_confirmation页面确认订单后,都会直接proccess,并且进入checkour_success页面,可以在这里进 入付款页面。如下图所示: 2. 如果当时客户没能付款,也可进入自己的后台对历史订单进行付款。如下图所示: 下面我们就来看看如何一步一步来实现上述的功能。 1. 首先我们需要对现有的支付模块进行一个改造。需要对支付方式的class增加一个字段paynow_action_url,用来表示进行支付的页面 url,另外还需要增加一个函数,paynow_button($order_id),来获取支付表单的参数隐藏域代码。 要增加paynow_action_url字段,请在类payment的构造函数中最后加上下面的代码: if ( (zen_not_null($module)) (in_array($module..php, $this-modules)) (isset($GLOBALS[$module]-paynow_action_url)) ) { $this-paynow_action_url = $GLOBALS[$module]-paynow_action_url; } 要增加 paynow_button($order_id)函数,请在payment类的最后一个函数之后加上如下的代码: function paynow_button($order_id){ if (is_array($this-modules)) { if (is_object($GLOBALS[$this-selected_module])) { return $GLOBALS[$this-selected_module]-paynow_button($order_id); } } } 2. 以paypal支付方式为例子,说明如何具体实现。为了不破坏paypal原有的代码,我们将paypal.php文件拷贝一个副本出来,并命名为 paypalsimple.php,并对里面的代码做适当的修改。代码如下所示,可以看到,这里去掉了对form_action_url的指定,并给定了 paynow_action_url,因为我们希望用户点击“确认订单”后直接进入checkout_process,所以如果不指定 form_action_url,那么确认订单的表单就会直接提交到checkout_process页面了,而paynow_action_url就是 以前的form_action_url的值。paynow_button函数的实现也很简单,这里只是将原先的process_button()函数的内 容剪切过来而已,只不过我们没有使用全局的$order变量,而是使用$order = new order($order_id),来重新构造的一个对象,这样做是为在历史订单中显示pay now按钮做准备的。 paypalsimple.php ?php /** * @package paypalsimple payment module * @copyright Copyright 2003-2006 Zen Cart Development Team * @copyright Portions Copyright 2003 osCommerce * @license /licen

您可能关注的文档

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档