Closed zouber closed 9 years ago
Note: 把支援線上金流(不支援其實就跟以前一樣)與否做成可以用開關切換的
金流按鈕設定說明
但是滑鼠移上去之後,圖片要換成別張: 原始路徑: /media/img/payment_1.png /media/img/payment_2.png /media/img/payment_3.png 滑鼠 hover 之後: /media/img/payment_1_hover.png /media/img/payment_2_hover.png /media/img/payment_3_hover.png
金流部分的UI 在 --> /media/element_template/testUnpaid_order_block.html
設定匯款成功通知的地方在 付款類別 --> 其他項目管理 --> 付款設定,可設定一個 url 專門處理後續事項
要查詢交易單狀態:
例如要查詢 2014-09 的交易單,就點 2014-09 的那個 "2" 連結,就會展開 9 月份的交易單明細
交易單統計 --> 狀態筆數表 會有詳細的記載(成功授權 or 授權失敗 的單)
疑點:
本來參數檢查碼1 參數檢查碼2 的查詢界面不見了 存取通行碼 查找的地方也不見了,不曉得發生什麼問題
9/17 先測試了" 虛擬帳號 ATM 轉帳付款" 匯款後(約當日下午六點半) 在交易單統計 --> 有效金額表裡會顯示
我方 server 會收到一個對方 server 發的 http request(GET)
/payment_success_notify/? access_key=42337043 txid=zouber_testing amount=100 pay_type=2 status=1 tid=201409171169 language=tchinese verify=9df3e41f7cf179f0250600e5bae5e251 cname=%E6%9D%8E%E7%B5%B2%E7%B7%9A (李絲線) caddress=%E5%8F%B0%E5%8C%97%E5%B8%82%E4%BF%A1%E7%BE%A9%E8%B7%AF82%E5%B7%B7100%E8%99%9F (台北市信義路82巷100號) ctel=0928234348 cemail=zouber129%40gmail.com xname=%E6%9D%8E%E7%B5%B2%E7%B7%9A2 (李絲線2) xaddress=%E5%8F%B0%E5%8C%97%E5%B8%82%E4%BF%A1%E7%BE%A9%E8%B7%AF82%E5%B7%B7108%E8%99%9F (台北市信義路82巷108號) xtel=0928234348%20
跟既有 return_url 會帶上的參數差不多,初始交易表單(TransferMoneyTestPage.html) 的 html 參考範例:
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Fanshop money tarnsfer demo page</title>
</head>
<body>
<form name="pay" method="post" action="https://www.twv.com.tw/openpay/pay.php">
<input type="hidden" name="version" value="2.1">
<input type="hidden" name="mid" value="{{ data.mid}}"> <!--商家編號-->
<input type="hidden" name="iid" value="0"> <!--分期付款期數 0: 不分期 -->
<input type="hidden" name="txid" value="{{ data.order_id }}"> <!--訂單編號-->
<input type="hidden" name="amount" value="{{ data.amount }}"> <!--付款金額-->
<input type="hidden" name="verify" value="{{ data.verify}}">
<input type="hidden" name="charset" value="UTF-8">
<!--<input type="hidden" name="mode" value="2">-->
<input type="hidden" name="return_url" value="{{ data.return_url}}">
<input type="hidden" name="language" value="{{ data.language }}">
<input type="hidden" name="cname" value="李絲線"> <!-- 消費者姓名 -->
<input type="hidden" name="caddress" value="台北市信義路82巷100號"> <!-- 消費者地址 -->
<input type="hidden" name="cemail" value="zouber129@gmail.com"> <!-- 消費者mail -->
<input type="hidden" name="ctel" value="0928234348"> <!-- 收貨人地址 -->
<input type="hidden" name="xname" value="李絲線2"> <!-- 收貨人姓名 -->
<input type="hidden" name="xaddress" value="台北市信義路82巷108號">
<input type="hidden" name="xtel" value="0928234348"> <!-- 收貨人電話 -->
<input type="hidden" name="select_paymethod" value="1">
<!-- 限定使用付款方式
指定此參數, 則消費者於 OpenPay 的付款僅可使用此付款方式完成.
允許值 [1,2,4,8,9,10,11,12,13,14], 無預設值.
1:信用卡, 2:虛擬帳號, 4:WebATM, 8:便利超商, 9:7-11 ibon, 10:中國銀聯卡, 11:PayPal, 12:全家 FamiPort, 13:支付寶, 14:財富通. 如此便可以省去讓消費者再選一次的困擾(因為他在 fanshop 就已經會選一次)
-->
<!--<input type="hidden" name="expire_date" value="YYYY-MM-DD">-->
</form>
<script language="JavaScript"><!--
// submit transfer money form when this page been open, automatically(sample code)
document.pay.submit();
// --></script>
</body>
</html>
金額入帳後,應在 帳務管理 --> 交易單請款 處可以看到可請款的交易單
匯款成功後,購買人會收到下列的交易成功 mail
9/18 測試信用卡付款
redirect 頁面接收參數
經過實驗,台灣里用 POST 回傳的資料皆為 unicode 格式,所以不必再轉字串儲存,否則會產生以下錯誤
Note: 今天打電話去確認,對方說讀家的付款狀態是OK的,參數檢查碼的部分現在基於政策,已經隱藏起來,在界面裡面看不到
(信用卡付款) 經思考後可行的流程:
注意:paid order 建立並不代表交易完成,此時 paid order 的狀態為 'credit_card-unpaid',要等台灣里真的收到錢重新導向回來,才會改為 'paid',此時店家才會看得到這筆單
注意:由於現在是採取 "先送出 PaidOrder" 的方式,但使用者未必會真的付款,但在還沒付款之前,那筆PaidOrder 的 status 只會是 credit_card-unpaid(Order 的status 也會是 unpaid),所以並不會出現在店家的介面裡,如果使用者事後沒有付錢,那該筆訂單也就放在那裡,不會造成影響,只是會佔儲存空間。
尚未完成事項:
測試用金額紀錄:
先跟政漢拿了一百元
我測了信用卡一次,虛擬帳號一次,共計200元
10/22 轉出100元兩次,共計 200 元 10/23 轉出100元三次,共計300元
10/23 iphone 5c 上的 Chrome 測試,手機的視窗無法自己關閉,但手動關閉後的流程運行正常,也可以成功送出訂單
此次交易成功,金額為 100 元
10/27 iphone 5c 上的 Chrome 測試,這次使用 台北富邦的 Master Card,有3D 動態驗證碼(透過簡訊發送),通過驗證,完成 100 元的交易,的確沒有再收到台灣里的通知信(已經關閉掉)
10/29 整條流程測試,這次使用 花旗信用卡(Visa),完成100元的交易,有收到台灣里通知
現行線上信用卡付款機制流程追蹤:
Note: 為了怕"修改出貨狀態"和"修改留言"的兩次分開的 request 衝突導致 race condition,會設置 db 的號誌系統(訂單成立時會有一筆紀錄,若此紀錄還沒被消除掉,則代表訂單出貨狀態還沒被計算出來,此時留言先"寄放"在db 裏的某處,等到出貨狀態計算那段時,再去撈"寄放"在db 的留言,把它寫入訂單資訊裡)。
經過詢問台灣里客服後,買家收到信件的設定是不能改的 必然會收到信,唯一能改的只有"賣家" 是否收得到信
10/31 調查之前信用卡付款出貨管理數據會錯誤的問題,發現錯誤的原因在於之前 /api/vendorConfirmPayment/ 程式裡面有錯誤,而該 api 被當成 task 送進 task queue 但因為程式碼有錯誤,這個 task 就自動一直被反覆重新執行(task queue 有反覆嘗試次數) 被執行了 13 次之多,所以該品項的需求量大亂
第一次送入出貨管理系統的記錄檔:可以發現邏輯計算是正常的
到最後因為反覆執行了 13 次,可以觀察到各種數據被扭曲的情形:
Order #28648 的 OrderInventoryRecord 如下(經過反覆執行導致錯誤的狀態):
Order #28648 本身狀態如下:
而 ProductInventoryQuantity 的錯誤狀態則如下:
手動修復前備份
11/1 測試產生 PaidOrder #6623 整個流程正確無誤 又轉了100元
針對付款成功寄發通知信給賣家的技術部份,開了 #533
最新成立的信用卡測試訂單,其狀態如下(因為表格太長, 所以由左到右切四段): Paid order id = 6623
11/3 凌晨加上寄通知信(給買家)流程後,再次測試,轉100元。
因為中間發生程式錯誤,再次測試,再轉100元
再轉100元
再次轉100元
再次轉100 元
11/3 開會時 live demo 給大家看,又匯100 元
現只剩要修改台灣里的付款廠商名稱/帳號
詢問台灣里,修改的方式
修改廠商名稱: 寄信到 opp@twe.com.tw
修改結帳銀行帳戶: 傳真帳戶存摺影本(要註明廠商編號)到 06-7234-736
11/4 上線前測試,測到 error,匯了100元
後來修復 error,在測一次,又 100 元
本次製作線上信用卡服務,共計轉帳 2000 元(台灣里報表介面為準),之後會驗證請款流程 目前看起來是10 天後可以請款
上線後產生了 #537 #539 #540 等error,都排除後產生第一筆訂單,通知信如下:
店家端:
買家端:
已完成,close
經過之前的外包案收回統整,目前對於金流部分掌握度已經很高 預計納入實作排程