Example #1
0
 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'] . '\'';
                 $virtual_contents = $db->fetchAll($get_virtual_contents);
                 $virtual_content = '';
                 if ($virtual_contents) {
                     $virtual_content = serialize($virtual_contents);
                 }
                 add_order_content($cart['business_account'], $_SESSION['account'], $address_info['mobile'], $order_sn, $od['product_sn'], $od['product_name'], $virtual_content, 2);
             }
         }
     }
 }
 if ($flag) {
     //清理购物车
     $db->autoDelete('cart', '`business_account`=\'' . $cart['business_account'] . '\' and `account`=\'' . $_SESSION['account'] . '\'');
     $db->commit();
     $response['count']++;
     $response['error'] = 0;
     $_SESSION['order_sn'] = $order_sn;
     //订单结算
     if ($status == 4) {
         $log->record('计算三级分销');
         //计算三级分销
Example #2
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 {
         //金额不正确
     }
 }
Example #3
0
     $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) {
         //状态变为已发货
         $delivery = false;
         //扣减库存
         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);
         } else {
             $delivery = true;
         }
     }
     if ($delivery) {
         $order_data = array('status' => 4);
         $db->autoUpdate('order', $order_data, '`order_sn`=\'' . $sn . '\' and `status`<>4');
     }
     //如果会员购买了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'] . '\'');
     }
 }