Test.py 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: Ansjer
  7. @software: PyCharm
  8. @DATE: 2018/5/22 13:58
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: Test.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. from django.views.generic.base import View
  15. from django.utils.decorators import method_decorator
  16. from django.views.decorators.csrf import csrf_exempt
  17. # from Ansjer.settings import *
  18. from django.contrib import auth
  19. from django.http import HttpResponseRedirect
  20. '''
  21. http://192.168.136.40:8077/Test
  22. '''
  23. import json
  24. import requests
  25. from Service.ModelService import ModelService
  26. from django.middleware.csrf import get_token
  27. from django.http import JsonResponse
  28. from ratelimit.decorators import ratelimit
  29. from Object.ResponseObject import ResponseObject
  30. from Object.TokenObject import TokenObject
  31. from Object.RedisObject import RedisObject
  32. from django.shortcuts import render_to_response, render, redirect
  33. import paypalrestsdk
  34. from django.http import HttpResponseRedirect, HttpResponse
  35. class Test(View):
  36. '''
  37. limit=10:指定返回记录的数量
  38. offset=10:指定返回记录的开始位置。
  39. page=2&per_page=100:指定第几页,以及每页的记录数。
  40. sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
  41. animal_type_id=1:指定筛选条件
  42. '''
  43. @method_decorator(csrf_exempt)
  44. def dispatch(self, *args, **kwargs):
  45. return super(Test, self).dispatch(*args, **kwargs)
  46. # 查询
  47. '''
  48. /Test?paymentId=PAY-4VL25365CA733482BLPMAHBI&token=EC-1SU951197H0006730&PayerID=A29TCMY2J8G9C
  49. '''
  50. @ratelimit(key='ip', rate='1/m')
  51. def get(self, request, *args, **kwargs):
  52. # 阿里云oss测试
  53. return self.ossCrd()
  54. # 七牛测试
  55. return self.qiniutokentest()
  56. # paypal测试
  57. return self.paypaytest(request)
  58. # 增加
  59. def post(self, request, *args, **kwargs):
  60. response = ResponseObject()
  61. return response.json(0)
  62. def ossCrd(self):
  63. '''
  64. 生成sts上传授权
  65. '''
  66. from aliyunsdkcore import client
  67. from aliyunsdksts.request.v20150401 import AssumeRoleRequest
  68. import json
  69. import oss2
  70. # Endpoint以杭州为例,其它egion请按实际情况填写。
  71. endpoint = 'oss-cn-shenzhen.aliyuncs.com'
  72. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  73. # access_key_id = 'LTAIXSozepSx81xe'
  74. # access_key_secret = '19BlxRiAHDPLx4mhz6vQZRuhK0eKed'
  75. access_key_id = 'LTAIKF7ohvwF5ugH'
  76. access_key_secret = 'AfBIeMdrvMN3m0EsQYuRkmNyA7uWoz'
  77. bucket_name = 'testrtmp'
  78. # role_arn是角色的资源名称。
  79. role_arn = 'acs:ram::1024237323330331:role/maxadmin'
  80. clt = client.AcsClient(access_key_id, access_key_secret, 'cn-shenzhen')
  81. req = AssumeRoleRequest.AssumeRoleRequest()
  82. # 设置返回值格式为JSON。
  83. req.set_accept_format('json')
  84. req.set_RoleArn(role_arn)
  85. req.set_RoleSessionName('chanjunkai')
  86. req.set_DurationSeconds(3600)
  87. policys = {
  88. "Version": "1",
  89. "Statement": [
  90. {
  91. "Action": [
  92. "oss:PutObject",
  93. ],
  94. "Resource": ["acs:oss:*:*:testrtmp/*"],
  95. "Effect": "Allow",
  96. "Condition": {
  97. "IpAddress": {
  98. "acs:SourceIp": "120.237.157.184"
  99. }
  100. }
  101. }
  102. ]
  103. }
  104. req.set_Policy(Policy=json.dumps(policys))
  105. body = clt.do_action(req)
  106. # body = clt.do_action_with_exception(req)
  107. # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
  108. token = json.loads(body)
  109. print(token)
  110. res={
  111. 'AccessKeyId':token['Credentials']['AccessKeyId'],
  112. 'AccessKeySecret':token['Credentials']['AccessKeySecret'],
  113. 'SecurityToken':token['Credentials']['SecurityToken'],
  114. 'expire':3600,
  115. 'endpoint':endpoint,
  116. 'bucket_name':bucket_name
  117. }
  118. return JsonResponse(status=200,data=res)
  119. def qiniutokentest(self):
  120. # flake8: noqa
  121. from qiniu import Auth
  122. # 需要填写你的 Access Key 和 Secret Key
  123. access_key = 'dwdHw1pQ9wFNiHDdflBUiZyWmiLppd5VCC2yF0O_'
  124. secret_key = 'uTn7hdKD9Mbf2dzMWjLj2e9V1nXN7HAsOGRKwqDF'
  125. # 构建鉴权对象
  126. q = Auth(access_key, secret_key)
  127. # 要上传的空间
  128. bucket_name = 'test'
  129. # 上传到七牛后保存的文件名
  130. key = '/*'
  131. # 生成上传 Token,可以指定过期时间等
  132. # 上传策略示例
  133. # https://developer.qiniu.com/kodo/manual/1206/put-policy
  134. policy = {
  135. # 'callbackUrl':'https://requestb.in/1c7q2d31',
  136. # 'callbackBody':'filename=$(fname)&filesize=$(fsize)'
  137. # 'persistentOps':'imageView2/1/w/200/h/200'
  138. }
  139. # 3600为token过期时间,秒为单位。3600等于一小时
  140. token = q.upload_token(bucket_name, key, 3600, policy)
  141. print(token)
  142. return HttpResponse(content=token, status=200)
  143. def paypaytest(self, request):
  144. '''
  145. :param request:
  146. :param args:
  147. :param kwargs:
  148. :return:
  149. '''
  150. response = ResponseObject()
  151. # return response.json(0)
  152. paymentId = request.GET.get('paymentId', None)
  153. PayerID = request.GET.get('PayerID', None)
  154. if paymentId and PayerID:
  155. paypalrestsdk.configure({
  156. "mode": "sandbox", # sandbox or live
  157. "client_id": "AfnfDqezODOoWGS-W2Itu-Zl1ay1R95IsGlMqPghPA3KGhkPndNMnQT0bdEewvSv92XAFIfLiinmyhBL",
  158. "client_secret": "EErLskwYA1xXY3890mHx5OhzgK83B2rNc57zIozGNyKc8i6RJuhPTF9WyhhdZgyDEih0heo1MH9Jk1lj"
  159. })
  160. # ID of the payment. This ID is provided when creating payment.
  161. payment = paypalrestsdk.Payment.find(paymentId)
  162. payres = payment.execute({"payer_id": PayerID})
  163. print(payres)
  164. if payres:
  165. print("Payment execute successfully")
  166. else:
  167. print(payment.error) # Error Hash
  168. return response.json(0)
  169. else:
  170. pass
  171. paypalrestsdk.configure({
  172. "mode": "sandbox", # sandbox or live
  173. "client_id": "AfnfDqezODOoWGS-W2Itu-Zl1ay1R95IsGlMqPghPA3KGhkPndNMnQT0bdEewvSv92XAFIfLiinmyhBL",
  174. "client_secret": "EErLskwYA1xXY3890mHx5OhzgK83B2rNc57zIozGNyKc8i6RJuhPTF9WyhhdZgyDEih0heo1MH9Jk1lj"})
  175. payment = paypalrestsdk.Payment({
  176. "intent": "sale",
  177. "payer": {
  178. "payment_method": "paypal"},
  179. "redirect_urls": {
  180. # "return_url": "http://192.168.136.45:3000/payment/execute",
  181. "return_url": "http://192.168.136.40:8077/Test",
  182. "cancel_url": "http://localhost:3000/"},
  183. "transactions": [{
  184. "item_list": {
  185. "items": [{
  186. "name": "item",
  187. "sku": "item",
  188. "price": "5.00",
  189. "currency": "USD",
  190. "quantity": 1}]},
  191. "amount": {
  192. "total": "5.00",
  193. "currency": "USD"},
  194. "description": "This is the payment transaction description."}]})
  195. if payment.create():
  196. print("Payment created successfully")
  197. else:
  198. print(payment.error)
  199. print(payment)
  200. for link in payment.links:
  201. if link.rel == "approval_url":
  202. # Convert to str to avoid Google App Engine Unicode issue
  203. # https://github.com/paypal/rest-api-sdk-python/pull/58
  204. approval_url = str(link.href)
  205. print("Redirect for approval: %s" % (approval_url))
  206. return HttpResponseRedirect(approval_url)
  207. # 修改 资源改变
  208. def put(self, request):
  209. response = ResponseObject()
  210. return response.json(0)
  211. # 修改 属性改变
  212. def PATCH(self, request):
  213. response = ResponseObject()
  214. return response.json(0)
  215. # 删除
  216. def delete(self, request):
  217. response = ResponseObject()
  218. return response.json(0)
  219. def validation(self, request_dict, *args, **kwargs):
  220. response = ResponseObject()
  221. return response.json(0)