全国
当前所在位置: 首页 > SEO优化

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

2025-05-15 本站作者 【 字体:

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按钮做准备的。

阅读全文
加载中~
相关推荐

安阳SEO关键字的方法(安阳SEO技巧攻略)

安阳SEO关键字的方法(安阳SEO技巧攻略)
在如今信息爆炸的时代,拥有一个高效的网站已成为企业获取客户和曝光自身的重要渠道。...

seo快排怎么做,seo快排的原理是什么

seo快排怎么做,seo快排的原理是什么
在互联网时代,网站排名直接关系到流量和商业价值。SEO(搜索引擎优化)作为提升网...

站外SEO应该怎么做?

站外SEO应该怎么做?
什么是站外seo?从字面理解,就是非网站内容的,而是网站外部的优化。在极端情况下...

成都网站关键词排名优化

成都网站关键词排名优化
更新语言和语气以适合您当前的品牌添加新的和当前的事实,做法或详细信息更新旧内容可...

什么是站外SEO?2025外贸站外SEO终极指南,一篇讲透!

<strong>什么是站外SEO?2025外贸站外SEO终极指南,一篇讲透!</strong>
外贸精英进阶第一站点关注免费领新人礼包关注一、什么是站外SEO?一句话讲透!站外...

全面刨析独立站什么是站外 SEO 以及如何获取成功!

<strong>全面刨析独立站什么是站外 SEO 以及如何获取成功!</strong>
在不断发展的数字营销世界中,了解搜索引擎如何对网站进行排名对于在线成功至关重要。...

谷歌站外SEO :建设外链的最佳实践

<strong>谷歌站外SEO :建设外链的最佳实践</strong>
站外SEO (英文名称为Off-Page SEO)到底是什么?如何建立高质量的外...

做好站内外SEO,稳定网站排名

<strong>做好站内外SEO,稳定网站排名</strong>
做好站内外SEO稳定网站排名SEO优化搜索引擎网站排名拥有一个强大且高质量的网站...

SEO是什么?SEO怎么做?2024年重点教学

SEO是什么?SEO怎么做?2024年重点教学
什么是SEO – 搜索引擎优化?还有点知识的朋友们,请看看什么是SEO?让我来让...

seo是什么职业?(seo是什么意思)

seo是什么职业?(seo是什么意思)
SEO由英文Search Engine Optimization缩写而来,中文意...
本站访客:309745
1097476955
服务热线

服务热线

18951535724

18951535724
返回顶部