浏览代码

周期付款 - 防止transaction_id重复订阅充值

linhaohong 1 年之前
父节点
当前提交
11aad4981f
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      Controller/InAppPurchaseController.py

+ 5 - 3
Controller/InAppPurchaseController.py

@@ -104,9 +104,6 @@ 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=transaction_id).exists():
-                logger.info(f"该transaction_id已订阅过:{transaction_id}")
-                return response.json(10048)
 
             # 处理一台手机多账号登录订阅情况
             if original_transaction_identifier != "":
@@ -121,6 +118,11 @@ class InAppPurchaseView(View):
                         pay_result_url = CommonService.get_payment_status_url(lang, 'success')
                         return response.json(0, {'url': pay_result_url})
 
+            # transaction_id相同的情况 ---- 本次订阅未过期,用户在苹果设置中将订阅重新打开时会传上次订阅相同的 transaction_id。
+            if Order_Model.objects.filter(payType=5, transaction_id=transaction_id).exists():
+                logger.info(f"该transaction_id已订阅过:{transaction_id}")
+                return response.json(10048)
+
             root_certificates = []
             for cert_name in [
                 'AppleIncRootCertificate.cer', 'AppleComputerRootCertificate.cer',