| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | #!/usr/bin/env python3  # -*- coding: utf-8 -*-  """@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.@AUTHOR: ASJRD018@NAME: Ansjer@software: PyCharm@DATE: 2018/5/22 13:58@Version: python3.6@MODIFY DECORD:ansjer dev@file: Test.py@Contact: chanjunkai@163.com"""from django.views.generic.base import Viewfrom django.utils.decorators import method_decoratorfrom django.views.decorators.csrf import csrf_exemptfrom django.contrib import authfrom django.http import HttpResponseRedirect'''http://192.168.136.40:8077/Test'''import jsonimport requestsfrom Service.ModelService import ModelServicefrom django.middleware.csrf import get_tokenfrom django.http import JsonResponsefrom ratelimit.decorators import ratelimitfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectfrom Object.RedisObject import RedisObjectfrom django.shortcuts import render_to_response, render, redirectimport paypalrestsdkfrom django.http import HttpResponseRedirect, HttpResponseclass Test(View):    '''    limit=10:指定返回记录的数量    offset=10:指定返回记录的开始位置。    page=2&per_page=100:指定第几页,以及每页的记录数。    sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。    animal_type_id=1:指定筛选条件    '''    @method_decorator(csrf_exempt)    def dispatch(self, *args, **kwargs):        return super(Test, self).dispatch(*args, **kwargs)    # 查询    '''    /Test?paymentId=PAY-4VL25365CA733482BLPMAHBI&token=EC-1SU951197H0006730&PayerID=A29TCMY2J8G9C    '''    @ratelimit(key='ip', rate='1/m')    def get(self, request, *args, **kwargs):        # 阿里云oss测试        return self.ossCrd()        # 七牛测试        # return self.qiniutokentest()        # paypal测试        # return self.paypaytest(request)    # 增加    def post(self, request, *args, **kwargs):        response = ResponseObject()        return response.json(0)    def ossCrd(self):        '''        生成sts上传授权        '''        from aliyunsdkcore import client        from aliyunsdksts.request.v20150401 import AssumeRoleRequest        import json        import oss2        # Endpoint以杭州为例,其它egion请按实际情况填写。        endpoint = 'oss-cn-shenzhen.aliyuncs.com'        # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。        # access_key_id = 'LTAIXSozepSx81xe'        # access_key_secret = '19BlxRiAHDPLx4mhz6vQZRuhK0eKed'        access_key_id = 'LTAIyMkGfEdogyL9'        access_key_secret = '71uIjpsqVOmF7DAITRyRuc259jHOjO'        bucket_name = 'cloudvod1'        # role_arn是角色的资源名称。        role_arn = 'acs:ram::1901342792446414:role/stsoss'        clt = client.AcsClient(access_key_id, access_key_secret, 'cn-shenzhen')        req = AssumeRoleRequest.AssumeRoleRequest()        # 设置返回值格式为JSON。        req.set_accept_format('json')        req.set_RoleArn(role_arn)        req.set_RoleSessionName('chanjunkai')        req.set_DurationSeconds(3600)        policys = {            "Version": "1",            "Statement": [                {                    "Action": [                        "oss:PutObject",                        "oss:DeleteObject",                    ],                    "Resource": ["acs:oss:*:*:cloudvod1/*"],                    "Effect": "Allow",                    "Condition": {                        "IpAddress": {                            "acs:SourceIp": "120.237.157.184"                        }                    }                }            ]        }        req.set_Policy(Policy=json.dumps(policys))        body = clt.do_action(req)        # body = clt.do_action_with_exception(req)        # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。        token = json.loads(body)        print(token)        res={            'AccessKeyId':token['Credentials']['AccessKeyId'],            'AccessKeySecret':token['Credentials']['AccessKeySecret'],            'SecurityToken':token['Credentials']['SecurityToken'],            'Expiration':token['Credentials']['Expiration'],            'expire':'3600',            'endpoint':endpoint,            'bucket_name':bucket_name,            'arn':token['AssumedRoleUser']['Arn']        }        return JsonResponse(status=200,data=res)    def qiniutokentest(self):        # flake8: noqa        from qiniu import Auth        # 需要填写你的 Access Key 和 Secret Key        access_key = 'dwdHw1pQ9wFNiHDdflBUiZyWmiLppd5VCC2yF0O_'        secret_key = 'uTn7hdKD9Mbf2dzMWjLj2e9V1nXN7HAsOGRKwqDF'        # 构建鉴权对象        q = Auth(access_key, secret_key)        # 要上传的空间        bucket_name = 'test'        # 上传到七牛后保存的文件名        key = '/*'        # 生成上传 Token,可以指定过期时间等        # 上传策略示例        # https://developer.qiniu.com/kodo/manual/1206/put-policy        policy = {            # 'callbackUrl':'https://requestb.in/1c7q2d31',            # 'callbackBody':'filename=$(fname)&filesize=$(fsize)'            # 'persistentOps':'imageView2/1/w/200/h/200'        }        # 3600为token过期时间,秒为单位。3600等于一小时        token = q.upload_token(bucket_name, key, 3600, policy)        print(token)        return HttpResponse(content=token, status=200)    def paypaytest(self, request):        '''               :param request:               :param args:               :param kwargs:               :return:               '''        response = ResponseObject()        # return response.json(0)        paymentId = request.GET.get('paymentId', None)        PayerID = request.GET.get('PayerID', None)        if paymentId and PayerID:            paypalrestsdk.configure({                "mode": "sandbox",  # sandbox or live                "client_id": "AfnfDqezODOoWGS-W2Itu-Zl1ay1R95IsGlMqPghPA3KGhkPndNMnQT0bdEewvSv92XAFIfLiinmyhBL",                "client_secret": "EErLskwYA1xXY3890mHx5OhzgK83B2rNc57zIozGNyKc8i6RJuhPTF9WyhhdZgyDEih0heo1MH9Jk1lj"            })            # ID of the payment. This ID is provided when creating payment.            payment = paypalrestsdk.Payment.find(paymentId)            payres = payment.execute({"payer_id": PayerID})            print(payres)            if payres:                print("Payment execute successfully")            else:                print(payment.error)  # Error Hash            return response.json(0)        else:            pass        paypalrestsdk.configure({            "mode": "sandbox",  # sandbox or live            "client_id": "AfnfDqezODOoWGS-W2Itu-Zl1ay1R95IsGlMqPghPA3KGhkPndNMnQT0bdEewvSv92XAFIfLiinmyhBL",            "client_secret": "EErLskwYA1xXY3890mHx5OhzgK83B2rNc57zIozGNyKc8i6RJuhPTF9WyhhdZgyDEih0heo1MH9Jk1lj"})        payment = paypalrestsdk.Payment({            "intent": "sale",            "payer": {                "payment_method": "paypal"},            "redirect_urls": {                # "return_url": "http://192.168.136.45:3000/payment/execute",                "return_url": "http://192.168.136.40:8077/Test",                "cancel_url": "http://localhost:3000/"},            "transactions": [{                "item_list": {                    "items": [{                        "name": "item",                        "sku": "item",                        "price": "5.00",                        "currency": "USD",                        "quantity": 1}]},                "amount": {                    "total": "5.00",                    "currency": "USD"},                "description": "This is the payment transaction description."}]})        if payment.create():            print("Payment created successfully")        else:            print(payment.error)        print(payment)        for link in payment.links:            if link.rel == "approval_url":                # Convert to str to avoid Google App Engine Unicode issue                # https://github.com/paypal/rest-api-sdk-python/pull/58                approval_url = str(link.href)                print("Redirect for approval: %s" % (approval_url))                return HttpResponseRedirect(approval_url)    # 修改 资源改变    def put(self, request):        response = ResponseObject()        return response.json(0)    # 修改 属性改变    def PATCH(self, request):        response = ResponseObject()        return response.json(0)    # 删除    def delete(self, request):        response = ResponseObject()        return response.json(0)    def validation(self, request_dict, *args, **kwargs):        response = ResponseObject()        return response.json(0)
 |