|
@@ -174,12 +174,14 @@ class InAppPurchaseView(View):
|
|
# 第一种情况: 套餐已过期再次订阅
|
|
# 第一种情况: 套餐已过期再次订阅
|
|
if device_apple_package_qs[0].uid == uid and device_apple_package_qs[0].subscription_status == 2:
|
|
if device_apple_package_qs[0].uid == uid and device_apple_package_qs[0].subscription_status == 2:
|
|
# 使用App Store服务器通知接口订阅
|
|
# 使用App Store服务器通知接口订阅
|
|
|
|
+ Order_Model.objects.filter(orderID=order_id).delete()
|
|
pay_result_url = CommonService.get_payment_status_url(lang, 'success')
|
|
pay_result_url = CommonService.get_payment_status_url(lang, 'success')
|
|
return response.json(0, {'url': pay_result_url})
|
|
return response.json(0, {'url': pay_result_url})
|
|
|
|
|
|
# 第二种情况: 套餐未过期已取消再次订阅
|
|
# 第二种情况: 套餐未过期已取消再次订阅
|
|
elif device_apple_package_qs[0].uid == uid and device_apple_package_qs[0].subscription_status == 3:
|
|
elif device_apple_package_qs[0].uid == uid and device_apple_package_qs[0].subscription_status == 3:
|
|
# 使用App Store服务器通知接口修改订阅状态
|
|
# 使用App Store服务器通知接口修改订阅状态
|
|
|
|
+ Order_Model.objects.filter(orderID=order_id).delete()
|
|
pay_result_url = CommonService.get_payment_status_url(lang, 'success')
|
|
pay_result_url = CommonService.get_payment_status_url(lang, 'success')
|
|
return response.json(0, {'url': pay_result_url})
|
|
return response.json(0, {'url': pay_result_url})
|
|
|
|
|
|
@@ -506,6 +508,8 @@ class InAppPurchaseView(View):
|
|
# originalTransactionId 原始购买的交易标识符
|
|
# originalTransactionId 原始购买的交易标识符
|
|
original_transaction_id = decoded_transaction_information.originalTransactionId
|
|
original_transaction_id = decoded_transaction_information.originalTransactionId
|
|
transaction_id = decoded_transaction_information.transactionId
|
|
transaction_id = decoded_transaction_information.transactionId
|
|
|
|
+ app_account_token = decoded_transaction_information.appAccountToken
|
|
|
|
+ app_account_token = json.loads(app_account_token)
|
|
logger.info(
|
|
logger.info(
|
|
f"App Store服务器通知,再次订阅originalTransactionId原始购买的交易标识符{original_transaction_id}")
|
|
f"App Store服务器通知,再次订阅originalTransactionId原始购买的交易标识符{original_transaction_id}")
|
|
if not original_transaction_id:
|
|
if not original_transaction_id:
|
|
@@ -514,8 +518,7 @@ class InAppPurchaseView(View):
|
|
# 查旧订单消息
|
|
# 查旧订单消息
|
|
ord_order_qs = Order_Model.objects.filter(original_transaction_id=original_transaction_id)
|
|
ord_order_qs = Order_Model.objects.filter(original_transaction_id=original_transaction_id)
|
|
if not ord_order_qs.exists():
|
|
if not ord_order_qs.exists():
|
|
- logger.info(
|
|
|
|
- f"App Store服务器通知未查询到旧订单信息, originalTransactionId:{original_transaction_id}, 返回状态 400")
|
|
|
|
|
|
+ logger.info(f"App Store服务器通知未查询到旧订单信息, originalTransactionId:{original_transaction_id}, 返回状态 400")
|
|
return HttpResponse(status=400)
|
|
return HttpResponse(status=400)
|
|
|
|
|
|
# 解决云存充值成功, 由于一些原因返回500 导致苹果未扣款的问题
|
|
# 解决云存充值成功, 由于一些原因返回500 导致苹果未扣款的问题
|
|
@@ -529,6 +532,12 @@ class InAppPurchaseView(View):
|
|
uid = ord_order[0]["UID"]
|
|
uid = ord_order[0]["UID"]
|
|
pay_type = ord_order[0]["payType"]
|
|
pay_type = ord_order[0]["payType"]
|
|
user_id = ord_order[0]["userID_id"]
|
|
user_id = ord_order[0]["userID_id"]
|
|
|
|
+
|
|
|
|
+ new_user_id = app_account_token["user_id"]
|
|
|
|
+ if new_user_id != user_id:
|
|
|
|
+ uid = app_account_token["UID"]
|
|
|
|
+ user_id = new_user_id
|
|
|
|
+
|
|
# 用产品id找到使用的套餐
|
|
# 用产品id找到使用的套餐
|
|
product_id = decoded_transaction_information.productId
|
|
product_id = decoded_transaction_information.productId
|
|
rank_id = InAppPurchasePackage.objects.filter(product_id=product_id).values("rank")[0]["rank"]
|
|
rank_id = InAppPurchasePackage.objects.filter(product_id=product_id).values("rank")[0]["rank"]
|
|
@@ -624,7 +633,8 @@ class InAppPurchaseView(View):
|
|
put_time = now_time + 11.5 * 60 * 60
|
|
put_time = now_time + 11.5 * 60 * 60
|
|
InAppRefund.objects.create(transaction_id=transaction_id, orderID=orderID,
|
|
InAppRefund.objects.create(transaction_id=transaction_id, orderID=orderID,
|
|
uid=uid, app_type=app_type, created_time=now_time,
|
|
uid=uid, app_type=app_type, created_time=now_time,
|
|
- updated_time=now_time, put_time=put_time, app_account_token=app_account_token)
|
|
|
|
|
|
+ updated_time=now_time, put_time=put_time,
|
|
|
|
+ app_account_token=app_account_token)
|
|
return HttpResponse(status=200)
|
|
return HttpResponse(status=200)
|
|
|
|
|
|
elif str(decoded_payload.rawNotificationType) == "DID_CHANGE_RENEWAL_STATUS":
|
|
elif str(decoded_payload.rawNotificationType) == "DID_CHANGE_RENEWAL_STATUS":
|