|
@@ -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)
|