Browse Source

ios内购支付,订阅续费的特殊处理

lizhen_gitee 1 năm trước cách đây
mục cha
commit
663c04be91
1 tập tin đã thay đổi với 14 bổ sung7 xóa
  1. 14 7
      application/api/controller/Payios.php

+ 14 - 7
application/api/controller/Payios.php

@@ -218,8 +218,6 @@ class Payios extends Api
         $receipt_data = input('apple_receipt', '', 'trim');
         $transaction_id = input('transaction_id', '', 'trim');
 
-
-
         if (!$receipt_data || !$original_transaction_id || !$transaction_id) {
             $this->error('缺少参数');
         }
@@ -228,6 +226,11 @@ class Payios extends Api
         $prefix = 'iosVIP订阅'.',传入original_transaction_id:'.$original_transaction_id.',传入transaction_id:'.$transaction_id.'。';
         filePut($prefix.'参数apple_receipt:'.$receipt_data);
 
+        //查找订单
+        $order_map = [
+            'original_transaction_id' => $original_transaction_id,
+        ];
+
 
     }
 
@@ -285,6 +288,7 @@ class Payios extends Api
         $only_trans = [];
         foreach($in_app as $key => $trans){
             //非订阅信息,原始信息
+            // $trans['transaction_id'] == $transaction_id 这个不重要,重要的是后面2个。应该也重要,保证这次处理的是初始交易
             if($trans['transaction_id'] == $transaction_id && $transaction_id == $trans['original_transaction_id'] && $trans['product_id'] == $order_info['bundle_id']){
                 $only_trans = $trans;
                 break;
@@ -292,8 +296,8 @@ class Payios extends Api
         }
         if(empty($only_trans)){
             Db::rollback();
-            filePut($prefix.'未找到匹配的交易,产品id'.$order_info['bundle_id'].',交易id'.$transaction_id);
-            $this->error('未找到匹配的交易,产品id'.$order_info['bundle_id'].',交易id'.$transaction_id);
+            filePut($prefix.'未找到匹配的交易,产品id'.$order_info['bundle_id'].',原始交易id'.$transaction_id);
+            $this->error('未找到匹配的交易,产品id'.$order_info['bundle_id'].',原始交易id'.$transaction_id);
         }
 
         /*
@@ -356,11 +360,13 @@ class Payios extends Api
                     'days' => $args['days'],
                     'createtime' => time(),
                     'apple_receipt' => $receipt_data,
+                    'in_app_one' => json_encode($only_trans),
                     'original_transaction_id' => $only_trans['original_transaction_id'],
                     'transaction_id' => $only_trans['transaction_id'],
                     'status' => 1,
                     'times' => 1,
-                    'notification_type' => 'INITIAL_BUY'.',首次订阅',
+                    'original_purchase_date_ms' => $only_trans['original_purchase_date_ms'],
+                    //'notification_type' => 'INITIAL_BUY'.',首次订阅',
                 ];
                 $task_id = Db::name('user_vipxufei_task')->insertGetId($task_data);
                 if($task_id)
@@ -375,10 +381,11 @@ class Payios extends Api
 
         // 修改订单状态
         $update_order = [
+            'notifytime'=>time(),
             'order_status'=>1,
-            'transaction_id' => $only_trans['transaction_id'],//理论上与 original_transaction_id 相等
+            'original_transaction_id' => $only_trans['original_transaction_id'],//理论上与 transaction_id 相等
             'in_app_one' => json_encode($only_trans),
-            'notifytime'=>time(),
+
         ];
         $ros = Db::name('pay_order')->where(['id' => $order_info['id']])->update($update_order);
         if($ros === false) {