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']將被清除,

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