瀏覽代碼

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer into peng

peng 1 年之前
父節點
當前提交
6b3f92a726
共有 2 個文件被更改,包括 28 次插入12 次删除
  1. 7 1
      Controller/CloudStorage.py
  2. 21 11
      Controller/InAppPurchaseController.py

+ 7 - 1
Controller/CloudStorage.py

@@ -210,7 +210,13 @@ class CloudStorageView(View):
             if not uid_set_qs.exists():
                 return response.json(173)
             ucode = uid_set_qs[0]['ucode']
-            pixel_level = 1 if ucode and int(ucode[-5]) >= 8 else 0
+            dpi_flag = 0
+            if ucode:
+                if ucode[-5] == 'A':
+                    dpi_flag = 10
+                else:
+                    dpi_flag = int(ucode[-5])
+            pixel_level = 1 if ucode and dpi_flag >= 8 else 0
             store_qs = Store_Meal.objects.filter(Q(lang__lang=lang), Q(is_show=0), ~Q(pay_type='11'))  # 过滤激活码、隐藏套餐
             experience_context_qs = ExperienceContextModel.objects.filter(uid=uid, experience_type=0)
 

+ 21 - 11
Controller/InAppPurchaseController.py

@@ -104,21 +104,22 @@ class InAppPurchaseView(View):
             transaction_info = client.get_transaction_info(transaction_id)
 
             signed_transaction_info = transaction_info.signedTransactionInfo
-            if Order_Model.objects.filter(payType=5, transaction_id=original_transaction_identifier).exists():
+            if Order_Model.objects.filter(payType=5, transaction_id=transaction_id).exists():
                 logger.info(f"该transaction_id已订阅过:{transaction_id}")
                 return response.json(10048)
 
             # 处理一台手机多账号登录订阅情况
-            device_apple_package_qs = DeviceApplePackage.objects.filter(
-                original_transaction_id=original_transaction_identifier)
-            if device_apple_package_qs.exists():
-                if device_apple_package_qs[0]["userID"] != user_id:
-                    return response.json(10050)
-                elif device_apple_package_qs[0]["uid"] == uid:
-                    device_apple_package_qs.update(subscription_status=1)
-                    return response.json(0)
-                else:
-                    return response.json(10048)
+            if original_transaction_identifier != "":
+                device_apple_package_qs = DeviceApplePackage.objects.filter(
+                    original_transaction_id=original_transaction_identifier)
+                if device_apple_package_qs.exists():
+                    if device_apple_package_qs[0]["userID"] != user_id:
+                        return response.json(10050)
+                    elif device_apple_package_qs[0]["uid"] == uid:
+                        device_apple_package_qs.update(subscription_status=1)
+                        return response.json(0)
+                    else:
+                        return response.json(10048)
 
             root_certificates = []
             for cert_name in [
@@ -475,6 +476,15 @@ class InAppPurchaseView(View):
                 # 一种通知类型,指示客户发起了消费型 App 内购买项目或自动续期订阅的退款请求,并且 App Store 要求您提供消费数据。有关详细信息,请参阅发送消耗信息。
                 pass
 
+            elif str(decoded_payload.rawNotificationType) == "DID_CHANGE_RENEWAL_STATUS":
+                if decoded_payload.rawSubtype == "AUTO_RENEW_DISABLED":
+                    # 自动续订被禁用
+                    decoded_transaction_information = verifier.verify_and_decode_signed_transaction(
+                        decoded_payload.data.signedTransactionInfo)
+                    original_transaction_id = decoded_transaction_information.originalTransactionId
+                    if original_transaction_id:
+                        DeviceApplePackage.objects.filter(original_transaction_id=original_transaction_id).update(
+                            subscription_status=0)
             else:
                 logger.info(f"App Store服务器通知decoded_payload.rawNotificationType 未处理")
                 return HttpResponse(status=500)