|
@@ -15,7 +15,7 @@ import json
|
|
|
import math
|
|
|
import time
|
|
|
import urllib
|
|
|
-
|
|
|
+from Object.AliPayObject import AliPayObject
|
|
|
import oss2
|
|
|
import paypalrestsdk
|
|
|
from aliyunsdkcore import client
|
|
@@ -24,11 +24,9 @@ from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
|
|
|
from django.utils.decorators import method_decorator
|
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
|
from django.views.generic.base import View
|
|
|
-from alipay import AliPay
|
|
|
|
|
|
from Ansjer.config import BASE_DIR
|
|
|
-from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \
|
|
|
- SERVER_DOMAIN_SSL
|
|
|
+from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD
|
|
|
from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
@@ -122,7 +120,7 @@ class CloudVodView(View):
|
|
|
elif operation == 'aliPayCreateOrder':
|
|
|
return self.do_pay_by_ali(request_dict, userID, response)
|
|
|
elif operation == 'orderStatus':
|
|
|
- return self.do_pay_status(request_dict,userID)
|
|
|
+ return self.do_pay_status(request_dict, userID)
|
|
|
else:
|
|
|
return response.json(414)
|
|
|
|
|
@@ -132,29 +130,19 @@ class CloudVodView(View):
|
|
|
signature = data["sign"]
|
|
|
data.pop('sign')
|
|
|
orderID = data['out_trade_no']
|
|
|
+
|
|
|
+ order_qs = Order_Model.objects.filter(orderID=orderID, status=0)
|
|
|
+ if not order_qs.exists():
|
|
|
+ return response.json(404)
|
|
|
+
|
|
|
print(json.dumps(data))
|
|
|
print(signature)
|
|
|
# verify
|
|
|
-
|
|
|
- # app_private_key_string = open(BASE_DIR + '/Ansjer/file/alipay/alipay_private_2048.pem').read()
|
|
|
- # alipay_public_key_string = open(BASE_DIR + '/Ansjer/file/alipay/alipay_public_2048.pem').read()
|
|
|
- app_private_key_string = open(BASE_DIR + '/Ansjer/file/alipay/zosi_alipay_private_2048.pem').read()
|
|
|
- alipay_public_key_string = open(BASE_DIR + '/Ansjer/file/alipay/zosi_alipay_public_2048.pem').read()
|
|
|
- alipay = AliPay(
|
|
|
- # appid="2016092200569234",
|
|
|
- appid="2019041663958142",
|
|
|
- app_notify_url=None, # the default notify path
|
|
|
- app_private_key_string=app_private_key_string,
|
|
|
- alipay_public_key_string=alipay_public_key_string,
|
|
|
- sign_type="RSA2", # RSA or RSA2
|
|
|
- debug=False # False by default
|
|
|
- )
|
|
|
+ aliPayObj = AliPayObject()
|
|
|
+ alipay = aliPayObj.conf()
|
|
|
success = alipay.verify(data, signature)
|
|
|
if success and data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"):
|
|
|
print("trade succeed")
|
|
|
- order_qs = Order_Model.objects.filter(orderID=orderID,status=0)
|
|
|
- if not order_qs.exists():
|
|
|
- return response.json(404)
|
|
|
nowTime = int(time.time())
|
|
|
order_qs.update(status=1, updTime=nowTime)
|
|
|
order_list = order_qs.values("UID", "rank_id", "channel")
|
|
@@ -232,20 +220,9 @@ class CloudVodView(View):
|
|
|
nowTime = int(time.time())
|
|
|
# 新增流程
|
|
|
orderID = CommonService.createOrderID()
|
|
|
- app_private_key_string = open(BASE_DIR + '/Ansjer/file/alipay/zosi_alipay_private_2048.pem').read()
|
|
|
- alipay_public_key_string = open(BASE_DIR + '/Ansjer/file/alipay/zosi_alipay_public_2048.pem').read()
|
|
|
- # app_private_key_string = open(BASE_DIR + '/Ansjer/file/alipay/alipay_private_2048.pem').read()
|
|
|
- # alipay_public_key_string = open(BASE_DIR + '/Ansjer/file/alipay/alipay_public_2048.pem').read()
|
|
|
try:
|
|
|
- alipay = AliPay(
|
|
|
- # appid="2016092200569234",
|
|
|
- appid="2019041663958142",
|
|
|
- app_notify_url=None, # the default notify path
|
|
|
- app_private_key_string=app_private_key_string,
|
|
|
- alipay_public_key_string=alipay_public_key_string,
|
|
|
- sign_type="RSA2", # RSA or RSA2
|
|
|
- debug=False # False by default
|
|
|
- )
|
|
|
+ aliPayObj = AliPayObject()
|
|
|
+ alipay = aliPayObj.conf()
|
|
|
order_string = alipay.api_alipay_trade_wap_pay(
|
|
|
out_trade_no=orderID,
|
|
|
total_amount=price,
|
|
@@ -515,7 +492,7 @@ class CloudVodView(View):
|
|
|
endTime=nowTime + int(day) * 3600 * 24,
|
|
|
rank_id=rank,
|
|
|
paypal=approval_url)
|
|
|
- return response.json(0, {"redirectUrl": approval_url,"orderID":orderID})
|
|
|
+ return response.json(0, {"redirectUrl": approval_url, "orderID": orderID})
|
|
|
return response.json(10, 'generate_order_false')
|
|
|
|
|
|
# 生成设备sts上传授权
|
|
@@ -602,54 +579,6 @@ class CloudVodView(View):
|
|
|
OssCrdModel.objects.create(uid=UID, channel=channel, data=json.dumps(res), addTime=now_time)
|
|
|
return JsonResponse(status=200, data=res)
|
|
|
|
|
|
- # # 获取设备回放列表
|
|
|
- # def do_get_hls_list(self, request_dict, userID, response):
|
|
|
- # did = request_dict.get('did', None)
|
|
|
- # channel = request_dict.get('channel', None)
|
|
|
- # # 目录开始第一个
|
|
|
- # # marker = request_dict.get('marker', '')
|
|
|
- # daytime = request_dict.get('daytime', None)
|
|
|
- # hour = request_dict.get('hour', None)
|
|
|
- # if not did or not channel or not daytime:
|
|
|
- # return response.json(444, 'did,channel')
|
|
|
- # qs = Device_Info.objects.filter(userID_id=userID, id=did, isShare=False).values("UID")
|
|
|
- # if not qs.exists():
|
|
|
- # return response.json(12)
|
|
|
- # uid = qs[0]['UID']
|
|
|
- # now_time = CommonService.get_utc()
|
|
|
- # ubqs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time) \
|
|
|
- # .values('endTime', 'bucket__bucket', 'bucket__endpoint')
|
|
|
- # if not ubqs.exists():
|
|
|
- # return response.json(10, '未购买或过期')
|
|
|
- # if not ubqs.exists():
|
|
|
- # return response.json(10, '未开通云存储')
|
|
|
- # bucket_name = ubqs[0]["bucket__bucket"]
|
|
|
- # endpoint = ubqs[0]["bucket__endpoint"]
|
|
|
- # auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
|
|
|
- # bucket = oss2.Bucket(auth, endpoint, bucket_name)
|
|
|
- # vod_play_list = []
|
|
|
- # prefix = '{uid}/vod{channel}/{daytime}/'.format(uid=uid, channel=channel, daytime=daytime, hour=hour)
|
|
|
- #
|
|
|
- # for obj in oss2.ObjectIterator(bucket=bucket, prefix=prefix, delimiter='/', max_keys=2):
|
|
|
- # # 通过is_prefix方法判断obj是否为文件夹。
|
|
|
- # if obj.is_prefix(): # 文件夹
|
|
|
- # print('directory: ' + obj.key)
|
|
|
- # ptime = obj.key.split('/')[3]
|
|
|
- # url = bucket.sign_url('GET', '{prefix}{name}.m3u8'.format(prefix=obj.key, name=ptime), 3600,
|
|
|
- # params={'x-oss-process': 'hls/sign'})
|
|
|
- # urllst = url.split('?')
|
|
|
- # url_start = urllib.parse.unquote(urllst[0])
|
|
|
- # url_end = urllst[1]
|
|
|
- # vod_play_url = '{url_start}?{url_end}'.format(url_start=url_start, url_end=url_end)
|
|
|
- # thumb_key = '{prefix}ts0.ts'.format(prefix=obj.key)
|
|
|
- # print(thumb_key)
|
|
|
- # thumb = bucket.sign_url('GET', thumb_key, 3600,
|
|
|
- # params={'x-oss-process': 'video/snapshot,t_10000,m_fast,w_300'})
|
|
|
- # vod_play_list.append({'name': ptime, 'sign_url': vod_play_url, 'thumb': thumb, 'sec': 0})
|
|
|
- # else: # 文件
|
|
|
- # pass
|
|
|
- # # print('file: ' + obj.key)
|
|
|
- # return response.json(0, vod_play_list)
|
|
|
|
|
|
def do_paypal_execute(self, request_dict, response):
|
|
|
paymentId = request_dict.get('paymentId', None)
|
|
@@ -838,7 +767,7 @@ class CloudVodView(View):
|
|
|
{'name': vod['time'], 'sign_url': vod_play_url, 'thumb': thumb, 'sec': vod['sec'], 'id': vod['id']})
|
|
|
return response.json(0, vod_play_list)
|
|
|
|
|
|
- def do_pay_status(self,request_dict,userID):
|
|
|
+ def do_pay_status(self, request_dict, userID):
|
|
|
orderID = request_dict.get('orderID', None)
|
|
|
om_qs = Order_Model.objects.filter(userID_id=userID, orderID=orderID).values('status')
|
|
|
response = HttpResponse()
|
|
@@ -998,10 +927,25 @@ class CloudVodView(View):
|
|
|
response.content = success_pay_content
|
|
|
return response
|
|
|
else:
|
|
|
- response = HttpResponse()
|
|
|
- response.content = falil_pay_content
|
|
|
- return response
|
|
|
+ # 如果未支付则调用查询订单是否支付成功
|
|
|
+ aliPayObj = AliPayObject()
|
|
|
+ alipay = aliPayObj.conf()
|
|
|
+ # check order status
|
|
|
+ print("now sleep 3s")
|
|
|
+ # time.sleep(3)
|
|
|
+ result = alipay.api_alipay_trade_query(out_trade_no=orderID)
|
|
|
+ if result.get("trade_status", "") == "TRADE_SUCCESS":
|
|
|
+ print('paid')
|
|
|
+ nowTime = int(time.time())
|
|
|
+ om_qs.update(status=1, updTime=nowTime)
|
|
|
+
|
|
|
+ response.content = success_pay_content
|
|
|
+ return response
|
|
|
+ else:
|
|
|
+ print("not paid...")
|
|
|
+ response.content = falil_pay_content
|
|
|
+ return response
|
|
|
+
|
|
|
else:
|
|
|
- response = HttpResponse()
|
|
|
response.content = falil_pay_content
|
|
|
- return response
|
|
|
+ return response
|