linhaohong 1 жил өмнө
parent
commit
e5489b206c

+ 47 - 2
Controller/InAppPurchaseController.py

@@ -342,8 +342,53 @@ class InAppPurchaseView(View):
 
                 logger.info(f"App Store服务器通知解码后decoded_payload:{decoded_payload}")
 
-                if decoded_payload.notificationType == "DID_RENEW":
-                    # 处理订阅续费
+                if decoded_payload.notificationType == "DID_CHANGE_RENEWAL_STATUS":
+                    # 已更改订阅状态
+                    # 一种通知类型,与其子类型一起表示客户更改了订阅续订状态。如果subtype为
+                    # AUTO_RENEW_ENABLED,则表示客户重新启用了订阅自动续订功能。如果subtype为
+                    # AUTO_RENEW_DISABLED,则表示客户禁用了订阅自动续订功能,或者客户请求退款后
+                    # App
+                    # Store
+                    # 禁用了订阅自动续订功能。
+                    pass
+                elif decoded_payload.notificationType == "DID_RENEW":
+                    # 一种通知类型,与其subtype一起表示订阅已成功续订。如果subtype为
+                    # BILLING_RECOVERY,则表示之前未能续订的过期订阅已成功续订。如果子类型为空,则活动订购已成功自动续订到新的交易期。向客户提供订阅内容或服务的访问权限。
+                    return HttpResponse(status=400)
+
+                elif decoded_payload.notificationType == "SUBSCRIBED":
+                    # 处理订阅
+                    # 一种通知类型,与其子类型一起表示客户订阅了自动续订的套餐。如果子类型为
+                    # INITIAL_BUY(首次购买),则表示用户首次购买或通过家庭共享访问该订阅。如果子类型为
+                    # RESUBSCRIBE,则表示用户通过家庭共享重新订阅了同一订阅或同一订阅组中的另一个订阅或获得了访问权。
+                    pass
+
+                elif decoded_payload.notificationType == "ONE_TIME_CHARGE":
+                    # 处理单次购买 只有在沙盒环境会发通知
+                    pass
+
+                elif decoded_payload.notificationType == "EXPIRED":
+                    # 处理订阅过期
+                    # 一种通知类型,与其子类型一起表示订阅已过期。如果subtype为
+                    # VOLUNTARY(自愿),则表示订阅在用户禁用订阅续订后过期。如果subtype是
+                    # BILLING_RETRY(计费重试),则表示订阅过期,因为计费重试期结束时没有成功的计费交易。如果subtype为
+                    # PRICE_INCREASE,则表示订阅已过期,因为客户不同意需要客户同意的价格上涨。如果subtype为
+                    # PRODUCT_NOT_FOR_SALE,则表示订阅已过期,因为在订阅尝试续订时,产品已不可购买。
+                    # 没有子类型的通知表示订阅因其他原因过期。
+                    pass
+
+                elif decoded_payload.notificationType == "GRACE_PERIOD_EXPIRED":
+                    # 处理订阅过期
+                    # 一种通知类型,表示账单宽限期已结束,但未续订,因此可以关闭对服务或内容的访问。通知客户其账单信息可能有问题。App Store 会继续重试计费 60 天,或直到客户解决了计费问题或取消了订阅(以先到者为准)。如需了解更多信息,请参阅减少用户非自愿流失。
+                    pass
+
+                elif decoded_payload.notificationType == "DID_FAIL_TO_RENEW":
+                    # 处理订阅续费失败
+                    # 该通知类型及其子类型表示订阅因计费问题而未能续订。订阅进入计费重试期。如果子类型为
+                    # GRACE_PERIOD,则在宽限期内继续提供服务。如果子类型为空,则订购不在宽限期内,可以停止提供订购服务。
+                    # 通知客户其账单信息可能有问题。App Store
+                    # 会继续重试计费60天,或直到客户解决了计费问题或取消了订阅(以先到者为准)。有关更多信息,请参阅
+                    # "减少用户非自愿流失"。
                     pass
 
                 return HttpResponse(status=200)