Browse Source

使用订阅组id判断套餐是否订阅

linhaohong 1 year ago
parent
commit
2e79b5ddb0
3 changed files with 6 additions and 5 deletions
  1. 3 3
      Controller/CloudStorage.py
  2. 1 0
      Model/models.py
  3. 2 2
      Object/AppleInAppPurchaseSubscriptionObject.py

+ 3 - 3
Controller/CloudStorage.py

@@ -1676,13 +1676,13 @@ class CloudStorageView(View):
                 check_subscribe_Paypal = Paypal.checkSubscriptions(user_id, uid, rank)
                 # 查设备是否有绑定套餐
                 device_apple_package_qs = DeviceApplePackage.objects.filter(userID=user_id, uid=uid).values(
-                    "package_id__product_id", "package_id__subscription_group")
+                    "package_id__product_id", "package_id__subscription_group_id")
                 if device_apple_package_qs.exists():
                     product_id = device_apple_package_qs[0]["package_id__product_id"]
-                    subscription_group = device_apple_package_qs[0]["package_id__subscription_group"]
+                    subscription_group_id = device_apple_package_qs[0]["package_id__subscription_group_id"]
                     # 检查内购订阅
                     in_app_subscription = InAppSubscription()
-                    check_subscribe_InApp = in_app_subscription.check_subscriptions(uid, product_id, subscription_group)
+                    check_subscribe_InApp = in_app_subscription.check_subscriptions(uid, subscription_group_id)
                     if not check_subscribe_Paypal or check_subscribe_InApp:
                         logger.info(f'设备订阅过套餐Paypal:{not check_subscribe_Paypal}, AppleInApp:{check_subscribe_InApp}')
                         return response.json(10050)

+ 1 - 0
Model/models.py

@@ -5103,6 +5103,7 @@ class StsFrequency(models.Model):
 
 class InAppPurchasePackage(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    subscription_group_id = models.CharField(default='', max_length=64, verbose_name='内购订阅组id')
     subscription_group = models.CharField(default='', max_length=64, verbose_name='内购订阅组')
     product_id = models.CharField(default='', max_length=64, verbose_name='内购商品id')
     package_type = models.SmallIntegerField(default=0, verbose_name='套餐类型') # 0:非订阅, 1:订阅

+ 2 - 2
Object/AppleInAppPurchaseSubscriptionObject.py

@@ -25,7 +25,7 @@ class InAppSubscription:
             private_key = file.read()
         self.client = AppStoreServerAPIClient(private_key, key_id, issuer_id, bundle_id, environment)
 
-    def check_subscriptions(self, uid, product_id, subscription_group):
+    def check_subscriptions(self, uid, subscription_group_id):
         """
         检查用户是否订阅
         :param uid:
@@ -40,7 +40,7 @@ class InAppSubscription:
             return False
         LOGGER.info("subscription_statuses:{}".format(subscription_statuses))
         for subscription_status in subscription_statuses.data:
-            if subscription_status.subscriptionGroupIdentifier == subscription_group:
+            if str(subscription_status.subscriptionGroupIdentifier) == subscription_group_id:
                 for subscription_status_item in subscription_status.lastTransactions:
                     if str(subscription_status_item.status) == "Status.ACTIVE":
                         return True