示例#1
0
 function setStatus($status, $remark = '')
 {
     global $db, $tblprefix, $timestamp, $onlineautosaving;
     switch ($this->status = $status) {
         case PAY_FINISHED:
             //交易完成
             $remark || ($remark = '交易完成');
             break;
         case PAY_FAIL:
             //交易失败
             $remark || ($remark = '交易失败');
             break;
         case PAY_WAIT_PAY:
             //等待付款
             $remark || ($remark = '等待付款');
             break;
         case PAY_WAIT_GOODS:
             //等待发货
             $remark || ($remark = '等待发货');
             break;
         case PAY_CONFIRM_GOODS:
             //等待买家确认收货
             $remark || ($remark = '等待买家确认收货');
             break;
         default:
             $this->message(array('title' => '调用错误', 'content' => "未定义的交易状态 “{$status”!}"));
     }
     switch ($this->by) {
         case 'orders':
             $upsql = ",remark='" . addslashes($remark) . "'";
             ($status == PAY_WAIT_GOODS || $status == PAY_FINISHED && !$this->totalfee) && ($upsql .= ",payed=totalfee");
             $db->query("UPDATE {$tblprefix}orders SET state={$status},updatedate={$timestamp}{$upsql} WHERE ({$status}<0 OR state<{$status}) AND oid='{$this->order_id}'");
             if ($ret = $db->affected_rows()) {
                 $query = $db->query("SELECT aid,tocid as cid,price,nums FROM {$tblprefix}purchases WHERE oid='{$this->order_id}'");
                 $nums = 0;
                 $aedit = new cls_arcedit();
                 while ($row = $db->fetch_array($query)) {
                     $nums += $row['nums'];
                     if ($row['cid']) {
                         //商家商品
                     } else {
                         //网站商品
                         $aedit->init();
                         $aedit->set_aid($row['aid']);
                         $aedit->arc_nums('orders', $row['nums']);
                         $aedit->arc_nums('ordersum', $row['price'] * $row['nums'], 1);
                     }
                 }
                 $user = new cls_userinfo();
                 $user->activeuser($this->mid, 1);
                 $user->basedeal('purchase', 1, $nums, 1);
             }
             break;
         case 'pays':
             $upsql = $onlineautosaving ? ",transdate={$timestamp}" : '';
             $db->query("UPDATE {$tblprefix}pays SET receivedate={$timestamp}{$upsql} WHERE receivedate=0 AND pid='{$this->order_id}'");
             $ret = $db->affected_rows();
             if ($ret && $upsql) {
                 $user = new cls_userinfo();
                 $user->activeuser($this->mid);
                 $user->updatecrids(array(0 => $this->totalfee), 1);
             }
             break;
         default:
             $this->message(array('title' => '调用错误', 'content' => "未定义的交易!"));
     }
     return $ret;
 }
示例#2
0
     $curuser->info['currency0'] < $order['totalfee'] && mcmessage('pay_no_money');
     $curuser->updatecrids(array(0 => -$order['totalfee']), 1, lang('log_order_pay', $order['ordersn']));
     $order['tomid'] && $user->updatecrids(array(0 => $order['totalfee']), 1, lang('log_order_rev', $order['ordersn']));
     $sqlstr .= ",payed={$order['totalfee']}";
     $db->query("UPDATE {$tblprefix}orders SET {$sqlstr},updatedate='{$timestamp}' WHERE oid='{$oid}'");
     $query = $db->query("SELECT aid,tocid as cid,price,nums FROM {$tblprefix}purchases WHERE oid='{$oid}'");
     $nums = 0;
     $aedit = new cls_arcedit();
     while ($row = $db->fetch_array($query)) {
         $nums += $row['nums'];
         if ($row['cid']) {
             //商家商品
         } else {
             //网站商品
             //				$db->query("UPDATE {$tblprefix}archives SET orders=$row[nums],ordersum=$sum WHERE aid=$row[aid]");
             $aedit->init();
             $aedit->set_aid($row['aid']);
             $aedit->arc_nums('orders', $row['nums']);
             $aedit->arc_nums('ordersum', $row['price'] * $row['nums'], 1);
         }
     }
     $curuser->basedeal('purchase', 1, $nums, 1);
     mcmessage('orderpayfinish');
 } else {
     require_once M_ROOT . 'paygate/pay_base.php';
     switch ($ordernew['paymode']) {
         //各种付款方式
         case 2:
             //支付宝
             if (!in_array('', $pays[2])) {
                 $pay = new pay_base('alipay');
示例#3
0
 function updatecopy($mode = 0)
 {
     //当更新文档时,同时更新其它的副本。
     global $cotypes, $timestamp, $db, $tblprefix, $arc;
     if (!$mode) {
         return false;
     }
     $cpids = array();
     $naid = $this->aid;
     $query = $db->query("SELECT aid FROM {$tblprefix}archives WHERE aid != '{$naid}' AND cpid='" . $this->archive['cpid'] . "'");
     while ($row = $db->fetch_array($query)) {
         $cpids[] = $row['aid'];
     }
     if (!$cpids) {
         return false;
     }
     $this->init();
     $this->set_aid($naid);
     $this->detail_data();
     $archivenew =& $this->archive;
     $archivenew = maddslashes($archivenew);
     $chid = $archivenew['chid'];
     $fields = read_cache('fields', $chid);
     $aedit = new cls_arcedit();
     foreach ($cpids as $aid) {
         $aedit->set_aid($aid);
         $aedit->detail_data();
         $aedit->updatefield('rpmid', $archivenew['rpmid'], 'main');
         $aedit->updatefield('dpmid', $archivenew['dpmid'], 'main');
         $aedit->updatefield('salecp', $archivenew['salecp'], 'main');
         $aedit->updatefield('fsalecp', $archivenew['fsalecp'], 'main');
         $aedit->sale_define();
         $aedit->updatefield('arctpls', $archivenew['arctpls'], 'sub');
         $aedit->updatefield('jumpurl', $archivenew['jumpurl'], 'sub');
         foreach ($fields as $k => $v) {
             if ($v['available'] && !$v['isfunc'] && (!in_array($k, array('subject', 'keywords', 'thumb', 'abstract')) || $mode == 1)) {
                 if (!empty($v['istxt'])) {
                     $txtname = saveastxt(stripslashes($archivenew[$k]), $aedit->namepres[$k]);
                     $aedit->updatefield($k, $txtname, $v['tbl']);
                 } else {
                     $aedit->updatefield($k, $archivenew[$k], $v['tbl']);
                     if ($arr = multi_val_arr($archivenew[$k], $v)) {
                         foreach ($arr as $x => $y) {
                             $aedit->updatefield($k . '_' . $x, $y, $v['tbl']);
                         }
                     }
                 }
             }
         }
         $aedit->updatedb();
         if ($this->channel['autostatic']) {
             arc_static($aid);
             unset($arc);
         }
         $aedit->init();
     }
     return true;
 }