| 
					
				 | 
			
			
				@@ -1,13 +1,13 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <?php
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-namespace Collection\Lib;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace User\Lib;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 use Dever;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class Ticket
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # 发起支付
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public function action($parent_uid, $uid, $buy_id, $source)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public function action($parent_uid, $uid, $buy_id, $object_id, $system_source)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!$uid) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Dever::alert('错误的用户信息');
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -25,75 +25,50 @@ class Ticket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!$cate) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Dever::alert('购买失败');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $user = Dever::db('passport/user')->one($uid);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if ($source == 'ios') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $method = 'app';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $account_id = 3;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } elseif ($source == 'android') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $method = 'app';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $account_id = 3;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } elseif ($source == 'applet') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            # 小程序支付
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $method = 'applet';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $account_id = 2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            # 网页支付
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $method = 'page';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $account_id = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['uid'] = $uid;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['status'] = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['cate_id'] = $cate['id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['info_id'] = $info['id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['buy_id'] = $buy['id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['buy_num'] = $buy['num'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['name'] = Dever::load("collection/lib/buy.getName", $buy);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['cash'] = Dever::load("collection/lib/buy.getPrice", $buy);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['system_source'] = $system_source;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order_data['order_id'] = $this->getOrderId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if ($parent_uid) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $order_data['parent_uid'] = $parent_uid;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if ($type) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $order_data['type'] = $type;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ($object_id) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $order_data['object_id'] = $object_id;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if ($type_id) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $order_data['type_id'] = $type_id;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['uid'] = $uid;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['status'] = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['info_id'] = $goods['id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['sku_id'] = $sku;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['name'] = $goods['name'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['cash'] = $goods['price'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['num'] = $num;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['source'] = $source;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order_data['order_id'] = $this->getOrderId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $id = Dever::db('goods/order')->insert($order_data);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $id = Dever::db('user/ticket_order')->insert($order_data);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!$id) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Dever::alert('支付失败');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $refer = 'test';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //$param参数
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $param = array
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'account_id' => $account_id,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             'project_id' => 1,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'channel_id' => $cate['pay_channel'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'system_source' => $system_source,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             'uid' => $uid,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'username' => $user['username'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             'name' => $order_data['name'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'cash' => $order_data['cash'] * $order_data['num'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //'cash' => '0.01',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'openid' => isset($wechat['openid']) ? $wechat['openid'] : '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'product_id' => $goods['id'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'cash' => $order_data['cash'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'product_id' => $info['id'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             'order_id' => $order_data['order_id'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'refer' => $refer
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         );
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if ($method == 'apple') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $param['other'] = $receipt;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $receipt = Dever::input('receipt');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ($receipt) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $param['receipt'] = $receipt;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $result['pay'] = Dever::load('pay/api.' . $method, $param);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $result['pay'] = Dever::load('pay/api.pay', $param);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $result['order_id'] = $order_data['order_id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -108,7 +83,7 @@ class Ticket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if ($info) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return $info['key'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 'goods_dever_2020';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 'ticket_dever_2020';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # 支付成功回调 安全加密
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -125,21 +100,10 @@ class Ticket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $status = $send['pay_status'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $msg = $send['pay_msg'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $order = Dever::db('goods/order')->one(array('order_id' => $order_id));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $order = Dever::db('user/ticket_order')->one(array('order_id' => $order_id));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if ($order && $order['status'] == 1) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if ($status == 2) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                # 减少库存 增加销量
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                $update['where_id'] = $order['info_id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                $update['sell_num'] = $order['num'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Dever::db('goods/info')->updateSell($update);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if ($order['sku_id'] > 0) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    $update['where_id'] = $order['sku_id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    $update['sell_num'] = $order['num'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Dever::db('goods/info_sku')->updateSell($update);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 # 增加积分
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if ($order['parent_uid'] > 0) {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -147,18 +111,17 @@ class Ticket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     $uid = $order['uid'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Dever::score($uid, 'buy_my_goods', '购买自营商品', false, false, false, $order['type'], $order['type_id']);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Dever::score($uid, 'buy_ticket', '购买门票', false, false, false, 'collection', $order['info_id']);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 # 发消息
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (Dever::project('message')) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Dever::load('message/lib/data')->push(-1, $order['uid'], '购买提醒', '购买成功', 11);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Dever::load('message/lib/data')->push(-1, $order['uid'], '购买提醒', '购买门票成功', 11);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $update['status'] = $status;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $update['where_id'] = $order['id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Dever::db('goods/order')->update($update);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $update['id'] = $order['id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Dever::db('user/ticket_order')->update($update);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return 'ok';
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -168,7 +131,7 @@ class Ticket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public function getOrderId()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $where['order_id'] = $this->createOrderId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $state = Dever::db('goods/order')->one($where);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $state = Dever::db('user/ticket_order')->one($where);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!$state) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return $where['order_id'];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -193,7 +156,7 @@ class Ticket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return $prefix . (strtotime(date('YmdHis', time()))) . substr(microtime(), 2, 6) . sprintf('%03d', rand(0, 999));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public function getOrderId($order_id, $id)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public function getOrderIdAndId($order_id, $id)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     	if ($order_id) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     		return $order_id . '/' . $id;
 
			 |