admincp_ec.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: admincp_ec.php 30969 2012-07-04 10:18:10Z monkey $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. if(!defined('APPTYPEID')) {
  12. define('APPTYPEID', 2);
  13. }
  14. $checktype = $_GET['checktype'];
  15. cpheader();
  16. if($operation == 'alipay') {
  17. $settings = C::t('common_setting')->fetch_all(array('ec_account', 'ec_contract'));
  18. if(!empty($checktype)) {
  19. require_once DISCUZ_ROOT.'./api/trade/api_alipay.php';
  20. if($checktype == 'credit') {
  21. ob_end_clean();
  22. dheader('location: '.credit_payurl(0.01, $orderid));
  23. } elseif($checktype == 'virtualgoods') {
  24. $pay = array(
  25. 'logistics_type' => 'VIRTUAL'
  26. );
  27. $trade = array(
  28. 'subject' => $lang['ec_alipay_check_virtualgoodssubject'],
  29. 'itemtype' => 0.01,
  30. 'account' => $settings['ec_account'],
  31. );
  32. $tradelog = array(
  33. 'orderid' => 'TEST'.dgmdate(TIMESTAMP, 'YmdHis').random(18),
  34. 'baseprice' => 0.01,
  35. 'number' => 1,
  36. 'transportfee' => 0,
  37. );
  38. dheader('location: '.trade_payurl($pay, $trade, $tradelog));
  39. } elseif($checktype == 'goods') {
  40. $pay = array(
  41. 'logistics_type' => 'EMS',
  42. 'transport' => 'SELLER_PAY',
  43. );
  44. $trade = array(
  45. 'subject' => $lang['ec_alipay_check_goodssubject'],
  46. 'itemtype' => 1,
  47. 'account' => $settings['ec_account'],
  48. );
  49. $tradelog = array(
  50. 'orderid' => 'TEST'.dgmdate(TIMESTAMP, 'YmdHis').random(18),
  51. 'baseprice' => 0.01,
  52. 'number' => 1,
  53. 'transportfee' => 0,
  54. );
  55. dheader('location: '.trade_payurl($pay, $trade, $tradelog));
  56. }
  57. exit;
  58. }
  59. list($ec_contract, $ec_securitycode, $ec_partner, $ec_creditdirectpay) = explode("\t", authcode($settings['ec_contract'], 'DECODE', $_G['config']['security']['authkey']));
  60. $ec_securitycodemask = $ec_securitycode ? $ec_securitycode{0}.'********'.substr($ec_securitycode, -4) : '';
  61. if(!submitcheck('alipaysubmit')) {
  62. shownav('extended', 'nav_ec');
  63. showsubmenu('nav_ec', array(
  64. array('nav_ec_config', 'setting&operation=ec', 0),
  65. array('nav_ec_tenpay', 'ec&operation=tenpay', 0),
  66. array('nav_ec_alipay', 'ec&operation=alipay', 1),
  67. array('nav_ec_credit', 'ec&operation=credit', 0),
  68. array('nav_ec_orders', 'ec&operation=orders', 0),
  69. array('nav_ec_tradelog', 'tradelog', 0),
  70. array('nav_ec_inviteorders', 'ec&operation=inviteorders', 0)
  71. ));
  72. showtips('ec_alipay_tips');
  73. showformheader('ec&operation=alipay');
  74. showtableheader('','nobottom');
  75. showtitle('ec_alipay');
  76. showsetting('ec_alipay_account', 'settingsnew[ec_account]', $settings['ec_account'], 'text');
  77. showsetting('ec_alipay_check', '', '',
  78. '<a href="'.ADMINSCRIPT.'?action=ec&operation=alipay&checktype=credit" target="_blank">'.$lang['ec_alipay_checklink_credit'].'</a><br />'
  79. );
  80. showtitle('ec_contract');
  81. showsetting('ec_alipay_creditdirectpay', 'settingsnew[ec_creditdirectpay]', $ec_creditdirectpay, 'radio', '', 0, '', ' onclick="changeAliApi(this.value)"');
  82. showsetting('ec_alipay_partner', 'settingsnew[ec_partner]', $ec_partner, 'text');
  83. showsetting('ec_alipay_securitycode', 'settingsnew[ec_securitycode]', $ec_securitycodemask, 'text');
  84. showtablefooter();
  85. showtableheader('', 'notop');
  86. showsubmit('alipaysubmit');
  87. showtablefooter();
  88. showformfooter();
  89. echo <<<EOT
  90. <script type="text/JavaScript">
  91. function changeAliApi(type) {
  92. var apiUrl = 'https://b.alipay.com/order/pidKey.htm?pid=2088501719138773&product=';
  93. if(type == 1) {
  94. apiUrl += 'fastpay';
  95. } else {
  96. apiUrl += 'dualpay';
  97. }
  98. $('aliapitype').href = apiUrl;
  99. }
  100. changeAliApi($ec_creditdirectpay);
  101. </script>
  102. EOT;
  103. } else {
  104. $settingsnew = $_GET['settingsnew'];
  105. $settingsnew['ec_contract'] = 0;
  106. if(!empty($settingsnew['ec_securitycode']) && !empty($settingsnew['ec_partner'])) {
  107. $settingsnew['ec_contract'] = 1;
  108. }
  109. if($settingsnew['ec_account'] && !$settingsnew['ec_contract']) {
  110. cpmsg('alipay_not_contract', 'action=ec&operation=alipay', 'error');
  111. }
  112. $settingsnew['ec_account'] = trim($settingsnew['ec_account']);
  113. $settingsnew['ec_securitycode'] = trim($settingsnew['ec_securitycode']);
  114. C::t('common_setting')->update('ec_account', $settingsnew['ec_account']);
  115. $ec_securitycodemasknew = $settingsnew['ec_securitycode'] ? $settingsnew['ec_securitycode']{0}.'********'.substr($settingsnew['ec_securitycode'], -4) : '';
  116. $settingsnew['ec_securitycode'] = $ec_securitycodemasknew == $ec_securitycodemask ? $ec_securitycode : $settingsnew['ec_securitycode'];
  117. $ec_contract = addslashes(authcode($settingsnew['ec_contract']."\t".$settingsnew['ec_securitycode']."\t".$settingsnew['ec_partner']."\t".$settingsnew['ec_creditdirectpay'], 'ENCODE', $_G['config']['security']['authkey']));
  118. C::t('common_setting')->update('ec_contract', $ec_contract);
  119. updatecache('setting');
  120. cpmsg('alipay_succeed', 'action=ec&operation=alipay', 'succeed');
  121. }
  122. } elseif($operation == 'tenpay') {
  123. $settings = C::t('common_setting')->fetch_all(array('ec_tenpay_direct', 'ec_tenpay_account', 'ec_tenpay_bargainor', 'ec_tenpay_key', 'ec_tenpay_opentrans_chnid', 'ec_tenpay_opentrans_key'));
  124. if(!empty($checktype)) {
  125. require_once DISCUZ_ROOT.'./api/trade/api_tenpay.php';
  126. if($checktype == 'credit') {
  127. dheader('location: '.credit_payurl(1, $orderid));
  128. } elseif($checktype == 'virtualgoods') {
  129. $pay = array(
  130. 'logistics_type' => 'VIRTUAL'
  131. );
  132. $trade = array(
  133. 'subject' => $lang['ec_tenpay_check_virtualgoodssubject'],
  134. 'itemtype' => 1,
  135. 'tenpayaccount' => $settings['ec_tenpay_opentrans_chnid'],
  136. );
  137. $tradelog = array(
  138. 'orderid' => 'TEST'.dgmdate(TIMESTAMP, 'YmdHis').random(18),
  139. 'baseprice' => 1,
  140. 'number' => 1,
  141. 'transportfee' => 0,
  142. );
  143. dheader('location: '.trade_payurl($pay, $trade, $tradelog));
  144. } elseif($checktype == 'goods') {
  145. $pay = array(
  146. 'logistics_type' => 'EMS',
  147. 'transport' => 'SELLER_PAY',
  148. );
  149. $trade = array(
  150. 'subject' => $lang['ec_tenpay_check_goodssubject'],
  151. 'itemtype' => 1,
  152. 'tenpayaccount' => $settings['ec_tenpay_opentrans_chnid'],
  153. );
  154. $tradelog = array(
  155. 'orderid' => 'TEST'.dgmdate(TIMESTAMP, 'YmdHis').random(18),
  156. 'baseprice' => 1,
  157. 'number' => 1,
  158. 'transportfee' => 0,
  159. );
  160. dheader('location: '.trade_payurl($pay, $trade, $tradelog));
  161. }
  162. exit;
  163. }
  164. if(!submitcheck('tenpaysubmit')) {
  165. shownav('extended', 'nav_ec');
  166. showsubmenu('nav_ec', array(
  167. array('nav_ec_config', 'setting&operation=ec', 0),
  168. array('nav_ec_tenpay', 'ec&operation=tenpay', 1),
  169. array('nav_ec_alipay', 'ec&operation=alipay', 0),
  170. array('nav_ec_credit', 'ec&operation=credit', 0),
  171. array('nav_ec_orders', 'ec&operation=orders', 0),
  172. array('nav_ec_tradelog', 'tradelog', 0),
  173. array('nav_ec_inviteorders', 'ec&operation=inviteorders', 0)
  174. ));
  175. showtips('ec_tenpay_tips');
  176. showformheader('ec&operation=tenpay');
  177. showtableheader('','nobottom');
  178. showtitle('ec_tenpay_opentrans');
  179. showsetting('ec_tenpay_opentrans_chnid', 'settingsnew[ec_tenpay_opentrans_chnid]', $settings['ec_tenpay_opentrans_chnid'], 'text');
  180. $tenpay_securitycodemask = $settings['ec_tenpay_opentrans_key'] ? $settings['ec_tenpay_opentrans_key']{0}.'********'.substr($settings['ec_tenpay_opentrans_key'], -4) : '';
  181. showsetting('ec_tenpay_opentrans_key', 'settingsnew[ec_tenpay_opentrans_key]', $tenpay_securitycodemask, 'text');
  182. showtitle('ec_tenpay');
  183. showsetting('ec_tenpay_bargainor', 'settingsnew[ec_tenpay_bargainor]', $settings['ec_tenpay_bargainor'], 'text');
  184. $tenpay_securitycodemask = $settings['ec_tenpay_key'] ? $settings['ec_tenpay_key']{0}.'********'.substr($settings['ec_tenpay_key'], -4) : '';
  185. showsetting('ec_tenpay_key', 'settingsnew[ec_tenpay_key]', $tenpay_securitycodemask, 'text');
  186. showsetting('ec_tenpay_check', '', '',
  187. '<a href="'.ADMINSCRIPT.'?action=ec&operation=tenpay&checktype=credit" target="_blank">'.$lang['ec_alipay_checklink_credit'].'</a><br />'.
  188. '<a href="'.ADMINSCRIPT.'?action=ec&operation=tenpay&checktype=virtualgoods" target="_blank">'.$lang['ec_alipay_checklink_virtualgoods'].'</a><br />'.
  189. '<a href="'.ADMINSCRIPT.'?action=ec&operation=tenpay&checktype=goods" target="_blank">'.$lang['ec_alipay_checklink_goods'].'</a><br />'
  190. );
  191. showtablefooter();
  192. showtableheader('', 'notop');
  193. showsubmit('tenpaysubmit');
  194. showtablefooter();
  195. showformfooter();
  196. } else {
  197. $settingsnew = $_GET['settingsnew'];
  198. $settingsnew['ec_tenpay_bargainor'] = trim($settingsnew['ec_tenpay_bargainor']);
  199. $settingsnew['ec_tenpay_key'] = trim($settingsnew['ec_tenpay_key']);
  200. $tenpay_securitycodemask = $settings['ec_tenpay_key'] ? $settings['ec_tenpay_key']{0}.'********'.substr($settings['ec_tenpay_key'], -4) : '';
  201. $settingsnew['ec_tenpay_key'] = $tenpay_securitycodemask == $settingsnew['ec_tenpay_key'] ? $settings['ec_tenpay_key'] : $settingsnew['ec_tenpay_key'];
  202. $settingsnew['ec_tenpay_opentrans_key'] = trim($settingsnew['ec_tenpay_opentrans_key']);
  203. $tenpay_securitycodemask = $settings['ec_tenpay_opentrans_key'] ? $settings['ec_tenpay_opentrans_key']{0}.'********'.substr($settings['ec_tenpay_opentrans_key'], -4) : '';
  204. $settingsnew['ec_tenpay_opentrans_key'] = $tenpay_securitycodemask == $settingsnew['ec_tenpay_opentrans_key'] ? $settings['ec_tenpay_opentrans_key'] : $settingsnew['ec_tenpay_opentrans_key'];
  205. if($settingsnew['ec_tenpay_direct'] && (!empty($settingsnew['ec_tenpay_bargainor']) && !preg_match('/^\d{10}$/', $settingsnew['ec_tenpay_bargainor']))) {
  206. cpmsg('tenpay_bargainor_invalid', 'action=ec&operation=tenpay', 'error');
  207. }
  208. if($settingsnew['ec_tenpay_direct'] && (empty($settingsnew['ec_tenpay_key']) || !preg_match('/^[a-zA-Z0-9]{32}$/', $settingsnew['ec_tenpay_key']))) {
  209. cpmsg('tenpay_key_invalid', 'action=ec&operation=tenpay', 'error');
  210. }
  211. $data = array('ec_tenpay_direct' => $settingsnew['ec_tenpay_direct'],
  212. 'ec_tenpay_bargainor' => $settingsnew['ec_tenpay_bargainor'],
  213. 'ec_tenpay_key' => $settingsnew['ec_tenpay_key'],
  214. 'ec_tenpay_opentrans_chnid' => $settingsnew['ec_tenpay_opentrans_chnid'],
  215. 'ec_tenpay_opentrans_key' => $settingsnew['ec_tenpay_opentrans_key']);
  216. C::t('common_setting')->update_batch($data);
  217. updatecache('setting');
  218. cpmsg('tenpay_succeed', 'action=ec&operation=tenpay', 'succeed');
  219. }
  220. } elseif($operation == 'orders') {
  221. $orderurl = array(
  222. 'alipay' => 'https://www.alipay.com/trade/query_trade_detail.htm?trade_no=',
  223. 'tenpay' => 'https://www.tenpay.com/med/tradeDetail.shtml?trans_id=',
  224. );
  225. if(!$_G['setting']['creditstrans'] || !$_G['setting']['ec_ratio']) {
  226. cpmsg('orders_disabled', '', 'error');
  227. }
  228. if(!submitcheck('ordersubmit')) {
  229. echo '<script type="text/javascript" src="static/js/calendar.js"></script>';
  230. shownav('extended', 'nav_ec');
  231. showsubmenu('nav_ec', array(
  232. array('nav_ec_config', 'setting&operation=ec', 0),
  233. array('nav_ec_tenpay', 'ec&operation=tenpay', 0),
  234. array('nav_ec_alipay', 'ec&operation=alipay', 0),
  235. array('nav_ec_credit', 'ec&operation=credit', 0),
  236. array('nav_ec_orders', 'ec&operation=orders', 1),
  237. array('nav_ec_tradelog', 'tradelog', 0),
  238. array('nav_ec_inviteorders', 'ec&operation=inviteorders', 0)
  239. ));
  240. showtips('ec_orders_tips');
  241. showtagheader('div', 'ordersearch', !submitcheck('searchsubmit', 1));
  242. showformheader('ec&operation=orders');
  243. showtableheader('ec_orders_search');
  244. showsetting('ec_orders_search_status', array('orderstatus', array(
  245. array('', $lang['ec_orders_search_status_all']),
  246. array(1, $lang['ec_orders_search_status_pending']),
  247. array(2, $lang['ec_orders_search_status_auto_finished']),
  248. array(3, $lang['ec_orders_search_status_manual_finished'])
  249. )), intval($orderstatus), 'select');
  250. showsetting('ec_orders_search_id', 'orderid', $orderid, 'text');
  251. showsetting('ec_orders_search_users', 'users', $users, 'text');
  252. showsetting('ec_orders_search_buyer', 'buyer', $buyer, 'text');
  253. showsetting('ec_orders_search_admin', 'admin', $admin, 'text');
  254. showsetting('ec_orders_search_submit_date', array('sstarttime', 'sendtime'), array($sstarttime, $sendtime), 'daterange');
  255. showsetting('ec_orders_search_confirm_date', array('cstarttime', 'cendtime'), array($cstarttime, $cendtime), 'daterange');
  256. showsubmit('searchsubmit');
  257. showtablefooter();
  258. showformfooter();
  259. showtagfooter('div');
  260. if(submitcheck('searchsubmit', 1)) {
  261. $start_limit = ($page - 1) * $_G['tpp'];
  262. $ordercount = C::t('forum_order')->count_by_search(null, $_GET['orderstatus'], $_GET['orderid'], null, ($_GET['users'] ? explode(',', str_replace(' ', '', $_GET['users'])) : null), $_GET['buyer'], $_GET['admin'], strtotime($_GET['sstarttime']), strtotime($_GET['sendtime']), strtotime($_GET['cstarttime']), strtotime($_GET['cendtime']));
  263. $multipage = multi($ordercount, $_G['tpp'], $page, ADMINSCRIPT."?action=ec&operation=orders&searchsubmit=yes&orderstatus={$_GET['orderstatus']}&orderid={$_GET['orderid']}&users={$_GET['users']}&buyer={$_GET['buyer']}&admin={$_GET['admin']}&sstarttime={$_GET['sstarttime']}&sendtime={$_GET['sendtime']}&cstarttime={$_GET['cstarttime']}&cendtime={$_GET['cendtime']}");
  264. showtagheader('div', 'orderlist', TRUE);
  265. showformheader('ec&operation=orders');
  266. showtableheader('result');
  267. showsubtitle(array('', 'ec_orders_id', 'ec_orders_status', 'ec_orders_buyer', 'ec_orders_amount', 'ec_orders_price', 'ec_orders_submitdate', 'ec_orders_confirmdate'));
  268. foreach(C::t('forum_order')->fetch_all_by_search(null, $_GET['orderstatus'], $_GET['orderid'], null, ($_GET['users'] ? explode(',', str_replace(' ', '', $_GET['users'])) : null), $_GET['buyer'], $_GET['admin'], strtotime($_GET['sstarttime']), strtotime($_GET['sendtime']), strtotime($_GET['cstarttime']), strtotime($_GET['cendtime']), $start_limit, $_G['tpp']) as $order) {
  269. switch($order['status']) {
  270. case 1: $order['orderstatus'] = $lang['ec_orders_search_status_pending']; break;
  271. case 2: $order['orderstatus'] = '<b>'.$lang['ec_orders_search_status_auto_finished'].'</b>'; break;
  272. case 3: $order['orderstatus'] = '<b>'.$lang['ec_orders_search_status_manual_finished'].'</b><br />(<a href="home.php?mod=space&username='.rawurlencode($order['admin']).'" target="_blank">'.$order['admin'].'</a>)'; break;
  273. }
  274. $order['submitdate'] = dgmdate($order['submitdate']);
  275. $order['confirmdate'] = $order['confirmdate'] ? dgmdate($order['confirmdate']) : 'N/A';
  276. list($orderid, $apitype) = explode("\t", $order['buyer']);
  277. $apitype = $apitype ? $apitype : 'alipay';
  278. $orderid = '<a href="'.$orderurl[$apitype].$orderid.'" target="_blank">'.$orderid.'</a>';
  279. showtablerow('', '', array(
  280. "<input class=\"checkbox\" type=\"checkbox\" name=\"validate[]\" value=\"$order[orderid]\" ".($order['status'] != 1 ? 'disabled' : '').">",
  281. "$order[orderid]<br />$orderid",
  282. $order[orderstatus],
  283. "<a href=\"home.php?mod=space&uid=$order[uid]\" target=\"_blank\">$order[username]</a>",
  284. "{$_G[setting][extcredits][$_G[setting][creditstrans]]['title']} $order[amount] {$_G[setting][extcredits][$_G[setting][creditstrans]]['unit']}",
  285. "$lang[rmb] $order[price] $lang[rmb_yuan]",
  286. $order[submitdate],
  287. $order[confirmdate]
  288. ));
  289. }
  290. showsubmit('ordersubmit', 'submit', '<input type="checkbox" name="chkall" id="chkall" class="checkbox" onclick="checkAll(\'prefix\', this.form, \'validate\')" /><label for="chkall">'.cplang('ec_orders_validate').'</label>', '<a href="#" onclick="$(\'orderlist\').style.display=\'none\';$(\'ordersearch\').style.display=\'\';">'.cplang('research').'</a>', $multipage);
  291. showtablefooter();
  292. showformfooter();
  293. showtagfooter('div');
  294. }
  295. } else {
  296. $numvalidate = 0;
  297. if($_GET['validate']) {
  298. $orderids = array();
  299. $confirmdate = dgmdate(TIMESTAMP);
  300. foreach(C::t('forum_order')->fetch_all($_GET['validate'], '1') as $order) {
  301. updatemembercount($order['uid'], array($_G['setting']['creditstrans'] => $order['amount']));
  302. $orderids[] = $order['orderid'];
  303. $submitdate = dgmdate($order['submitdate']);
  304. notification_add($order['uid'], 'system', 'addfunds', array(
  305. 'orderid' => $order['orderid'],
  306. 'price' => $order['price'],
  307. 'from_id' => 0,
  308. 'from_idtype' => 'buycredit',
  309. 'value' => $_G['setting']['extcredits'][$_G['setting']['creditstrans']]['title'].' '.$order['amount'].' '.$_G['setting']['extcredits'][$_G['setting']['creditstrans']]['unit']
  310. ), 1);
  311. }
  312. if($orderids) {
  313. C::t('forum_order')->update($orderids, array('status' => '3', 'admin' => $_G['username'], 'confirmdate' => $_G['timestamp']));
  314. }
  315. }
  316. cpmsg('orders_validate_succeed', "action=ec&operation=orders&searchsubmit=yes&orderstatus={$_GET['orderstatus']}&orderid={$_GET['orderid']}&users={$_GET['users']}&buyer={$_GET['buyer']}&admin={$_GET['admin']}&sstarttime={$_GET['sstarttime']}&sendtime={$_GET['sendtime']}&cstarttime={$_GET['cstarttime']}&cendtime={$_GET['cendtime']}", 'succeed');
  317. }
  318. } elseif($operation == 'credit') {
  319. $defaultrank = array(
  320. 1 => 4,
  321. 2 => 11,
  322. 3 => 41,
  323. 4 => 91,
  324. 5 => 151,
  325. 6 => 251,
  326. 7 => 501,
  327. 8 => 1001,
  328. 9 => 2001,
  329. 10 => 5001,
  330. 11 => 10001,
  331. 12 => 20001,
  332. 13 => 50001,
  333. 14 => 100001,
  334. 15 => 200001
  335. );
  336. if(!submitcheck('creditsubmit')) {
  337. $ec_credit = C::t('common_setting')->fetch('ec_credit', true);
  338. $ec_credit = $ec_credit ? $ec_credit : array(
  339. 'maxcreditspermonth' => '6',
  340. 'rank' => $defaultrank
  341. );
  342. shownav('extended', 'nav_ec');
  343. showsubmenu('nav_ec', array(
  344. array('nav_ec_config', 'setting&operation=ec', 0),
  345. array('nav_ec_tenpay', 'ec&operation=tenpay', 0),
  346. array('nav_ec_alipay', 'ec&operation=alipay', 0),
  347. array('nav_ec_credit', 'ec&operation=credit', 1),
  348. array('nav_ec_orders', 'ec&operation=orders', 0),
  349. array('nav_ec_tradelog', 'tradelog', 0),
  350. array('nav_ec_inviteorders', 'ec&operation=inviteorders', 0)
  351. ));
  352. showtips('ec_credit_tips');
  353. showformheader('ec&operation=credit');
  354. showtableheader('ec_credit', 'nobottom');
  355. showsetting('ec_credit_maxcreditspermonth', 'ec_creditnew[maxcreditspermonth]', $ec_credit['maxcreditspermonth'], 'text');
  356. showtablefooter('</tbody>');
  357. showtableheader('ec_credit_rank', 'notop fixpadding');
  358. showsubtitle(array('ec_credit_rank', 'ec_credit_between', 'ec_credit_sellericon', 'ec_credit_buyericon'));
  359. foreach($ec_credit['rank'] as $rank => $mincredits) {
  360. showtablerow('', '', array(
  361. $rank,
  362. '<input type="text" class="txt" size="6" name="ec_creditnew[rank]['.$rank.']" value="'.$mincredits.'" /> ~ '.$ec_credit[rank][$rank + 1],
  363. "<img src=\"static/image/traderank/seller/$rank.gif\" border=\"0\">",
  364. "<img src=\"static/image/traderank/buyer/$rank.gif\" border=\"0\">"
  365. ));
  366. }
  367. showsubmit('creditsubmit');
  368. showtablefooter();
  369. showformfooter();
  370. } else {
  371. $ec_creditnew = $_GET['ec_creditnew'];
  372. $ec_creditnew['maxcreditspermonth'] = intval($ec_creditnew['maxcreditspermonth']);
  373. if(is_array($ec_creditnew['rank'])) {
  374. foreach($ec_creditnew['rank'] as $rank => $mincredits) {
  375. $mincredits = intval($mincredits);
  376. if($rank == 1 && $mincredits <= 0) {
  377. cpmsg('ecommerce_invalidcredit', '', 'error');
  378. } elseif($rank > 1 && $mincredits <= $ec_creditnew['rank'][$rank - 1]) {
  379. cpmsg('ecommerce_must_larger', '', 'error', array('rank' => $rank));
  380. }
  381. $ec_creditnew['rank'][$rank] = $mincredits;
  382. }
  383. } else {
  384. $ec_creditnew['rank'] = $defaultrank;
  385. }
  386. C::t('common_setting')->update('ec_credit', $ec_creditnew);
  387. updatecache('setting');
  388. cpmsg('ec_credit_succeed', 'action=ec&operation=credit', 'succeed');
  389. }
  390. } elseif($operation == 'inviteorders') {
  391. if(!submitcheck('ordersubmit')) {
  392. $start_limit = ($page - 1) * $_G['tpp'];
  393. $orderurl = array(
  394. 'alipay' => 'https://www.alipay.com/trade/query_trade_detail.htm?trade_no=',
  395. 'tenpay' => 'https://www.tenpay.com/med/tradeDetail.shtml?trans_id=',
  396. );
  397. shownav('extended', 'nav_ec');
  398. showsubmenu('nav_ec', array(
  399. array('nav_ec_config', 'setting&operation=ec', 0),
  400. array('nav_ec_tenpay', 'ec&operation=tenpay', 0),
  401. array('nav_ec_alipay', 'ec&operation=alipay', 0),
  402. array('nav_ec_credit', 'ec&operation=credit', 0),
  403. array('nav_ec_orders', 'ec&operation=orders', 0),
  404. array('nav_ec_tradelog', 'tradelog', 0),
  405. array('nav_ec_inviteorders', 'ec&operation=inviteorders', 1)
  406. ));
  407. $ordercount = C::t('forum_order')->count_by_search(0, $_GET['orderstatus'], $_GET['orderid'], $_GET['email']);
  408. $multipage = multi($ordercount, $_G['tpp'], $page, ADMINSCRIPT."?action=ec&operation=inviteorders&orderstatus={$_GET['orderstatus']}&orderid={$_GET['orderid']}&email={$_GET['email']}");
  409. showtagheader('div', 'orderlist', TRUE);
  410. showformheader('ec&operation=inviteorders');
  411. showtableheader('ec_inviteorders_search');
  412. $_G['showsetting_multirow'] = 1;
  413. showsetting('ec_orders_search_status', array('orderstatus', array(
  414. array('', $lang['ec_orders_search_status_all']),
  415. array(1, $lang['ec_orders_search_status_pending']),
  416. array(2, $lang['ec_orders_search_status_auto_finished'])
  417. )), intval($_GET['orderstatus']), 'select');
  418. showsetting('ec_orders_search_id', 'orderid', $_GET['orderid'], 'text');
  419. showsetting('ec_orders_search_email', 'email', $_GET['email'], 'text');
  420. showsubmit('searchsubmit', 'submit');
  421. showtablefooter();
  422. showtableheader('result');
  423. showsubtitle(array('', 'ec_orders_id', 'ec_inviteorders_status', 'ec_inviteorders_buyer', 'ec_orders_amount', 'ec_orders_price', 'ec_orders_submitdate', 'ec_orders_confirmdate'));
  424. foreach(C::t('forum_order')->fetch_all_by_search(0, $_GET['orderstatus'], $_GET['orderid'], $_GET['email'], null, null, null, null, null, null, null, $start_limit, $_G['tpp']) as $order) {
  425. switch($order['status']) {
  426. case 1: $order['orderstatus'] = $lang['ec_orders_search_status_pending']; break;
  427. case 2: $order['orderstatus'] = '<b>'.$lang['ec_orders_search_status_auto_finished'].'</b>'; break;
  428. case 3: $order['orderstatus'] = '<b>'.$lang['ec_orders_search_status_manual_finished'].'</b><br />(<a href="home.php?mod=space&username='.rawurlencode($order['admin']).'" target="_blank">'.$order['admin'].'</a>)'; break;
  429. }
  430. $order['submitdate'] = dgmdate($order['submitdate']);
  431. $order['confirmdate'] = $order['confirmdate'] ? dgmdate($order['confirmdate']) : 'N/A';
  432. list($orderid, $apitype) = explode("\t", $order['buyer']);
  433. $apitype = $apitype ? $apitype : 'alipay';
  434. $orderid = '<a href="'.$orderurl[$apitype].$orderid.'" target="_blank">'.$orderid.'</a>';
  435. showtablerow('', '', array(
  436. "<input class=\"checkbox\" type=\"checkbox\" name=\"validate[]\" value=\"$order[orderid]\" ".($order['status'] != 1 ? 'disabled' : '').">",
  437. "$order[orderid]<br />$orderid",
  438. $order['orderstatus'],
  439. "$order[email]<br>$order[ip]",
  440. $order['amount'],
  441. "$lang[rmb] $order[price] $lang[rmb_yuan]",
  442. $order['submitdate'],
  443. $order['confirmdate']
  444. ));
  445. }
  446. showtablerow('', array('colspan="7"'), array($multipage));
  447. showsubmit('ordersubmit', 'ec_orders_validate', '<input type="checkbox" name="chkall" id="chkall" class="checkbox" onclick="checkAll(\'prefix\', this.form, \'validate\')" />');
  448. showtablefooter();
  449. showformfooter();
  450. showtagfooter('div');
  451. } else {
  452. if($_GET['validate']) {
  453. if(C::t('forum_order')->fetch_all($_GET['validate'], '1')) {
  454. C::t('forum_order')->update($_GET['validate'], array('status' => '3', 'admin' => $_G['username'], 'confirmdate' => $_G['timestamp']));
  455. }
  456. }
  457. cpmsg('orders_validate_succeed', "action=ec&operation=inviteorders&orderstatus={$_GET['orderstatus']}&orderid={$_GET['orderid']}&email={$_GET['email']}", 'succeed');
  458. }
  459. }
  460. ?>