Bladeren bron

苹果内购, 预添加退款订单

linhaohong 9 maanden geleden
bovenliggende
commit
6172ce07e0
2 gewijzigde bestanden met toevoegingen van 63 en 4 verwijderingen
  1. 62 3
      AdminController/ServeManagementController.py
  2. 1 1
      Model/models.py

+ 62 - 3
AdminController/ServeManagementController.py

@@ -167,6 +167,8 @@ class serveManagement(View):
                 return self.purchase_refund_list(request_dict, response)
             elif operation == 'editRefundPreference':
                 return self.edit_refund_preference(request_dict, response)
+            elif operation == 'addRefundOrder':
+                return self.add_refund_order(request_dict, response)
             else:
                 return response.json(404)
 
@@ -2832,14 +2834,14 @@ class serveManagement(View):
         uid = request_dict.get("uid", None)
         apple_order = request_dict.get("appleOrder", None)
         app_type = request_dict.get("appType", None)
-        page = int(request_dict.get('pageNo', 0))  # 默认值设为 0
+        page = int(request_dict.get('page', 0))  # 默认值设为 0
         page_size = int(request_dict.get('pageSize', 10))  # 默认值设为 10
 
         in_app_refund_qs = InAppRefund.objects.all()
         if order_id:
             in_app_refund_qs = in_app_refund_qs.filter(orderID=order_id)
         if uid:
-            in_app_refund_qs = in_app_refund_qs.filter(uid=order_id)
+            in_app_refund_qs = in_app_refund_qs.filter(uid=uid)
         if apple_order and app_type:
             app_type = int(app_type)
             if app_type == 1:
@@ -2872,7 +2874,7 @@ class serveManagement(View):
                     "uid": in_app_refund.uid,
                     "refundPreference": in_app_refund.refund_preference,
                     "refundProgress": in_app_refund.refund_progress,
-                    "appType": in_app_refund.product_type,
+                    "appType": in_app_refund.app_type,
                     "createTime": in_app_refund.created_time,
                     "updateTime": in_app_refund.updated_time,
                     "putTime": in_app_refund.put_time,
@@ -2892,3 +2894,60 @@ class serveManagement(View):
         InAppRefund.objects.filter(id=refund_id).update(refund_preference=refund_preference)
         return response.json(0)
 
+    @staticmethod
+    def add_refund_order(request_dict, response):
+        """
+        添加预备退款订单
+        :param request_dict:
+        :param response:
+        :return:
+        """
+        order_id = request_dict.get("orderID", None)
+        apple_order = request_dict.get("appleOrder", None)
+        app_type = request_dict.get("appType", None)
+
+        if not order_id and (not apple_order or not app_type):
+            return response.json(444)
+        orders_qs = Order_Model.objects.all()
+        if order_id:
+            orders_qs = orders_qs.filter(orderID=order_id)
+            if InAppRefund.objects.filter(orderID=order_id).exists():
+                return response.json(174)
+        if apple_order and app_type:
+            app_type = int(app_type)
+            if app_type == 1:
+                bundle_id = "com.ansjer.zccloud"
+            elif app_type == 2:
+                bundle_id = "com.ansjer.zccloud"
+            else:
+                return response.json(0)
+            in_app_purchase_obj = InAppPurchase(bundle_id=bundle_id)
+            client = in_app_purchase_obj.client
+            signed_data_verifier = in_app_purchase_obj.verifier
+            order_lookup_response = client.look_up_order_id(apple_order)
+            signed_transactions = order_lookup_response.signedTransactions
+            if signed_transactions:
+                transaction_payload = signed_data_verifier.verify_and_decode_signed_transaction(signed_transactions[0])
+                transaction_id = transaction_payload.transactionId
+                orders_qs = orders_qs.filter(transaction_id=transaction_id)
+                if InAppRefund.objects.filter(orderID=order_id).exists():
+                    return response.json(174)
+            else:
+                return response.json(800)
+        if not orders_qs.exists():
+            return response.json(173, "订单不存在")
+
+        uid = orders_qs[0].UID
+        order_id = orders_qs[0].orderID
+        transaction_id = orders_qs[0].transaction_id
+        now_time = int(time.time())
+        InAppRefund.objects.create(
+            uid=uid, transaction_id=transaction_id,
+            orderID=order_id, app_type=app_type, refund_progress=4,
+            created_time=now_time, updated_time=now_time
+        )
+        return response.json(0)
+
+
+
+

+ 1 - 1
Model/models.py

@@ -5324,7 +5324,7 @@ class InAppRefund(models.Model):
     app_type = models.SmallIntegerField(default=0, verbose_name='应用类型') # 1是zosiSmart 2是Vsees
     # 0不同意 1同意
     refund_preference = models.IntegerField(default=0, verbose_name='是否同意退款')
-    # 0申请退款 1已提交退款建议 2退款成功 3退款失败
+    # 0申请退款 1已提交退款建议 2退款成功 3退款失败 4提前添加退款建议
     refund_progress = models.IntegerField(default=0, verbose_name='退款进度')
     app_account_token = models.TextField(blank=True, default='', verbose_name=u'参数内容')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')