動作
Feature #33
進行中
SC
SC
購物車上線
Feature #33:
購物車上線
檔案
SC 是由 Sashiba Chou 於 超過 4 年 前更新
- 檔案 cart1.jpg cart1.jpg 已新增
- 檔案 billing_data.PNG billing_data.PNG 已新增
- 完成日期 從 2021-02-28 變更為 2021-08-18
- 狀態 從 New 變更為 In Progress
- 完成比例 從 0 變更為 10
- 預估工時 從 40:00 小時 變更為 200:00 小時
h1. 名詞解釋
- +RetuenURL+: 付款完成通知回傳網址, +幕後(Server POST)+, 請勿設定與 Client 端接收付款結果網址 OrderResultURL 相同位置,避免程式判斷錯誤; 請正確回應 1|OK 給綠界, (ex. http://your.web.site/receive.php)
- +ClientBackURL+: Client 端返回特店的按鈕連結, 消費者點選此按鈕後,會將頁面導回到此設定的網址(+不會帶付款結果+)
- +OrderResultURL+: Client 端回傳付款結果網址, 付款完成後,綠界會將付款結果參數以幕前(Client POST)回傳到該網址。若與[ClientBackURL]同時設定,將會以此參數為主。銀聯卡及非即時交易(ATM、CVS、BARCODE)不支援此參數。建議在測試階段時先不要設定此參數,可將畫面停留在綠界,看見綠界所提供的錯誤訊息,便可有效除錯
Credit card
- +PaymentInfoURL+: Server 端回傳付款相關資訊, 訂單建立完成後(+非付款完成+),綠界會 Server 端背景回傳消費者付款方式相關資訊(例:銀行代碼、繳費虛擬帳號繳費期限…等)(+頁面將會停留在綠界,顯示繳費的相關資訊。+),於網頁端回應 1|OK ??ex. http://your.web.site/paymentinfo.php??
ALL, ATM, CVS, BARCODE
- +ClientRedirectURL+: Client 端回傳付款相關資訊; 訂單建立完成後(非付款完成),綠界會 Client 端回傳消費者付款方式相關資訊(例:銀行代碼、繳費虛擬帳號繳費期限…等)且將頁面轉到特店指定的頁面。若設定此參數,將會使設定的返回特店的按鈕連結[ClientBackURL]失效(ex. http://your.web.site/ClientRedirectURL.php)
ALL, ATM, CVS, BARCODE
h1. 程式碼
- D:\Code\Web\hoosk_beasincere\hoosk\hoosk0\controllers\frontend*Cart.php*
- public function index()
$this->load->view('templates/cart', $this->data);
- public function insert_cart()
- public function update_cart()
- public function remove_cart($rowid)
- public function billing_data()
$this->load->view('templates/billing_data', $this->data);
!billing_data.png!
- public function checkout()
//儲存交易至資料庫
$oauth_uid = $this->session->userdata('oauth_uid');
$cart_info = $_POST['cart'];
$transaction_details = [];
...
$purchase_datetime = date("Y/m/d H:i:s");
$MerchantTradeNo = "Sincere".time() ;
$order_no = "order_".time() ;
$TotalAmount = 0;
foreach ($cart_info as $id => $cart) {
$data = array(
'oauth_uid' => $oauth_uid,
...
'lesson_id' => $cart['id'],
'quantity' => $cart['qty'],
'paid' => 0,
'should_pay' => $cart['price'] * $cart['qty'],
'TradeAmt' => 0,
//'TotalAmount' => $cart['price'] * $cart['qty'],
'purchase_datetime' => $purchase_datetime,
'description' => $cart['description'],
'rowid' => $cart['rowid'],
'MerchantTradeNo' => $MerchantTradeNo,
'order_no' => $order_no,
'activity_title' => $cart['name'],
'price' => $cart['price'],
'subtotal' => $cart['price'] * $cart['qty'],
);
//需要做error handling
//檢查重複購買
if($this->Transaction_model->insert_transaction($data)){
$TotalAmount += $data['subtotal'];
array_push($transaction_details, $data);
}
}
$this->cart->destroy();
$this->init_ecpay(array('MerchantTradeNo'=>$MerchantTradeNo,'MerchantTradeDate'=>$purchase_datetime, 'TotalAmount'=>$TotalAmount, 'transaction_details'=>$transaction_details));
- private function init_ecpay($data)
$obj->Send['StoreExpireDate'] = 3;
//CVS:以分鐘為單位
//BARCODE:以天為單位
//若未設定此參數,皆為預設值 7 天
- public function insert_payment_info()
- public function get_lessons()
- public function show_payment_info($order_no)
- public function receive()
- public function send_email($data)
!cart1.jpg!
動作