ZenCart paypal漏单解决方法二

原文链接:https://blog.csdn.net/tomyjohn/article/details/8106969

前段时间介绍了zencart paypal漏单解决办法一,文章主要讲使用zencart插件(Paypal Sessions Viewer)实现找回paypal漏掉的订单,这种方法解决ZenCart paypal漏单问题比较简单,方便,漏掉的订单后台单击生成一下就行了今天强创网络工作室来介绍一种修改ZenCart下单流程来达到解决漏单的办法。

ZenCart默认的下单流程是:

购物车(shopping cart)->[货运方式(shipping method)]->支付方式(payment method)->订单确认(confirmation)->[第三方网站支付]->订单处理(checkout process)->下单成功(checkout success).

解决方法:在支付页面index.php?main_page=checkout_confirmation单击按钮时就能产生订单。

方法是:在includes\templates\当前模板名\templates\tpl_checkout_confirmation_default.php文件的最后面

后面添加代码:

 


 
  1. // create the order record 防漏单

  2. if ($_SESSION['payment'] == 'paypal') {

  3. $insert_id = $order->create($order_totals, 2);

  4. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE');

  5. $payment_modules->after_order_create($insert_id);

  6. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_AFTER_ORDER_CREATE');

  7. // store the product info to the order

  8. $order->create_add_products($insert_id);

  9. $_SESSION['order_number_created'] = $insert_id;


为了避免对其他支付方式产生影响,所以代码做了个判断,只有在ZenCart选择paypal支付的时候才会生成订单,加了这段后就不用担心会漏单了---成功付款后后台就会产生订单,其中前面GS/AK的为防漏单的订单,只有在出现漏单的时候才会查看这些订单,里面的信息跟正常订单相比会少一个交易号,但是至少是可以看到客户信息及所购买了什么产品...
在确认页面,如果顾客一直刷新页面,就会一直生成订单,可以加个限制.

 


 
  1. <?php

  2. // create the order record 防漏单

  3. if ($_SESSION['payment'] == 'paypal' and !isset($_SESSION['order_number_created'])) {

  4. $insert_id = $order->create($order_totals, 2);

  5. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE');

  6. $payment_modules->after_order_create($insert_id);

  7. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_AFTER_ORDER_CREATE');

  8. // store the product info to the order

  9. $order->create_add_products($insert_id);

  10. $_SESSION['order_number_created'] = $insert_id;

  11. //send email notifications

  12. $order->send_order_email($insert_id, 2);

  13. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_SEND_ORDER_EMAIL');

  14. }

  15. ?>


在pages/checkout_payment/header_php.php任意位置加上unset($_SESSION['order_number_created']);
这样,就算顾客在确认页面一直刷新,因为已经设置了$_SESSION['order_number_created'],订单不再生成,
如果顾客返回修改了购物车,再次到达checkout_payment时$_SESSION['order_number_created']将被清除,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章