lizhen_gitee 1 год назад
Родитель
Сommit
36b5d0b214
1 измененных файлов с 45 добавлено и 3 удалено
  1. 45 3
      application/api/controller/Payios.php

+ 45 - 3
application/api/controller/Payios.php

@@ -262,15 +262,54 @@ class Payios extends Api
         $only_trans = [];
         foreach($in_app as $key => $trans){
             //非订阅信息,原始信息
-            if($trans['transaction_id'] == $transaction_id && $original_transaction_id == $trans['original_transaction_id'] && $trans['product_id'] == $order_info['bundle_id']){
+            if($trans['transaction_id'] == $transaction_id && $original_transaction_id == $trans['original_transaction_id']/* && $trans['product_id'] == $order_info['bundle_id']*/){
                 $only_trans = $trans;
                 break;
             }
         }
         if(empty($only_trans)){
             Db::rollback();
-            filePut($prefix.'未找到匹配的交易,产品id'.$order_info['bundle_id']);
-            $this->error('未找到匹配的交易,产品id'.$order_info['bundle_id']);
+            filePut($prefix.'未找到匹配的交易');
+            $this->error('未找到匹配的交易');
+        }
+
+        //续订,但是换了产品了,重新定义order_info
+        if($only_trans['product_id'] != $order_info['bundle_id']){
+
+            $pay_order_map = [
+                'user_id' => $this->auth->id,
+                'bundle_id' => $only_trans['product_id'],
+                'order_status' => 0,
+                'table_name' => 'vip_recharge',
+            ];
+            $pay_order = Db::name('pay_order')->where($pay_order_map)->order('id desc')->lock(true)->find();
+            if(!$pay_order){
+                Db::rollback();
+                filePut($prefix.'未找到匹配的交易,新订单找不到');
+                $this->error('未找到匹配的新订单');
+            }
+            // 修改订单状态
+            $update_order = [
+                'notifytime'=>time(),
+                'order_status'=>1,
+                'original_transaction_id' => $only_trans['original_transaction_id'],
+                'in_app_one' => json_encode($only_trans),
+            ];
+            $ros = Db::name('pay_order')->where(['id' => $pay_order['id']])->update($update_order);
+            if($ros === false) {
+                filePut($prefix.'修改订单状态失败');
+                Db::rollback();
+                $this->error('充值失败');
+            }
+            $args = json_decode($pay_order['args'],true);
+
+            //修改order_info
+            $order_info['order_id'] = $pay_order['id'];
+            $order_info['user_id']  = $pay_order['user_id'];
+            $order_info['bundle_id'] = $pay_order['bundle_id'];
+            $order_info['days'] = $args['days'];
+
+            $order_info['original_transaction_id'] = $only_trans['original_transaction_id'];//多余
         }
 
         //验证时间
@@ -313,6 +352,9 @@ class Payios extends Api
         $task_data['purchase_date_ms'] = $only_trans['purchase_date_ms'];
         $task_data['expires_date_ms']  = $only_trans['expires_date_ms'];
 
+        if($only_trans['product_id'] != $order_info['bundle_id']){
+            $task_data['times'] = 1;//回归1
+        }
 
         $task_id = Db::name('user_vipxufei_task')->insertGetId($task_data);
         if(!$task_id)