//==============spcheck檢查碼 function gwSpcheck($s, $U) { //算出認證用的字串 $a = substr($U, 0, 1) . substr($U, 2, 1) . substr($U, 4, 1); //取出檢查碼的跳字組合 1,3,5 字元 $b = substr($U, 1, 1) . substr($U, 3, 1) . substr($U, 5, 1); //取出檢查碼的跳字組合 2,4,6 字元 $c = $s % $U + $s + $a + $b; //取餘數 + 檢查碼 + 奇位跳字組合 + 偶位跳字組合 return $c; //最大9碼輸出 } $TOkSi = substr($rehohsn, 8, 6) + $Cxc[3] + $amount; //process_time+gwsr+amount $spcheck = gwSpcheck($form['chma'], $TOkSi); //商店檢查碼,值 //==============spcheck檢查碼 end //==================新的幕後回傳檢核 $rech_time = substr($rehohsn, 0, 14); //20121231101030 回傳的時間dt $rech_sr = $Cxc[3]; //單號 $rech_chma = $form['chma']; //店家檢查碼 $rech_amount = $amount; $rech_body = $rech_time . $rech_sr . $rech_amount; $rech_key = data_crypt($rech_chma, $rech_body, 'encrypt'); //加密後的資料 //====== //==============送出電子發票
define('IN_DISCUZ', true); include_once '../../config.inc.php'; require_once '../../include/global.func.php'; require_once '../../include/db_' . $database . '.class.php'; include_once '../../forumdata/cache/plugin_greenworld.php'; $chk = $_DPLUGIN['greenworld']['vars']['ecpay_chk']; function gwSpcheck($s, $U) { $a = substr($U, 0, 1) . substr($U, 2, 1) . substr($U, 4, 1); $b = substr($U, 1, 1) . substr($U, 3, 1) . substr($U, 5, 1); $c = $s % $U + $s + $a + $b; return $c; } $TOkSi = $_REQUEST['process_time'] + $_REQUEST['gwsr'] + $_REQUEST['amount']; $my_spcheck = gwSpcheck($chk, $TOkSi); $res_str = "<center><div style='background-color:white'>"; $db = new dbstuff(); $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset); $db->select_db($dbname); $orderid = $_REQUEST['orderid']; $status = 1; $buyer = $_REQUEST['buyer']; $uid = $_REQUEST['uid']; $amount = $_REQUEST['amount']; $price = $_REQUEST['price']; $submitdate = $_REQUEST['submitdate']; $db->query("INSERT INTO {$tablepre}orders (orderid, status, buyer, admin, uid, amount, price, submitdate, confirmdate)VALUES ('{$orderid}', '{$status}', '{$buyer}', 'admin', {$uid}, {$amount}, {$price}, {$submitdate}, 0)"); $amt = 0; $query = $db->query("SELECT * FROM {$tablepre}orders WHERE orderid = '{$orderid}'"); while ($t = $db->fetch_array($query)) {
/** * 处理函数 */ function respond() { if ($_REQUEST['succ'] == '1') { $_REQUEST['c_succmark'] = 'Y'; } if ($_REQUEST['succ'] == '0') { $_REQUEST['c_succmark'] = 'N'; } $payment = get_payment('gw_allpay6'); //print_r($_REQUEST); $c_mid = $_REQUEST['c_mid']; $c_order = $_REQUEST['od_sob']; //訂單編號 $c_orderamount = $_REQUEST['amount']; //商户提供的订单总金额, $c_ymd = $_REQUEST['process_date']; //商户传输过来的订单产生日期,格式为"yyyymmdd",如20050102 $c_transnum = $_REQUEST['gwsr']; //云网支付网关提供的该笔订单的交易流水号, $c_succmark = $_REQUEST['c_succmark']; //交易成功标志,Y-成功 N-失败 $c_moneytype = $_REQUEST['c_moneytype']; //支付币种,0为人民币 $c_cause = $_REQUEST['response_msg]']; //如果订单支付失败,则该值代表失败原因 $c_memo1 = $_REQUEST['c_memo1']; //商户提供的需要在支付结果通知中转发的商户参数一 $c_memo2 = $_REQUEST['c_memo2']; //商户提供的需要在支付结果通知中转发的商户参数二 $c_signstr = $_REQUEST['inspect']; //云网支付网关对已上信息进行MD5加密后的字 $c_checkcode = trim($payment['gw_allpay6_checkcode']); $c_installmente = trim($payment['gw_allpay6_installment']); function gwSpcheck($s, $U) { //算出認證用的字串 $a = substr($U, 0, 1) . substr($U, 2, 1) . substr($U, 4, 1); //取出檢查碼的跳字組合 1,3,5 字元 $b = substr($U, 1, 1) . substr($U, 3, 1) . substr($U, 5, 1); //取出檢查碼的跳字組合 2,4,6 字元 $c = $s % $U + $s + $a + $b; //取餘數 + 檢查碼 + 奇位跳字組合 + 偶位跳字組合 return $c; } $TOkSi = $_REQUEST['process_time'] + $_REQUEST['gwsr'] + $_REQUEST['amount']; $my_spcheck = gwSpcheck($c_checkcode, $TOkSi); /*if(intval(order_amount($c_order))==intval($c_orderamount)){ $checkAmount="1"; };*/ if (check_money($c_order, $c_orderamount)) { $checkAmount = "1"; } /* echo '$c_orderamount='.$c_orderamount.'<br>' ; echo '$c_order='.$c_order.'<br>'; echo '$my_spcheck='.$my_spcheck.'<br>'; echo '$_REQUEST["spcheck"]='.$_REQUEST['spcheck'].'<br>'; echo '$_REQUEST["succ"]='.$_REQUEST['succ'].'<br>'; echo '$checkAmount='.$checkAmount.'<br>'; */ if ($my_spcheck != $_REQUEST['spcheck'] || $_REQUEST['succ'] != '1' || $checkAmount != "1") { echo '失敗'; return false; } else { $note = '歐付寶交易流水号:' . $c_transnum . ' 總金額:' . $c_orderamount; if ($_REQUEST['inv_error'] == "0") { $note .= ',發票開立成功。'; } else { if ($_REQUEST['inv_error'] == "") { $note .= ',未開立發票。'; } else { $note .= ',發票錯誤代碼' . $_REQUEST['inv_error']; } } /* 改变订单状态 */ // PS_PAYING 代表已經付款 // PS_PAYED 代表還沒有付款 //echo $c_order."-".PS_PAYED."-".$c_ymd."<br>"; order_paid($c_order, PS_PAYED, $note); //exit; //order_paid($c_memo2, PS_PAYING, $note); return true; } }
*/ function gwSpcheck($s, $U) { // $a = substr($U, 0, 1) . substr($U, 2, 1) . substr($U, 4, 1); // 取出檢查碼的跳字組合 1,3,5 字元 $b = substr($U, 1, 1) . substr($U, 3, 1) . substr($U, 5, 1); // 取出檢查碼的跳字組合 2,4,6 字元 $c = $s % $U + $s + $a + $b; // 取餘數 + 檢查碼 + 奇位跳字組合 + 偶位跳字組合 return $c; // 最大9碼輸出 } $szToken = substr($szTradeDateTime, 8, 6) + $szMerchantTradeNo + $nTradeAmount; // $szSpcheck = gwSpcheck($arUser['chma'], $szToken); //商店檢查碼,值 // 新的幕後回傳檢核參數 $szRechTime = substr($szTradeDateTime, 0, 14); // 20121231101030 回傳的時間 $szRechSr = $szMerchantTradeNo; // 單號 $szRechChma = $arUser['chma']; // 店家檢查碼 $szRechAmount = $nTradeAmount; $szRechBody = $szRechTime . $szRechSr . $szRechAmount; $szRechKey = data_crypt($szRechChma, $szRechBody, 'encrypt'); // 加密後的資料 $nClient = $arOrigionAuth['client']; /* // 送出電子發票
<?php require '../../source/class/class_core.php'; $discuz = C::app(); $discuz->init(); $arr = C::t('common_plugin')->fetch_by_identifier('gw'); $pluginid = $arr['pluginid']; foreach (C::t('common_pluginvar')->fetch_all_by_pluginid($pluginid) as $plugin) { $vars[$plugin['variable']] = $plugin['value']; } $ecpay_chk = $vars['stage_ecpay_chk']; $TOkSi = $_REQUEST['process_time'] + $_REQUEST['gwsr'] + $_REQUEST['amount']; $my_spcheck = gwSpcheck($ecpay_chk, $TOkSi); $amt = 0; $query = DB::query("SELECT * FROM " . DB::table('forum_order') . " where orderid = '" . $orderid . "'"); while ($order_rec = DB::fetch($query)) { $amt = $order_rec['amount']; } $res_str = "<center><div style='background-color:white'>"; if ($my_spcheck == $_REQUEST['spcheck'] && $_REQUEST['succ'] == '1' && $amt == $amount) { insert($_REQUEST['od_sob']); $res_str .= "<FONT COLOR='green'>交易成功"; } else { $res_str .= "<FONT COLOR='red'>交易失敗"; } $home = strrpos($_SERVER['REQUEST_URI'], '/api'); $cur_url = "http://" . $_SERVER['HTTP_HOST'] . substr($_SERVER['REQUEST_URI'], 0, $home); $res_str .= "</FONT> <a href='" . $cur_url . "'>回首頁</a></div></center>"; echo $res_str; function gwSpcheck($s, $U) {
<?php require '../../source/class/class_core.php'; $discuz = C::app(); $discuz->init(); $arr = C::t('common_plugin')->fetch_by_identifier('gw'); $pluginid = $arr['pluginid']; foreach (C::t('common_pluginvar')->fetch_all_by_pluginid($pluginid) as $plugin) { $vars[$plugin['variable']] = $plugin['value']; } $allpay_chk = $vars['allpay_chk']; $TOkSi = $_REQUEST['process_time'] + $_REQUEST['gwsr'] + $_REQUEST['amount']; $my_spcheck = gwSpcheck($allpay_chk, $TOkSi); $amt = 0; $query = DB::query("SELECT * FROM " . DB::table('forum_order') . " where orderid = '" . $orderid . "'"); while ($order_rec = DB::fetch($query)) { $amt = $order_rec['amount']; } $res_str = "<center><div style='background-color:white'>"; if ($my_spcheck == $_REQUEST['spcheck'] && $_REQUEST['succ'] == '1' && $amt == $amount) { insert($_REQUEST['od_sob']); $res_str .= "<FONT COLOR='green'>交易成功"; } else { $res_str .= "<FONT COLOR='red'>交易失敗"; } $home = strrpos($_SERVER['REQUEST_URI'], '/api'); $cur_url = "http://" . $_SERVER['HTTP_HOST'] . substr($_SERVER['REQUEST_URI'], 0, $home); $res_str .= "</FONT> <a href='" . $cur_url . "'>回首頁</a></div></center>"; echo $res_str; function gwSpcheck($s, $U) {
//==============spcheck檢查碼 function gwSpcheck($s, $U) { //算出認證用的字串 $a = substr($U, 0, 1) . substr($U, 2, 1) . substr($U, 4, 1); //取出檢查碼的跳字組合 1,3,5 字元 $b = substr($U, 1, 1) . substr($U, 3, 1) . substr($U, 5, 1); //取出檢查碼的跳字組合 2,4,6 字元 $c = $s % $U + $s + $a + $b; //取餘數 + 檢查碼 + 奇位跳字組合 + 偶位跳字組合 return $c; //最大9碼輸出 } $TOkSi = substr($bbx[dt], 8, 6) + $bbx[sr] + $bbx[amount]; //process_time+gwsr+amount $spcheck = gwSpcheck($MidO['chma'], $TOkSi); //商店檢查碼,值 //==============spcheck檢查碼 end //==================新的幕後回傳檢核 $rech_time = substr($bbx[dt], 0, 14); //20121231101030 回傳的時間dt $rech_sr = $bbx[sr]; //單號 $rech_chma = $MidO['chma']; //店家檢查碼 $rech_amount = $bbx[amount]; $rech_body = $rech_time . $rech_sr . $rech_amount; $rech_key = data_crypt($rech_chma, $rech_body, 'encrypt'); //加密後的資料 //====== //==============補觸發不作送出電子發票
$order_id = intval(vmGet($_REQUEST, "order_id")); $q = "SELECT order_status FROM #__{vm}_orders WHERE "; $q .= "#__{vm}_orders.user_id= " . $auth["user_id"] . " "; $q .= "AND #__{vm}_orders.order_id= {$order_id} "; $db->query($q); if ($db->next_record()) { $order_status = $db->f("order_status"); if ($order_status == 'C' || $order_status == 'P') { //print_r($_REQUEST); $process_time = trim(stripslashes($_POST['process_time'])); $gwsr = trim(stripslashes($_POST['gwsr'])); $amount = trim(stripslashes($_POST['amount'])); $spcheck = trim(stripslashes($_POST['spcheck'])); $succ = trim(stripslashes($_POST['succ'])); $checkcode = ECPAY_CHECKCODE; $strAuth = gwSpcheck($process_time, $gwsr, $amount, $spcheck, $checkcode); $d['order_id'] = $_REQUEST["order_id"]; if ($strAuth == 'YES' && $succ == '1') { $d['order_status'] = 'C'; echo '<img src="' . VM_THEMEURL . 'images/button_ok.png" align="middle" alt="' . $VM_LANG->_('VM_CHECKOUT_SUCCESS') . '" border="0" />'; echo "付款已經完成"; require_once CLASSPATH . 'ps_order.php'; $ps_order = new ps_order(); $ps_order->order_status_update($d); } else { $d['order_status'] = 'X'; echo '<img src="' . VM_THEMEURL . 'images/button_cancel.png" align="middle" alt="' . $VM_LANG->_('VM_CHECKOUT_FAILURE') . '" border="0" />'; echo "付款失敗,點選下列 < 點擊此鏈結查看訂單詳情 > 可重新進行線上刷卡支付"; } echo '<br /><p><a href="index.php?option=com_virtuemart&page=account.order_details&order_id=' . $order_id . '">' . $VM_LANG->_('PHPSHOP_ORDER_LINK') . '</a></p>'; } else {