發佈於

OPENCART購物車-電子票劵下載檔案系統購買流程SOP與可能發生錯誤之原因

OPENCART購物車-電子票劵下載檔案系統購買流程SOP與可能發生錯誤之原因

OPENCART
您沒有購買過任何可下載的數位商品
下載文件
尚無含有下載文件的訂單!

原因

他是用訂單狀態去判斷你能否下載檔案
(3,’貨到付款–處理中’)或(5,’線上刷卡–處理中’)這2個狀態才會有下載檔案
而你增加一個訂單狀態如(7, 1, ‘已完成交易’)的話
會員下載文件資料就會變成不能下載,因為不論有幾個狀態,最後的狀態為準
OPENCART 下載檔案系統必定修改的地方 就是
\catalog\model\account\download.php 裡面 AND (o.order_status_id = ‘5’ OR o.order_status_id = ‘3’)
應該改成7和8才對
—————————————–
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘退款處理中…’);
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#假設你要賣 電子票劵‎
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
1.別的網站如何賣票券
    http://support.accupass.com/knowledgebase/articles/150617-%E9%9B%BB%E5%AD%90%E7%A5%A8%E5%88%B8%E4%BD%BF%E7%94%A8%E6%87%B6%E4%BA%BA%E5%8C%85
    https://www.okbon.com/
    https://www.okbon.com/detail.php?unit=34 內容大致如下
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#後台 電子票劵 下載型數位商品 功能 設定流程‎
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
登入後台=>商品管理=>數位商品下載
        新增
            檔案名稱
            偽裝
#檔案真實位置 和檔名
\system\storage\download
\system\storage\download\qrcode.png.TQGptDfUmZyLZbkWQukscwJ9F2Xd482k
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
#前台 電子票劵‎ 購買流程
〠▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧
已完成訂購
    您的訂單已成功送出,我們會在儘快處理!
    您可以到 會員專區, 或點擊 訂購記錄 查看訂單記錄。
    如果您的購買有相關的下載,您可以到 下載頁面 下載。
    如有任何問題或意見,請 連絡我們。
    感謝您的訂購!
=============================================
#訂單狀態 要哪一種才會出現下載文件
=============================================
訂單狀態 已出貨     無用
訂單狀態 已完成交易     無用
OPENCART
您沒有購買過任何可下載的數位商品
下載文件
尚無含有下載文件的訂單!
————————————————————————-
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘退款處理中…’);
訂單狀態要 3 和 5 才會有下載文件
後台
    智付寶Pay2go的訂單初始狀態(Order Default Status):要設為線上刷卡–處理中’
    編輯貨到付款模組-訂單狀態-貨到付款–處理中
=============================================
#程式位置
=============================================
/index.php?route=account/download                下載清單
/index.php?route=account/download/download&download_id=1    下載程式
=============================================
#相關資料表
SELECT * FROM     `oc_upload`        上傳檔案
SELECT * FROM    `oc_product_to_download`    商品下載資料表
=============================================
上傳檔案
INSERT INTO `oc_upload` (`upload_id`, `name`, `filename`, `code`, `date_added`) VALUES
(1, ‘0006.jpg’, ‘0006.jpg.rKbDQeXofbieNRQddYQZyLjinABdX246′, ’25ce74194786aad9690ecc7b2e83040e27ed80f3’, ‘2017-05-04 16:45:08’);
#商品id,下載id 對應表 product_to_download=>download_id對應upload=>upload_id
INSERT INTO `oc_product_to_download` (`product_id`, `download_id`) VALUES
(10, 1),
(12, 1);
=============================================
#撈資料的條件
=============================================
SELECT DISTINCT d.download_id, o.order_id, o.date_added, dd.name, d.filename FROM `oc_order` o LEFT JOIN oc_order_product op ON (o.order_id = op.order_id) LEFT JOIN oc_product_to_download p2d ON (op.product_id = p2d.product_id) LEFT JOIN oc_download d ON (p2d.download_id = d.download_id) LEFT JOIN oc_download_description dd ON (d.download_id = dd.download_id) WHERE o.customer_id = ‘4’ AND dd.language_id = ‘1’ AND (o.order_status_id = ‘5’ OR o.order_status_id = ‘3’) ORDER BY o.date_added DESC LIMIT 0,15
#分析
SELECT DISTINCT d.download_id, o.order_id, o.date_added, dd.name, d.filename FROM `oc_order` o
LEFT JOIN oc_order_product op ON (o.order_id = op.order_id) LEFT JOIN oc_product_to_download p2d ON (op.product_id = p2d.product_id) LEFT JOIN oc_download d ON (p2d.download_id = d.download_id) LEFT JOIN oc_download_description dd ON (d.download_id = dd.download_id) WHERE o.customer_id = ‘4’ AND dd.language_id = ‘1’ AND (o.order_status_id = ‘5’ OR o.order_status_id = ‘3’)
ORDER BY o.date_added DESC LIMIT 0,15
使用資料表
oc_order        訂單
oc_order_product    購買的商品
oc_product_to_download    商品下載資料表
oc_download
———————————————————–
order_status_id 訂單狀態(關聯order_status主鍵)
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘退款處理中…’);
條件
o.customer_id = ‘4’ AND dd.language_id = ‘1’
o.order_status_id = ‘5’ OR o.order_status_id = ‘3’
表示
SELECT * FROM `oc_order` 這裡面 會員的註冊ID 和 order_status_id 要為5或3
=============================================
#錯誤的原因
=============================================
SELECT * FROM `oc_order` 這裡面的 order_status_id 要為5或3
也就是
(3,’貨到付款–處理中’)或(5,’線上刷卡–處理中’)這2個狀態才會有下載檔案
而你增加一個訂單狀態如(7, 1, ‘已完成交易’)的話
會員下載文件資料就會變成不能下載,因為不論有幾個狀態,最後的狀態為準
=============================================
#進階修正法
=============================================
OPENCART 下載檔案系統必定修改的地方 就是
\catalog\model\account\download.php 裡面 AND (o.order_status_id = ‘5’ OR o.order_status_id = ‘3’)
應該改成7和8才對
—————————————–
或是不改程式你修正資料庫的資料也可以
SELECT * FROM `oc_order_status`
資深工程師重整版
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘退款處理中…’);
原版-少了4和6
(2, 1, ‘處理中’),
(3, 1, ‘已配送’),
(7, 1, ‘已取消’),
(5, 1, ‘已完成’),
(8, 1, ‘已拒絕’),
(9, 1, ‘取消恢復’),
(10, 1, ‘失敗’),
(11, 1, ‘已返還’),
(12, 1, ‘Reversed’),
(13, 1, ‘已退款’),
(1, 1, ‘待處理’),
(16, 1, ‘空訂單’),
(15, 1, ‘已處理’),
(14, 1, ‘已過期’);
#英文對照
(1, 1, ‘Pending’),
(2, 1, ‘Processing’),
(3, 1, ‘Shipped’),
(7, 1, ‘Canceled’),
(5, 1, ‘Complete’),
(8, 1, ‘Denied’),
(9, 1, ‘Canceled Reversal’),
(10, 1, ‘Failed’),
(11, 1, ‘Refunded’),
(12, 1, ‘Reversed’),
(13, 1, ‘Chargeback’),
(14, 1, ‘Expired’),
(15, 1, ‘Processed’),
(16, 1, ‘Voided’),
#本人作法1
保留原版 修改 注意 狀態3 已出貨 和狀態5 已完成交易 不能更動名稱
TRUNCATE oc_order_status          #清空舊表
INSERT INTO `oc_order_status` (`order_status_id`, `language_id`, `name`) VALUES
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘已出貨 ‘),
(4, 1, ‘到店取貨–等待中’),
(5, 1, ‘已完成交易’),
(6, 1, ‘貨到付款–處理中’),
(7, 1, ‘已取消’),
(8, 1, ‘已拒絕’),
(9, 1, ‘取消恢復’),
(10, 1, ‘失敗’),
(11, 1, ‘已返還’),
(12, 1, ‘退款處理中…’),
(13, 1, ‘已退款’),
(14, 1, ‘已過期’),
(15, 1, ‘已處理’),
(16, 1, ‘空訂單’),
(17, 1, ‘ATM轉帳–請匯款’);
—————————————————————–
#本人作法2
#使用修改\catalog\model\account\download.php 裡面 AND (o.order_status_id = ‘7’ OR o.order_status_id = ‘8’)
TRUNCATE oc_order_status
INSERT INTO `oc_order_status` (`order_status_id`, `language_id`, `name`) VALUES
(1, 1, ‘待處理’),
(2, 1, ‘訂單處理中’),
(3, 1, ‘貨到付款–處理中’),
(4, 1, ‘ATM轉帳–請匯款’),
(5, 1, ‘線上刷卡–處理中’),
(6, 1, ‘到店取貨–等待中’),
(7, 1, ‘已完成交易’),
(8, 1, ‘已出貨’),
(9, 1, ‘已取消’),
(10, 1, ‘已返還’),
(11, 1, ‘退款處理中…’),
(12, 1, ‘已退款’),
(13, 1, ‘已過期’),
(14, 1, ‘已處理’),
(15, 1, ‘空訂單’);
發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *