Ejemplo n.º 1
0
 private function _pay_order($sn, $data)
 {
     global $db, $log;
     //产品订单
     $get_order_info = 'select `amount`,`account`,`business_account`,`product_amount`,`mobile`,`delivery_fee` from ' . $db->table('order') . ' where `order_sn`=\'' . $sn . '\'';
     $order = $db->fetchRow($get_order_info);
     add_order_log($sn, $order['account'], 3, "在线支付");
     if ($order && $order['amount'] * 100 == $data->total_fee && $data->sign == tenpay_sign($data, $this->mch_key)) {
         //验证订单金额正确
         //1. 设置订单为已付款
         $order_data = array('status' => 3, 'pay_time' => time());
         $flag = $db->autoUpdate('order', $order_data, '`order_sn`=\'' . $sn . '\' and `status`<>3');
         if ($flag && $db->get_affect_rows()) {
             $log->record($sn . '支付成功');
             //2. 订单结算
             $get_path = 'select `path` from ' . $db->table('member') . ' where `account`=\'' . $order['account'] . '\'';
             $path = $db->fetchOne($get_path);
             distribution_settle($order['reward_amount'], $path, $sn);
             //3. 新增商家收入
             $business_income = $order['product_amount'] + $order['delivery_fee'] - $order['reward_amount'];
             if (add_business_exchange($order['business_account'], 0, $business_income, $order['account'], '用户在线支付')) {
                 add_business_trade($order['business_account'], $business_income, $sn);
             } else {
                 //增加商家收入失败
             }
             $get_order_detail = 'select `product_sn`,`product_name`,`count`,`is_virtual`,`attributes` from ' . $db->table('order_detail') . ' where `order_sn`=\'' . $sn . '\'';
             $order_detail = $db->fetchAll($get_order_detail);
             foreach ($order_detail as $od) {
                 //扣减库存
                 consume_inventory($od['product_sn'], $od['attributes'], $od['count']);
                 //如果是虚拟产品,则生成预约券
                 if ($od['is_virtual']) {
                     $get_virtual_contents = 'select `content`,`count`,`total` from ' . $db->table('virtual_content') . ' where `product_sn`=\'' . $od['product_sn'] . '\'';
                     $virtual_contents = $db->fetchAll($get_virtual_contents);
                     $virtual_content = '';
                     if ($virtual_contents) {
                         $virtual_content = serialize($virtual_contents);
                     }
                     add_order_content($order['business_account'], $order['account'], $order['mobile'], $sn, $od['product_sn'], $od['product_name'], $virtual_content, 2);
                 }
             }
             //如果会员购买了activity=4的产品,则升级
             $check_can_levelup = 'select am.`activity_id` from ' . $db->table('activity_mapper') . ' as am left join ' . $db->table('order_detail') . ' using (`product_sn`) where `order_sn`=\'' . $sn . '\' and `activity_id`=4';
             if ($db->fetchOne($check_can_levelup)) {
                 $member_data = array('level_id' => 1);
                 $db->autoUpdate('member', $member_data, '`account`=\'' . $order['account'] . '\'');
             }
         }
     } else {
         //金额不正确
     }
 }
Ejemplo n.º 2
0
    echo json_encode($response);
    exit;
}
if ('receive' == $opera) {
    $order_sn = getPOST('order_sn');
    $response = array('error' => 1, 'msg' => '');
    if ($order_sn == '') {
        $response['msg'] = '订单编号为空';
    } else {
        $order_sn = $db->escape($order_sn);
        $check_order_sn = 'select `order_sn` from ' . $db->table('order') . ' where `order_sn`=\'' . $order_sn . '\' and `account`=\'' . $_SESSION['account'] . '\'';
        $order_sn = $db->fetchOne($check_order_sn);
        if ($order_sn) {
            $data = array('status' => 7);
            if ($db->autoUpdate('order', $data, '`order_sn`=\'' . $order_sn . '\'')) {
                add_order_log($order_sn, $_SESSION['account'], 7, '用户确认收货');
                //将款项打到商家账户中
                //读取担保交易记录,并将款项打入到商家的余额中
                $get_trade = 'select `id`,`business_account`,`trade` from ' . $db->table('trade') . ' where `remark`=\'' . $order_sn . '\' and `status`=0';
                $trade = $db->fetchRow($get_trade);
                if (add_business_exchange($trade['business_account'], $trade['trade'], -1 * $trade['trade'], $_SESSION['account'], '用户确认收货')) {
                    $trade_status = array('status' => 1, 'solve_time' => time());
                    $db->autoUpdate('trade', $trade_status, '`id`=' . $trade['id']);
                }
                //读取佣金,将佣金发放到用户账户里
                $get_member_rewards = 'select `id`,`remark`,`integral`,`account`,`reward` from ' . $db->table('member_reward') . ' where `status`=0 and `assoc`=\'' . $order_sn . '\'';
                $member_rewards = $db->fetchAll($get_member_rewards);
                if ($member_rewards) {
                    foreach ($member_rewards as $reward) {
                        if (add_memeber_exchange_log($reward['account'], 0, $reward['reward'], $reward['integral'], -1 * $reward['integral'], -1 * $reward['reward'], $_SESSION['account'], $order_sn . '奖金发放')) {
                            $reward_status = array('status' => 1, 'solve_time' => time());
Ejemplo n.º 3
0
     break;
 }
 $db->begin();
 $status = 1;
 $response['order_status'] = 1;
 if ($cart['total_amount'] == 0) {
     $status = 4;
     $response['order_status'] = 4;
 }
 $business_account = $cart['business_account'];
 $order_sn = add_order($cart['total_integral'], $cart['total_product_amount'], $cart['total_delivery_fee'], $cart['delivery_id'], $business_account, $cart['total_integral_given'], $payment_id, $address_id, $cart['total_reward'], $_SESSION['account'], $cart['integral_paid'], $cart['reward_paid'], $cart['balance_paid'], $status, 0, $cart['remark']);
 if ($order_sn) {
     if ($status == 4) {
         $order_data = array('pay_time' => time());
         $db->autoUpdate('order', $order_data, '`order_sn`=\'' . $order_sn . '\'');
         add_order_log($order_sn, $_SESSION['account'], 4, "使用余额/佣金/积分支付");
     }
     if ($cart['balance_paid'] || $cart['reward_paid'] || $cart['integral_paid']) {
         add_memeber_exchange_log($_SESSION['account'], -1 * $cart['balance_paid'], -1 * $cart['reward_paid'], -1 * $cart['integral_paid'], 0, 0, $_SESSION['account'], "抵扣订单金额");
     }
     $flag = true;
     foreach ($cart['products'] as $od) {
         if (!add_order_detail($od['product_sn'], $od['product_name'], $od['product_attributes'], $od['attributes'], $od['product_price'], $od['integral'], $od['integral_given'], $od['reward'], $od['count'], $business_account, $order_sn, $od['is_virtual'])) {
             $flag = false;
         } else {
             if ($status == 4) {
                 //扣减库存
                 consume_inventory($od['product_sn'], $od['attributes'], $od['count']);
                 if ($od['is_virtual']) {
                     //如果是虚拟产品,则生成预约券
                     $get_virtual_contents = 'select `content`,`count`,`total` from ' . $db->table('virtual_content') . ' where `product_sn`=\'' . $od['product_sn'] . '\'';
Ejemplo n.º 4
0
             //赠送积分给合伙人
             add_memeber_exchange_log($account, 0, 0, $config['level_integral'], 0, 0, $account, '成为合伙人赠送积分');
             $get_path = 'select `path` from ' . $db->table('member') . ' where `account`=\'' . $account . '\'';
             $path = $db->fetchOne($get_path);
             distribution_settle($config['partner_fee'], $path, $account . '成为合伙人');
         }
     } else {
     }
 } else {
     //支付成功
     $sn = $out_trade_no;
     $sn = $db->escape($sn);
     //产品订单
     $get_order_info = 'select * from ' . $db->table('order') . ' where `order_sn`=\'' . $sn . '\'';
     $order = $db->fetchRow($get_order_info);
     add_order_log($sn, $order['account'], 3, "在线支付");
     if ($order && $order['amount'] == $total_fee) {
         //验证订单金额正确
         //1. 设置订单为已付款
         $order_data = array('status' => 3, 'pay_time' => time());
         $flag = $db->autoUpdate('order', $order_data, '`order_sn`=\'' . $sn . '\' and `status`<3');
         if ($flag && $db->get_affect_rows()) {
             $log->record($sn . '支付成功');
             //2. 订单结算
             $get_path = 'select `path` from ' . $db->table('member') . ' where `account`=\'' . $order['account'] . '\'';
             $path = $db->fetchOne($get_path);
             distribution_settle($order['reward_amount'], $path, $sn);
             //3. 新增商家收入
             $business_income = $order['product_amount'] + $order['delivery_fee'] - $order['reward_amount'];
             if (add_business_exchange($order['business_account'], 0, $business_income, $order['account'], '用户在线支付')) {
                 add_business_trade($order['business_account'], $business_income, $sn);