|
@@ -15,6 +15,8 @@ import time
|
|
|
from django.utils.decorators import method_decorator
|
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
|
from django.views.generic.base import View
|
|
|
+
|
|
|
+from Object.AliPayObject import AliPayObject
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Model.models import Order_Model, Device_Info
|
|
@@ -50,7 +52,7 @@ class OrderView(View):
|
|
|
token = request_dict.get('token', None)
|
|
|
# 设备主键uid
|
|
|
tko = TokenObject(token)
|
|
|
- response.lang = tko.lang
|
|
|
+ response.lang = request_dict.get('language', 'en')
|
|
|
if tko.code != 0:
|
|
|
return response.json(tko.code)
|
|
|
userID = tko.userID
|
|
@@ -66,6 +68,10 @@ class OrderView(View):
|
|
|
return self.do_query_order_by_status(request_dict, userID, response)
|
|
|
elif operation == 'orderDetail':
|
|
|
return self.do_query_order_detail(request_dict, userID, response)
|
|
|
+ elif operation == 'cancel':
|
|
|
+ return self.do_cancel_order(request_dict, userID, response)
|
|
|
+ elif operation == 'delete':
|
|
|
+ return self.do_delete_order(request_dict, userID, response)
|
|
|
else:
|
|
|
return response.json(444, 'error path')
|
|
|
|
|
@@ -208,3 +214,76 @@ class OrderView(View):
|
|
|
return response.json(173)
|
|
|
else:
|
|
|
return response.json(444)
|
|
|
+
|
|
|
+ def do_cancel_order(self, request_dict, userID, response):
|
|
|
+ orderID = request_dict.get('orderID', None)
|
|
|
+
|
|
|
+ if orderID is None:
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ order_qs = Order_Model.objects.filter(orderID=orderID)
|
|
|
+ if not order_qs.exists():
|
|
|
+ return response.json(800)
|
|
|
+
|
|
|
+ order = order_qs[0]
|
|
|
+ if order.status != 0:
|
|
|
+ return response.json(802)
|
|
|
+
|
|
|
+ if order.payType == 1: # 支付宝支付的订单
|
|
|
+ return self.do_cancel_alipay_order(order, response)
|
|
|
+ else:
|
|
|
+ return self.do_cancel_paypal_order(order, response)
|
|
|
+
|
|
|
+ def do_delete_order(self, request_dict, userID, response):
|
|
|
+ orderID = request_dict.get('orderID', None)
|
|
|
+
|
|
|
+ if orderID:
|
|
|
+ Order_Model.objects.filter(orderID=orderID, userID__userID=userID).delete()
|
|
|
+ return response.json(0)
|
|
|
+ else:
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ def do_cancel_alipay_order(self, order, response):
|
|
|
+ # 交易状态:
|
|
|
+ # WAIT_BUYER_PAY(交易创建,等待买家付款)
|
|
|
+ # TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)
|
|
|
+ # TRADE_SUCCESS(交易支付成功)
|
|
|
+ # TRADE_FINISHED(交易结束,不可退款)
|
|
|
+
|
|
|
+ try:
|
|
|
+ aliPayObj = AliPayObject()
|
|
|
+ alipay = aliPayObj.conf()
|
|
|
+ result = alipay.api_alipay_trade_query(out_trade_no=order.orderID)
|
|
|
+ print(result)
|
|
|
+
|
|
|
+ if result['code'] == '100000':
|
|
|
+ trade_status = result['trade_status']
|
|
|
+ if trade_status == 'TRADE_CLOSED' or trade_status == 'WAIT_BUYER_PAY':
|
|
|
+ order.status = 2
|
|
|
+ order.updTime = int(time.time())
|
|
|
+ order.save()
|
|
|
+ return response.json(0)
|
|
|
+ elif trade_status == 'TRADE_SUCCESS':
|
|
|
+ order.status = 1
|
|
|
+ order.updTime = int(time.time())
|
|
|
+ order.save()
|
|
|
+ return response.json(802)
|
|
|
+ elif result['code'] == '40004':
|
|
|
+ order.status = 2
|
|
|
+ order.updTime = int(time.time())
|
|
|
+ order.save()
|
|
|
+ return response.json(0)
|
|
|
+ else:
|
|
|
+ return response.json(10, result['sub_msg'])
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ print(repr(e))
|
|
|
+ return response.json(10, repr(e))
|
|
|
+
|
|
|
+ def do_cancel_paypal_order(self, order, response):
|
|
|
+
|
|
|
+ if order.status == 0:
|
|
|
+ order.status = 2
|
|
|
+ order.updTime = int(time.time())
|
|
|
+ order.save()
|
|
|
+ return response.json(0)
|