VM暫存
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

checkout_page.php 13KB

il y a 8 ans
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. <div data-items="checkout_page" class="content-new parking-bill-total">
  2. <section class="page">
  3. <div class="wrapper">
  4. <div class="pbt-plate-number">
  5. <h3><span id='checkout_lpr'></span></h3>
  6. </div>
  7. <form id="payment_data" role="form" method="post" target="_self" action="<?=APP_URL?>transfer_money/">
  8. <div class="pb-detail-list">
  9. <div class="pbd-list-box pbd-lb-separate">
  10. <dl>
  11. <dt>停車位置</dt>
  12. <dd><span id='checkout_station_name'></span></dd>
  13. </dl>
  14. <dl>
  15. <dt>繳費單號</dt>
  16. <dd><span id='checkout_order_no'></span></dd>
  17. </dl>
  18. <dl>
  19. <dt>入場時間</dt>
  20. <dd><span id='checkout_in_time'></span></dd>
  21. </dl>
  22. <dl>
  23. <dt>計價時間</dt>
  24. <dd><span id='checkout_balance_time'></span></dd>
  25. </dl>
  26. <dl>
  27. <dt>預計可離場時間</dt>
  28. <dd><span id='checkout_out_before_time'>交易成功 15 分鐘內</span></dd>
  29. </dl>
  30. <dl>
  31. <dt>停車費</dt>
  32. <dd class="red">NT$ <span id='checkout_amt'></span></dd>
  33. </dl>
  34. </div>
  35. <div class="pbd-list-box pbd-invoice">
  36. <dl>
  37. <dt>電子信箱</dt>
  38. <dd>
  39. <input type="text" id="email" name="email" class="form-control" placeholder="發票將寄信通知"
  40. data-validation="email"
  41. data-validation-optional="true"
  42. data-validation-error-msg="請輸入正確信箱<br/>例如:altob@gmail.com"
  43. data-validation-error-msg-container="#checkout_error_msg"
  44. />
  45. </dd>
  46. </dl>
  47. <dl>
  48. <dt>手機號碼</dt>
  49. <dd>
  50. <input type="text" id="mobile" name="mobile" class="form-control" placeholder="發票將寄簡訊通知"
  51. data-validation="custom"
  52. data-validation-optional="true"
  53. data-validation-regexp="^(?=.{10}$)09([0-9]+)$"
  54. data-validation-error-msg="請輸入正確手機號碼<br/>例如:0912345678"
  55. data-validation-error-msg-container="#checkout_error_msg"
  56. />
  57. </dd>
  58. </dl>
  59. <dl>
  60. <dt>開立發票方式</dt>
  61. <dd>
  62. <div class="pbd-select">
  63. <select>
  64. <option class="invoice_way1">二聯式發票</option>
  65. <option class="invoice_way2">手機條碼載具</option>
  66. <option class="invoice_way3">輸入統一編號</option>
  67. <!--option class="invoice_way4">捐贈發票</option-->
  68. </select>
  69. </div>
  70. </dd>
  71. </dl>
  72. <div class="inv_way iw_1"></div>
  73. <div class="inv_way iw_2">
  74. <dl>
  75. <dt></dt>
  76. <dd>
  77. <input type="text" id="invoice_receiver" name="invoice_receiver" class="form-control" placeholder="請輸入手機條碼"
  78. data-validation="custom"
  79. data-validation-regexp="^$|^(?=.{7}$)([A-Za-z0-9]+)$|^(?=.{8}$)\u002F([A-Za-z0-9]+)$"
  80. data-validation-error-msg="請輸入正確載具<br/>格式: / + 7碼 <br/>(共8碼)"
  81. data-validation-error-msg-container="#checkout_error_msg"
  82. />
  83. </dd>
  84. </dl>
  85. </div>
  86. <div class="inv_way iw_3">
  87. <dl>
  88. <dt></dt>
  89. <dd>
  90. <input type="text" id="company_no" name="company_no" class="form-control" placeholder="請輸入統一編號"
  91. data-validation="custom"
  92. data-validation-optional="true"
  93. data-validation-regexp="^(?=.{8}$)([0-9]+)$"
  94. data-validation-error-msg="請輸入正確統編<br/>例如:80682490"
  95. data-validation-error-msg-container="#checkout_error_msg"
  96. />
  97. </dd>
  98. </dl>
  99. </div>
  100. <div class="inv_way iw_4">
  101. <dl>
  102. <dt></dt>
  103. <dd>
  104. 25885-伊甸基金會
  105. </dd>
  106. </dl>
  107. </div>
  108. </div>
  109. <dl>
  110. <dt></dt>
  111. <dd class="red"><span id='checkout_error_msg'></span></dd>
  112. </dl>
  113. <div class="pbd-img-box">
  114. <!--img id='checkout_image' src="http://fakeimg.pl/768x461/ddd" alt=""-->
  115. <img id='checkout_image' src="" alt="">
  116. </div>
  117. <div class="form-group">
  118. <input id="order_no" type="hidden" name="order_no" value="0" />
  119. </div>
  120. </div>
  121. </form>
  122. <div class="fixed-btn-box fbb-1">
  123. <a class="btn blue-btn" onclick="transfer_money(event);">前往繳費</a>
  124. </div>
  125. </div>
  126. </section>
  127. </div>
  128. <script>
  129. // 載入
  130. function load_checkout_page()
  131. {
  132. $("#checkout_lpr").text('').text(current_altob_checkout_bill['lpr']);
  133. $("#checkout_station_name").text('').text(current_altob_checkout_bill['station_name']);
  134. $("#checkout_order_no").text('').text(current_altob_checkout_bill['order_no']);
  135. $("#checkout_in_time").text('').text(current_altob_checkout_bill['in_time']);
  136. $("#checkout_balance_time").text('').text(current_altob_checkout_bill['balance_time']);
  137. //$("#checkout_out_before_time").text('').text(current_altob_checkout_bill['balance_time']);
  138. $("#checkout_amt").text('').text(current_altob_checkout_bill['amt']);
  139. $("#checkout_image").attr('src', '').attr('src', current_altob_checkout_bill['image_url']);
  140. // 設定訂單編號
  141. $("#order_no").val("0").val(current_altob_checkout_bill['order_no']);
  142. // 明細
  143. /*
  144. $("#price_data_tbody").html("");
  145. // A. 依r_no 分群, 暫存到 tmp_r_no_array
  146. var tmp_r_no_array = [];
  147. for(lv1 in current_altob_checkout_bill['price_detail'])
  148. {
  149. if (lv1 == 0) { continue; }
  150. var today = current_altob_checkout_bill['price_detail'][lv1];
  151. for(lv2 in today)
  152. {
  153. if(lv2.match(/\u003A/)){ // 取出有時間的部份
  154. var detail = today[lv2];
  155. if(!(detail.r_no in tmp_r_no_array)){
  156. tmp_r_no_array[detail.r_no] = [];
  157. }
  158. tmp_r_no_array[detail.r_no].push([detail.r_no, '_', lv1, '_', lv2].join(''));
  159. }
  160. }
  161. }
  162. //console.log('tmp_r_no_array: ' + tmp_r_no_array);
  163. // B. 將 tmp_r_no_array 解析, 產生顯示用的 price_result_array
  164. var price_result_array = [];
  165. var last_r_no_keys_array = [];
  166. var check_p = 0;
  167. for(r_no in tmp_r_no_array)
  168. {
  169. var r_no_array = tmp_r_no_array[r_no].sort(); // 依r_no 排序
  170. //console.log(r_no + ' length: ' + r_no_array.length);
  171. for(key in r_no_array)
  172. {
  173. var keys = r_no_array[key].split('_');
  174. var r_no = keys[0];
  175. var lv1 = keys[1];
  176. var lv2 = keys[2];
  177. var time_str = [lv1, ' ', lv2].join('');
  178. var detail = current_altob_checkout_bill['price_detail'][lv1][lv2];
  179. var detail_p0_price = current_altob_checkout_bill['price_detail'][lv1].p0;
  180. var detail_limit0 = current_altob_checkout_bill['price_detail'][lv1].limit0;
  181. var detail_free0_min = current_altob_checkout_bill['price_detail'][lv1].free0_min;
  182. if(detail.p > 0){
  183. check_p += detail.p;
  184. var before_keys = last_r_no_keys_array.pop(); //r_no_array[key - 1].split('_');
  185. var before_r_no = before_keys[0];
  186. var before_lv1 = before_keys[1];
  187. var before_lv2 = before_keys[2];
  188. var before_time_str = [before_lv1, ' ', before_lv2].join('');
  189. var before_detail = current_altob_checkout_bill['price_detail'][before_lv1][before_lv2];
  190. // create result
  191. var data_p_desc = '';
  192. var data_p_time = '';
  193. var data_p_time_desc = ['*時段 ', before_time_str, '<br/>至 ', time_str].join('');
  194. var data_p_price_desc = [detail.p, ' 元'].join('');
  195. // p_desc
  196. if(detail.status == 1){
  197. data_p_desc = ['費率:每日最高收費上限 ', detail_limit0, ' 元,已達當日上限'].join(''); // '每日最高收費上限 150元';
  198. }else{
  199. data_p_desc = [' 每小時 ', 2 * detail_p0_price, ' 元,前 ', detail_free0_min, ' 分鐘免費。'].join(''); // '費率:每小時 20元';
  200. }
  201. // p_time
  202. var detail_part = [];
  203. if('h' in detail && detail.h > 0){
  204. detail_part.push(detail.h, ' 小時 ');
  205. }
  206. if('i' in detail && detail.i > 0){
  207. detail_part.push(detail.i, ' 分鐘');
  208. }
  209. //if(detail.p < before_detail_p2_price){detail_part.push(' (', r_no, ') ');}
  210. data_p_time = detail_part.join('');
  211. if(price_result_array.length > 0){
  212. if(r_no == price_result_array[price_result_array.length - 1].r_no){
  213. // 與上一筆結算為同一價錢週期時, 更新上一筆結算
  214. var last_result = price_result_array[price_result_array.length - 1];
  215. last_result.p_desc = '每日最高收費上限 150元';
  216. last_result.p_time = [last_result.p_time, '接續<br/><br/>', data_p_time].join('');;
  217. last_result.p_time_desc = [last_result.p_time_desc, ' 接續<br/><br/>', data_p_time_desc].join('');
  218. last_result.p_price_desc = [last_result.p_price_desc, ' + ', data_p_price_desc].join('');
  219. // push last
  220. last_r_no_keys_array.push(keys);
  221. continue;
  222. }
  223. }
  224. // 與上一筆結算不同價錢週期, 新增一筆結算
  225. var data = [];
  226. data.r_no = r_no;
  227. data.p_desc = data_p_desc;
  228. data.p_time = data_p_time;
  229. data.p_time_desc = data_p_time_desc;
  230. data.p_price_desc = data_p_price_desc;
  231. price_result_array.push(data);
  232. // push last
  233. last_r_no_keys_array.push(keys);
  234. }else{
  235. // push last
  236. last_r_no_keys_array.push(keys);
  237. }
  238. }
  239. }
  240. // C. 根據 price_result_array, 產生頁面顯示
  241. var seq = 0;
  242. for(key in price_result_array)
  243. {
  244. var result = price_result_array[key];
  245. var meta_0_str = ++seq;
  246. $("#price_data_list>[data-tag=p_no]").text(meta_0_str);
  247. $("#price_data_list>[data-tag=p_meta]").html(result.p_time_desc);
  248. $("#price_data_list>[data-tag=p_result]").html(result.p_time);
  249. $("<tr data-day='day'>"+$("#price_data_list").html()+"</tr>").appendTo("#price_data_tbody");
  250. $("#price_data_list>[data-tag=p_no]").text("");
  251. $("#price_data_list>[data-tag=p_meta]").html(result.p_desc);
  252. $("#price_data_list>[data-tag=p_result]").html(result.p_price_desc);
  253. $("<tr data-day='day' style='color: red;'>"+$("#price_data_list").html()+"</tr>").appendTo("#price_data_tbody");
  254. }
  255. var bill_time_part = ['共 '];
  256. if('bill_days' in jdata && jdata.bill_days > 0){
  257. bill_time_part.push(jdata.bill_days, ' 天 : ');
  258. }
  259. if('bill_hours' in jdata && jdata.bill_hours > 0){
  260. bill_time_part.push(jdata.bill_hours, ' 小時 : ');
  261. }
  262. if('bill_mins' in jdata && jdata.bill_mins > 0){
  263. bill_time_part.push(jdata.bill_mins, ' 分鐘');
  264. }
  265. $("#show_amt_detail_time").text(bill_time_part.join(''));
  266. $("#show_amt_detail_price").text([jdata.amt, ' 元'].join(''));
  267. */
  268. }
  269. // 開啟轉帳畫面
  270. function transfer_money(event)
  271. {
  272. event.preventDefault();
  273. if(! $("#payment_data").isValid()) return false;
  274. if($("#email").val() == '' && $("#mobile").val() == '')
  275. {
  276. alertify_error("請至少提供一項發票通知方式<br/>1. 電子信箱 <br/>2. 或 手機號碼<br/><br/>謝謝!!");
  277. return false;
  278. }
  279. /*
  280. var order_no = $("#checkout_order_no").text() == '' ? '0' : $("#checkout_order_no").text();
  281. var invoice_receiver = $("#invoice_receiver").val() == '' ? '0' : $("#invoice_receiver").val();
  282. var company_no = $("#company_no").val() == '' ? '0' : $("#company_no").val();
  283. var email = $("#email").val() == '' ? '0' : $("#email").val();
  284. var mobile = $("#mobile").val() == '' ? '0' : $("#mobile").val();
  285. */
  286. payment_data.submit();
  287. }
  288. </script>
  289. <!-- 這段要放後面才能運作 -->
  290. <script src="/libs/opay/lib/actions.js"></script>