示例#1
0
def get_alipay_oauth_token_response(app_id, app_private_key, alipay_public_key, auth_code=''):
    '''
    初始化一个支付宝请求client
    '''
    alipay_client_config = AlipayClientConfig()
    alipay_client_config.server_url = constants.SERVER_URL
    alipay_client_config.app_id = app_id
    alipay_client_config.app_private_key = app_private_key
    alipay_client_config.alipay_public_key = alipay_public_key
    alipay_client_config.format = 'json'
    alipay_client_config.charset = 'utf-8'
    alipay_client_config.sign_type = 'RSA2'
    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)
    model = AlipaySystemOauthTokenModel()
    request = AlipaySystemOauthTokenRequest(biz_model=model)
    request.code = auth_code
    request.grant_type = 'authorization_code'
    response_content = None
    try:
        response_content = client.execute(request)
    except AopException:
        print(traceback.format_exc())
    if not response_content:
        raise ValidationError({'app_id|app_private_key|alipay_public_key': ['all should be correct']})
    res = AlipaySystemOauthTokenResponse()
    res.parse_response_content(response_content)
    return res
示例#2
0
文件: ali.py 项目: Neo-python/library
 def _init(self):
     alipay_client_config = AlipayClientConfig()
     alipay_client_config.app_id = """config.app_id"""
     alipay_client_config.app_private_key = """config.alipay_private_key"""
     alipay_client_config.alipay_public_key = """config.alipay_public_key"""
     return DefaultAlipayClient(alipay_client_config=alipay_client_config,
                                logger=logger)
示例#3
0
    def post(self, request, *args, **kwargs):
        try:
            package_id = request.POST.get('package_id')
            order = VIPOrder.create_order(request.user, int(package_id))
            if order:
                log.info('****** order id: {} ******'.format(order.id))
                order.pay_type = VIPOrder.PAY_TYPE_BY_ALIPAY_APP
                out_trade_no = create_trade_id(order.id)
                order.outtradeno = out_trade_no
                order.save()
                result = {'order_id': order.id}

                alipay_client_config = AlipayClientConfig()
                alipay_client_config.app_id = smart_str(settings.ALIPAY_APP_INFO['basic_info']['APP_ID'])
                alipay_client_config.sign_type = smart_str(settings.ALIPAY_APP_INFO['other_info']['SIGN_TYPE'])
                with open(settings.ALIPAY_APP_INFO['basic_info']['APP_PRIVATE_KEY'], 'r') as fp:
                    alipay_client_config.app_private_key = fp.read()

                client = DefaultAlipayClient(alipay_client_config=alipay_client_config)

                model = AlipayTradeAppPayModel()
                model.total_amount = smart_str(str_to_specify_digits(str(order.price)))
                model.product_code = smart_str("QUICK_MSECURITY_PAY")
                model.body = smart_str(order.name)
                model.subject = smart_str(order.name)
                model.out_trade_no = smart_str(out_trade_no)
                model.passback_params = smart_str(settings.LMS_ROOT_URL + reverse("vip_purchase"))

                request = AlipayTradeAppPayRequest(biz_model=model)
                request.notify_url = smart_str(settings.ALIPAY_APP_INFO['other_info']['NOTIFY_URL'])
                result['alipay_request'] = client.sdk_execute(request)

                return Response(data=result)
        except Exception, e:
            log.exception(e)
示例#4
0
    def get(self, request):
        order_id = request.GET.get('order_id')
        money = request.GET.get('money')
        # 业务逻辑处理
        try:
            # 调用支付宝流程
            alipay_client_config = AlipayClientConfig()  # 创建配置对象
            alipay_client_config.server_url = settings.ALIPAY_URL  # 网关
            alipay_client_config.app_id = settings.ALIPAY_APPID  # APPID
            alipay_client_config.app_private_key = settings.APP_PRIVATE_KEY  # 应用私钥
            client = DefaultAlipayClient(
                alipay_client_config=alipay_client_config)  # 使用配置创建客户端
            model = AlipayTradePagePayModel()  # 创建网站支付模型
            model.out_trade_no = order_id  # 商户订单号码
            model.total_amount = str(1)  # 支付总额
            model.subject = '订单标题'  # 订单标题
            model.body = '订单描述'  # 订单描述
            model.product_code = 'FAST_INSTANT_TRADE_PAY'  # 与支付宝签约的产品码名称,目前只支持这一种。
            model.timeout_express = '30m'  # 订单过期关闭时长(分钟)
            pay_request = AlipayTradePagePayRequest(
                biz_model=model)  # 通过模型创建请求对象
            pay_request.notify_url = settings.ALIPAY_NOTIFY_URL  # 设置回调通知地址(POST)
            # pay_request.notify_url = None  # 设置回调通知地址(POST)
            pay_request.return_url = settings.ALIPAY_RETURN_URL  # 设置回调通知地址(GET)
            # pay_request.return_url = None  # 设置回调通知地址(GET)

            response = client.page_execute(pay_request,
                                           http_method='GET')  # 获取支付链接
            pay_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

            return HttpResponseRedirect(response)  # 重定向到支付宝支付页面
        except Exception as e:
            print(e)
            return JsonResponse({'code': 201, 'message': '支付失败,请重新支付'})
示例#5
0
    def alipay_query(cls, out_trade_no, trade_no, receipt, trade_type):
        '''alipay query'''
        try:
            config_dict = {
                VIPOrder.PAY_TYPE_BY_ALIPAY_APP: settings.ALIPAY_APP_INFO,
                VIPOrder.PAY_TYPE_BY_ALIPAY: settings.ALIPAY_APP_INFO,
            }
            config = config_dict[trade_type]
            alipay_client_config = AlipayClientConfig()
            alipay_client_config.app_id = smart_str(config['basic_info']['APP_ID'])
            alipay_client_config.sign_type = smart_str(config['other_info']['SIGN_TYPE'])
            with open(config['basic_info']['APP_PRIVATE_KEY'], 'r') as fp:
                alipay_client_config.app_private_key = fp.read()
            client = DefaultAlipayClient(alipay_client_config=alipay_client_config)

            model = AlipayTradeQueryModel()
            model.out_trade_no = smart_str(out_trade_no)
            if trade_no:
                model.trade_no = smart_str(trade_no)
            request = AlipayTradeQueryRequest(biz_model=model)

            request_params = client.sdk_execute(request)
            resp = requests.get('{}?{}'.format(SERVER_URL, request_params)).json()
            log.info('********** alipay query result ***********')
            log.info(resp)
            query_resp = resp['alipay_trade_query_response']
            return {
                'trade_status': query_resp.get('trade_status') == 'TRADE_SUCCESS',
                'total_fee': float(query_resp.get('total_amount', 0)),
                'refno': query_resp.get('trade_no', ''),
            }
        except Exception, e:
            log.exception(e)
示例#6
0
    def get_pay_url(cls, order_id, total_amount):
        # 获取内容
        with open(ALIPAY_KEY_PATH) as f:
            alipay_public_key = f.read()

        with open(APP_KEY_PRIVATE_PATH) as f:
            app_private_key = f.read()

        #  设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥;
        config = AlipayClientConfig()
        config.server_url = settings.SERVER_URL
        config.app_id = settings.APP_ID
        config.app_private_key = app_private_key
        config.alipay_public_key = alipay_public_key

        # 得到
        client = DefaultAlipayClient(alipay_client_config=config)
        model = AlipayTradePagePayModel()
        model.out_trade_no = order_id
        model.total_amount = str(total_amount)
        model.subject = "天天生鲜-%s" % order_id
        model.product_code = "FAST_INSTANT_TRADE_PAY"
        model.body = '天天生鲜'
        request = AlipayTradePagePayRequest(biz_model=model)
        # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url
        response_url = client.page_execute(request, http_method="GET")
        return response_url
示例#7
0
 def sign(logger=None):
     # 构造签名基础参数
     alipay_client_config = AlipayClientConfig(sandbox_debug=True)
     alipay_client_config.app_id = settings.ALIPAY_APPID
     alipay_client_config.app_private_key = settings.APP_PRIVATE_KEY
     alipay_client_config.alipay_public_key = settings.ALIPAY_PUBLIC_KEY
     client = DefaultAlipayClient(alipay_client_config, logger)
     return client
示例#8
0
    def post(self):

        bid = self.get_argument('bid')
        out_trade_no = self.get_argument('out_trade_no')
        payConfig = self.DefaultValues[bid]

        # 设置配置信息
        alipay_client_config = AlipayClientConfig()
        alipay_client_config.server_url = payConfig['zfbpay']['url']
        alipay_client_config.app_id = payConfig['zfbpay']['appId']
        alipay_client_config.app_private_key = payConfig['zfbpay']['app_private_key']
        alipay_client_config.alipay_public_key = payConfig['zfbpay']['alipay_public_key']

        # 客户端对象
        client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger)

        # 构造请求对象
        model = AlipayTradeQueryModel()
        model.out_trade_no = out_trade_no
        request = AlipayTradeQueryRequest(biz_model=model)
        response_content = None
        try:
            response_content = client.execute(request)
        except Exception as e:
            print('1-' + traceback.format_exc())
        if not response_content:
            print( "2-failed execute")
        else:
            response = AlipayTradeQueryResponse()
            # 解析响应结果
            response.parse_response_content(response_content)
            print(response.body)
            if response.is_success():
                # 业务成功,则通过respnse属性获取需要的值
                print("业务成功- get response trade_no:" + response.trade_no)
                info = {
                    'errCode': '0',
                    'errMsg':  '',
                    'detail': {
                        'trade_no': response.trade_no
                    }
                }
                result = {
                    'result': info
                }
                self.write(json.dumps(result, ensure_ascii=False))
            else:
                # 业务失败
                print('业务失败-' + response.code + "," + response.msg + "," + response.sub_code + "," + response.sub_msg)
                info = {
                    'errCode': response.code,
                    'errMsg':  response.sub_msg
                }
                result = {
                    'result': info
                }
                self.write(json.dumps(result, ensure_ascii=False))
示例#9
0
 def _set_config(self):
     " 设置配置项 "
     config = AlipayClientConfig()
     config.server_url = 'https://openapi.alipay.com/gateway.do'
     config.app_id = settings.ALIPAY['appid']
     config.app_private_key = settings.ALIPAY['app_private_key']
     config.alipay_public_key = settings.ALIPAY['alipay_public_key']
     config.sign_type = 'RSA2'
     self.config = config
示例#10
0
    def post(self, request):
        '''订单支付'''
        # 判断用户登录
        user = request.user
        if not user.is_authenticated:
            return JsonResponse({'res': 0, 'errmsg': '用户未登陆'})

        # 接收参数
        order_id = request.POST.get('order_id')

        # 校验参数
        if not order_id:
            return JsonResponse({'res': 1, 'errmsg': '参数不完整'})

        try:
            order = OrderInfo.objects.get(order_id=order_id,
                                          user=user,
                                          pay_method=3,
                                          order_status=1)
        except OrderInfo.DoesNotExist:
            return JsonResponse({'res': 2, 'errmsg': '无效的订单id'})

        """
        设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。
        """
        alipay_client_config = AlipayClientConfig()
        alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do'
        alipay_client_config.app_id = '2016100100641374'
        app_private_key = ''
        with open(os.path.join(settings.BASE_DIR, 'apps/order/app_private_key.pem'), 'r') as f:
            for line in f:
                app_private_key += line
        alipay_client_config.app_private_key = app_private_key
        alipay_public_key = ''
        with open(os.path.join(settings.BASE_DIR, 'apps/order/alipay_public_key.pem'), 'r') as f:
            for line in f:
                alipay_public_key += line
        alipay_client_config.alipay_public_key = alipay_public_key
        """
        得到客户端对象。
        注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。
        logger参数用于打印日志,不传则不打印,建议传递。
        """
        client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger)

        total_pay = order.transit_price + order.total_price
        total_pay = round(float(total_pay), 2)
        model = AlipayTradePagePayModel()
        model.out_trade_no = order_id
        model.total_amount = total_pay
        model.subject = "天天生鲜{0}".format(order_id)
        model.product_code = "FAST_INSTANT_TRADE_PAY"

        request = AlipayTradePagePayRequest(biz_model=model)
        response = client.page_execute(request, http_method="GET")
        # 访问支付页面
        return JsonResponse({'res': 3, 'response': response})
示例#11
0
 def get_config_client(self):
     alipay_client_config = AlipayClientConfig()
     alipay_client_config.server_url = self.env['ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_gateway')
     alipay_client_config.app_id = self.env['ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_appid')
     alipay_client_config.encrypt_key = self.env['ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_aes')
     alipay_client_config.app_private_key = self.env['ir.config_parameter'].sudo().get_param(
         'odoo_alipay.alipay_sign')
     alipay_client_config.alipay_public_key = self.env['ir.config_parameter'].sudo().get_param(
         'odoo_alipay.alipay_public_key')
     return DefaultAlipayClient(alipay_client_config=alipay_client_config)
示例#12
0
def get_alipay_client():
    alipay_client_config = AlipayClientConfig()
    alipay_client_config.server_url = GETWAY
    alipay_client_config.app_id = APPID
    alipay_client_config.app_private_key = PRIVATE_KEY
    alipay_client_config.alipay_public_key = PUBLIC_KEY
    # 使用授权码换取令牌
    alipay_client = DefaultAlipayClient(alipay_client_config)

    return alipay_client
示例#13
0
 def __init__(self):
     alipay_client_config = AlipayClientConfig(sandbox_debug=True)
     alipay_client_config.app_id = settings.APPID
     # 打开 APP_PRIVATE 证书
     with open(settings.APP_PRIVATE) as f:
         alipay_client_config.app_private_key = f.read()
     # 打开 ALIPAY_PUBLIC 证书
     with open(settings.ALIPAY_PUBLIC) as f:
         alipay_client_config.alipay_public_key = f.read()
     # 创建实例
     self.ALIPAY_client = DefaultAlipayClient(alipay_client_config, logger)
示例#14
0
    def __init__(self):
        self.appid = settings.ALIPAY_APPID
        self.server_url = settings.ALIPAY_SERVER_URL
        self.alipay_public_key = settings.ALIPAY_PUBLIC_KEY
        self.app_private_key = settings.APP_PRIVATE_KEY

        client_config = AlipayClientConfig()
        client_config.server_url = self.server_url
        client_config.app_id = self.appid
        client_config.alipay_public_key = self.alipay_public_key
        client_config.app_private_key = self.app_private_key
        self.client = DefaultAlipayClient(client_config)
示例#15
0
    def post(self):

        bid = self.get_argument('bid')
        payConfig = self.DefaultValues[bid]

        # 设置配置信息
        alipay_client_config = AlipayClientConfig()
        alipay_client_config.server_url = payConfig['zfbpay']['url']
        alipay_client_config.app_id = payConfig['zfbpay']['appId']
        alipay_client_config.app_private_key = payConfig['zfbpay']['app_private_key']
        alipay_client_config.alipay_public_key = payConfig['zfbpay']['alipay_public_key']

        # 客户端对象
        client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger)

        model = AlipayTradeWapPayModel()
        model.productCode = "QUICK_WAP_PAY"
        model.body = "Iphone6 16G"
        model.subject = "苹果手机"
        model.out_trade_no = "20180510ABoeooer014"
        model.timeout_express = "90m"
        model.total_amount = 0.5
        request = AlipayTradeWapPayRequest(biz_model=model)
        request.notify_url = 'http://wox2019.w-lans.com/alipayNotifyUrl.shtml'
        # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段
        response = client.page_execute(request, http_method="GET")
        # GET请求获取完成请求的参数
        _result = parse.parse_qs(parse.urlparse(response).query)
        #return self.write(_result)
        info = {
            'errCode': '0',
            'errMsg': '',
            'detail': {
                'app_id': _result['app_id'][0],
                'version': _result['version'][0],
                'format': _result['format'][0],
                'sign_type': _result['sign_type'][0],
                'charset': _result['charset'][0],
                'method': _result['method'][0],
                'timestamp': _result['timestamp'][0],
                'sign': _result['sign'][0],
                'out_trade_no': eval(_result['biz_content'][0])['out_trade_no'],
                'subject': eval(_result['biz_content'][0])['subject'],
                'body': eval(_result['biz_content'][0])['body'],
                'total_amount': eval(_result['biz_content'][0])['total_amount'],
                'biz_content': eval(_result['biz_content'][0]),
                'notify_url': _result['notify_url'][0],
                #'return_url': _result['return_url'][0],
            }
        }
        result = {
            'result': info
        }
示例#16
0
文件: pay.py 项目: fovegage/sumko
    def __init__(self, private_key, alipay_public_key):
        with open(private_key) as f:
            self.private_key = f.read()

        with open(alipay_public_key) as f:
            self.app_private_key = f.read()

        alipay_client_config = AlipayClientConfig(sandbox_debug=True)
        alipay_client_config.app_id = '2016101000652414'
        alipay_client_config.app_private_key = self.private_key
        alipay_client_config.alipay_public_key = self.app_private_key
        self.client = DefaultAlipayClient(
            alipay_client_config=alipay_client_config)
示例#17
0
def ali_pay():
    app_private_key = open(
        os.path.join(settings.BASE_DIR, 'keys', 'app_private_key.txt'),
        'r').read()
    alipay_public_key = open(
        os.path.join(settings.BASE_DIR, 'keys', 'alipay_public_key.txt'),
        'r').read()
    alipay_client_config = AlipayClientConfig(sandbox_debug=True)
    alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do'
    alipay_client_config.app_id = '2021000116661519'
    alipay_client_config.app_private_key = app_private_key
    alipay_client_config.alipay_public_key = alipay_public_key
    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)
    return client
示例#18
0
    def get(self, request, *args, **kwargs):
        try:
            package_id = request.GET.get('package_id')
            order = VIPOrder.create_order(request.user, int(package_id))
            if order:
                order.pay_type = VIPOrder.PAY_TYPE_BY_ALIPAY_APP
                out_trade_no = create_trade_id(order.id)
                order.outtradeno = out_trade_no
                order.save()
                result = {'order_id': order.id}

                alipay_client_config = AlipayClientConfig()
                alipay_client_config.app_id = smart_str(
                    settings.ALIPAY_APP_INFO['basic_info']['APP_ID'])
                alipay_client_config.sign_type = smart_str(
                    settings.ALIPAY_APP_INFO['other_info']['SIGN_TYPE'])
                with open(
                        settings.ALIPAY_APP_INFO['basic_info']
                    ['APP_PRIVATE_KEY'], 'r') as fp:
                    alipay_client_config.app_private_key = fp.read()

                client = DefaultAlipayClient(
                    alipay_client_config=alipay_client_config)

                model = AlipayTradeWapPayModel()
                model.total_amount = smart_str(
                    str_to_specify_digits(str(order.price)))
                model.product_code = smart_str("QUICK_WAP_WAY")
                model.subject = smart_str(_(order.name))
                model.out_trade_no = smart_str(out_trade_no)
                # 返回页面时不使用缓存
                quit_url = settings.LMS_ROOT_URL + reverse(
                    "vip_alipay_h5_result")
                model.quit_url = smart_str(quit_url)
                model.passback_params = smart_str(settings.LMS_ROOT_URL +
                                                  reverse("vip_purchase"))

                request = AlipayTradeWapPayRequest(biz_model=model)
                request.notify_url = smart_str(
                    settings.ALIPAY_APP_INFO['other_info']['NOTIFY_URL'])
                result['alipay_request'] = client.sdk_execute(request)
                log.error(SERVER_URL + "?" + result['alipay_request'])
                data = {
                    'alipay_url': SERVER_URL + "?" + result['alipay_request'],
                    'order_id': order.id
                }
                return Response(xresult(data=data))
        except Exception, e:
            log.exception(e)
示例#19
0
def aliPay():
    """实例化阿里支付配置信息表"""
    aliPayConfig = AlipayClientConfig(sandbox_debug=True)
    # 阿里提供服务的接口
    aliPayConfig.server_url = 'https://openapi.alipaydev.com/gateway.do'
    # 沙箱环境的 ID
    aliPayConfig.app_id = '2016102200740828'
    # 商户私钥
    with open('Payment\keys\AliPayPublicKey.txt') as fp:
        aliPayConfig.app_private_key = fp.read()
    # 阿里的公钥
    with open('Payment\keys\AliPayPublicKey.txt') as fp:
        aliPayConfig.alipay_public_key = fp.read()
    # 实例化一个支付对象并返回
    return DefaultAlipayClient(alipay_client_config=aliPayConfig)
示例#20
0
def alipayconfig():
    # 实例化阿里支付配置信息对象
    alipay_config = AlipayClientConfig(sandbox_debug=True)
    # 阿里提供的服务接口,这个是测试接口,真实支付接口:https://openapi.alipay.com/gateway.do
    alipay_config.server_url = "https://openapi.alipaydev.com/gateway.do"
    # 申请的沙箱环境的app_id
    alipay_config.app_id = "2016101800717513"
    # 商户的私钥
    alipay_config.app_private_key = "MIIEpAIBAAKCAQEAv1339WKBm7b6iR6Dl59AM15Z3+duCc4cG1EOyhs8DmmVmVo/AQNb/XdSjT3ocBXEwNjwNhu7HN9xHOo68+slB4ngTL9Q3K/0BbN2mbKP57JgtDJEBBWoF7PTfCMOHj70tIYFS6JQyh81G1aX7DnnAyhKqXzfhZn/UTyvNr9Y6OksHOIdteIHnJNT+QqdCXCbjViuUWFMbWw2YXEqGu5/qAyRa9W+VSveX+LqYhBtsJWQhmxPWpd72yo5jqIsQTcuwR2CinFPAnI9LKYfdYiwgBmVeaf/p6Gijgea+y+vQjkm9y7V8P2YP+Z1OQU0PkHtTWTUfskvtTX3mgpFvabABwIDAQABAoIBAQCHZNSqqKdKpItduFkiTWn+7iJoaDVSeqEoMpFkLSCwkcNmXJN3BAlxq5qck9CAfOZYCyTpI3WfV/ePnalYKmZojwRDSJjNiy/7WJ3w4IUwSORima3FtgzXuENI8QRsId7AWpIkkRLX7nyEex/B4rWvZjJs+AytWedqcqUE9xzQq+y7uj9FAbNntIGD8GPWH+Y/AAbRdpHK9vTLbQ+SQlypzZQ/03pvrychPPSRgPivP35bxOtVxAiDp9uxu2LwyLV6cSCeEPB2xlSyEYI8rYbyilWb7sFENwi+JAGV03lhpVaQcpWKmD9GgYTf3F88icchEN5iGh32v2yWyoFaQYABAoGBAPyOrOoJtdyEKRCKE9yT2iKpwc0zBVbbZfLe0P67dlCf2h2JCO2ZTctBQEYHDxQnP5HczYOZip3UXL0u1IkTlYaP4g2IaS2GZ47Z49GgfoPgS8iG9JeT178Z9a5u4ZfXsFSAnxCcSR62xOE7Dz/AzLLxBIXx/J9KFrOtMum4Sv4BAoGBAMH5w3Oh64w2wl9jvA2hNJ13bjZa+QELtEnbe3Lt8i7JxlbWY+cnaKMx3sRuJM4NLXYevJ1RfAEkZLjU/LHznkQAQdg279inBjNmgx6U/zNWY5MkJTMlrNetELBWIGz8eVFfA3V9cMEYaLb3PYNIDYAWR+3OCHTDpmb15pjFNc4HAoGBAPXNRq1hVgaQ+gaG3F3J6HvkDCLSjVfDoK2H/pBtkvFVIsusG2xj0DsJ/qwpIpvStyQXak2ymh6SGNBnS6M91EFqt+/D29na/d8iYYAcXAWtvxQjhNohodD0SxDCCf3mhk83/5gDA4dJCsTK3kSGOLPPrz9ODThau02UPAEMxLABAoGACbSEafGtBlvrB7jGvOvW5RYHpqKQmNPMFnHr0ElFd7/Ss5+Qag1Xt+qT2cIlB0YzgxhwmXJtQOVgQLsvVXv57C8THE1LXMymi8XSQ6Jyzk/BNah2UAPPjQ70qc31W16ad07IroUzMgYVnynpovrk6gazXJuVYrozRi2Bdx1O3tsCgYBHClQR6/fTjkZqD23kzlKYKi+zObZ1ijTlscjn7tQFMX0IFoFjbW5mbNBwTXGL/ujIsqdDx9NQyDOTllpb3uutpKy4zcWRGlZDWZaidZTLhbzp08A9W7N/sfJQ5cqwL/tEYVx3am+CxTgXd1tO6MsedK5Drde7MuBXN8Tr3Bof7g=="
    # 阿里的公钥
    alipay_config.alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv1339WKBm7b6iR6Dl59AM15Z3+duCc4cG1EOyhs8DmmVmVo/AQNb/XdSjT3ocBXEwNjwNhu7HN9xHOo68+slB4ngTL9Q3K/0BbN2mbKP57JgtDJEBBWoF7PTfCMOHj70tIYFS6JQyh81G1aX7DnnAyhKqXzfhZn/UTyvNr9Y6OksHOIdteIHnJNT+QqdCXCbjViuUWFMbWw2YXEqGu5/qAyRa9W+VSveX+LqYhBtsJWQhmxPWpd72yo5jqIsQTcuwR2CinFPAnI9LKYfdYiwgBmVeaf/p6Gijgea+y+vQjkm9y7V8P2YP+Z1OQU0PkHtTWTUfskvtTX3mgpFvabABwIDAQAB"

    # 实例化一个支付对象放回
    alipay_client = DefaultAlipayClient(alipay_client_config=alipay_config)
    return alipay_client
示例#21
0
文件: main.py 项目: yumusb/scan2pay
def pay(userinfo):
    """
    设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。
    """
    alipay_client_config = AlipayClientConfig()
    alipay_client_config.server_url = 'https://openapi.alipay.com/gateway.do'
    alipay_client_config.app_id = ''  # appid
    alipay_client_config.app_private_key = ''  # 用户私钥
    alipay_client_config.alipay_public_key = ''  # 支付宝公钥(填入用户私钥,返回的支付宝公钥,而不是上面用户私钥对应的公钥,如果不会配置的话可以看我另一项目中的文档 https://github.com/yumusb/alipay-f2fpay/tree/master/%E5%AF%86%E9%92%A5%E5%AF%B9%E7%94%9F%E6%88%90%E4%B8%8E%E8%AE%BE%E7%BD%AE%E6%95%99%E7%A8%8B)
    """
    得到客户端对象。
    注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。
    logger参数用于打印日志,不传则不打印,建议传递。
    """
    #client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger)
    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)
    """
    系统接口示例:alipay.trade.pay
    """
    # 对照接口文档,构造请求对象
    model = AlipayTradePayModel()
    model.auth_code = userinfo
    model.subject = "Test"  # 订单标题
    model.out_trade_no = time()  # 订单账号
    model.scene = "bar_code"
    model.total_amount = 0.01  # 订单金额
    request = AlipayTradePayRequest(biz_model=model)
    response_content = None
    try:
        response_content = client.execute(request)
    except Exception as e:
        print(traceback.format_exc())
    if not response_content:
        print("failed execute")
    else:
        response = AlipayTradePayResponse()
        # 解析响应结果
        response.parse_response_content(response_content)
        #print(response.body)
        #返回结果集,如果不能成功支付的话,建议输出以排错
        if response.is_success():
            # 如果业务成功,则通过respnse属性获取需要的值
            print("get response trade_no:" + response.trade_no)
        else:
            # 如果业务失败,则从错误码中可以得知错误情况,具体错误码信息可以查看接口文档
            print(response.code + "," + response.msg + "," +
                  response.sub_code + "," + response.sub_msg)
示例#22
0
def ali_pay():
    # 为阿里支付实例化一个配置信息对象
    alipay_config = AlipayClientConfig(sandbox_debug=True)
    # 初始化各种配置信息
    # 阿里提供服务的接口
    alipay_config.server_url = "https://openapi.alipaydev.com/gateway.do"
    # 申请的沙箱环境的app_id
    alipay_config.app_id = "2016101600702552"
    # 商户的私钥
    with open("keys/应用私钥2048.txt") as f:
        alipay_config.app_private_key = f.read()
    # 阿里的公钥
    with open("keys/应用公钥2048.txt") as f:
        alipay_config.alipay_public_key = f.read()
    # 实例化一个支付对象并返回
    alipay_client = DefaultAlipayClient(alipay_client_config=alipay_config)
    return alipay_client
示例#23
0
def get_url_request():
    app_alipay_sanbox_private_path = r'C:\Users\jerry\Desktop\app_private_key.pem'
    alipay_sanbox_public_path = r'C:\Users\jerry\Desktop\alipay_public_key.pem'

    alipay_client_config = AlipayClientConfig()
    alipay_client_config.server_url = "https://openapi.alipaydev.com/gateway.do"
    alipay_client_config.app_id = "20160923420591565"
    alipay_client_config.app_private_key = get_key(
        app_alipay_sanbox_private_path)
    alipay_client_config.alipay_public_key = get_key(alipay_sanbox_public_path)

    alipay_client_config.charset = 'utf-8'

    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)

    model = AlipayTradePagePayModel()
    model.out_trade_no = "pay201805020000227"
    model.total_amount = 50
    model.subject = "test"
    model.body = "alipaytest"
    model.product_code = "FAST_INSTANT_TRADE_PAY"

    # settle_detail_info = SettleDetailInfo()
    # settle_detail_info.amount = 50
    # settle_detail_info.trans_in_type = "userId"
    # settle_detail_info.trans_in = "2088302300165605"
    #
    # settle_detail_infos = list()
    # settle_detail_infos.append(settle_detail_info)
    #
    # settle_info = SettleInfo()
    # settle_info.settle_detail_infos = settle_detail_infos
    #
    # model.settle_info = settle_info
    #
    #
    # sub_merchant = SubMerchant()
    # sub_merchant.merchant_id = "208830234153246"
    #
    # model.sub_merchant = sub_merchant

    request = AlipayTradePagePayRequest(biz_model=model)

    response = client.page_execute(request, http_method="GET")
    return response
示例#24
0
def getAlipayUrl(request):
    #查看登录
    token = request.POST['token']

    user_token = Token.objects.filter(key=token)
    if len(user_token) == 0:
        return Response('nologin')

    #获取用户,文章信息
    user = user_token[0].user
    article_id = request.POST['article_id']
    article = Article.objects.get(id=article_id)

    #生成订单
    nowtime = datetime.datetime.now()
    new_payorder = PayOrder(belong_user=user, belong=article)
    new_payorder.order = str(nowtime.year) + str(
        random.randrange(10000000, 99999999))
    # print(new_payorder.order)
    new_payorder.price = '9.9'
    # new_payorder.save()

    alipay_client_config = AlipayClientConfig()
    alipay_client_config.server_url = settings.ALIPAY_URL
    alipay_client_config.app_id = settings.ALIPAY_APPID
    alipay_client_config.app_private_key = settings.APP_PRIVATE_KEY
    alipay_client_config.alipay_public_key = settings.ALIPAY_PUBLIC_KEY

    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)
    model = AlipayTradePagePayModel()  #创建网站支付模型
    model.out_trade_no = new_payorder.order
    model.total_amount = new_payorder.price
    model.subject = "打赏订单:" + new_payorder.order + '/' + new_payorder.price + '元'
    model.product_code = "FAST_INSTANT_TRADE_PAY"
    model.timeout_express = "5m"

    #发送请求
    pay_request = AlipayTradePagePayRequest(biz_model=model)
    # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段
    # pay_request.notify_url = settings.ALIPAY_NOTIFY_URL
    # pay_request.return_url = settings.ALIPAY_RETURN_URL
    response = client.page_execute(pay_request, http_method='GET')
    print(response)
    pay_link = response
    return Response({'pay_link': pay_link})
示例#25
0
def trans_to_account(out_biz_no, amount, alipay, name):  # TODO 待测试
    alipay_client_config = AlipayClientConfig()
    alipay_client_config.server_url = 'https://openapi.alipay.com/gateway.do'
    alipay_client_config.app_id = alipay_app_id
    alipay_client_config.app_private_key = alipay_app_private
    alipay_client_config.alipay_public_key = alipay_public_key
    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)
    alipay_model = AlipayFundTransToaccountTransferModel()
    alipay_model.out_biz_no = out_biz_no
    alipay_model.payee_type = "ALIPAY_LOGONID"
    alipay_model.amount = str(amount)
    alipay_model.payee_account = alipay
    alipay_model.payee_real_name = name
    alipay_model.remark = "猪猪惠返提现"  # TODO 修改app名字
    request = AlipayFundTransToaccountTransferRequest(biz_model=alipay_model)
    response_content = client.execute(request)
    print(response_content)
    return json.loads(response_content)
示例#26
0
    def get_pay_status(cls, order_id):
        # 获取内容
        with open(ALIPAY_KEY_PATH) as f:
            alipay_public_key = f.read()

        with open(APP_KEY_PRIVATE_PATH) as f:
            app_private_key = f.read()

        #  设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥;
        config = AlipayClientConfig()
        config.server_url = settings.SERVER_URL
        config.app_id = settings.APP_ID
        config.app_private_key = app_private_key
        config.alipay_public_key = alipay_public_key

        # 得到
        client = DefaultAlipayClient(alipay_client_config=config)
        model = AlipayTradeQueryModel()
        model.out_trade_no = order_id
        request = AlipayTradeQueryRequest(biz_model=model)
        # 得到构造的请求,获取返回内容
        import time
        i = 1
        while True:
            time.sleep(10)
            response_content = None
            try:
                response_content = client.execute(request)
            except Exception as ex:
                print(ex)
            if not response_content:
                return None
            else:
                # 解析相应结果
                response = AlipayTradeQueryResponse()
                response.parse_response_content(response_content)
                if response.is_success(
                ) and response.trade_status == 'TRADE_SUCCESS':
                    return response.trade_no
                i += 1
                if i == 30:
                    # 五分钟后还是失败
                    # 判定支付失败
                    return None
示例#27
0
def alipayclient():
    """
    设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。
    """
    alipay_client_config = AlipayClientConfig(sandbox_debug=True)
    alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do'
    alipay_client_config.app_id = '2016092700611690'
    with open("keys/private_key.txt") as f:
        alipay_client_config.app_private_key = f.read()
    # 阿里的公钥
    with open("keys/public_key.txt") as f:
        alipay_client_config.alipay_public_key = f.read()
    """
    得到客户端对象。
    注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。
    logger参数用于打印日志,不传则不打印,建议传递。
    """
    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)
    return client
示例#28
0
def do_pay_goods(request):
    user_id = request.session.get('id')
    id = request.POST.get('id')
    name = request.POST.get('name')
    phone = request.POST.get('phone')
    address = request.POST.get('address')
    t = str(time.time()).split('.')
    order = t[0] + t[1]
    goods = Goods.objects.filter(id=id, is_activate=0)
    if not goods.exists():
        return HttpResponse('该商品已被购买。')
    goods = goods[0]
    goods.is_activate = 1
    goods.save()
    o = Orders(order=order,
               address=address,
               phone=phone,
               name=name,
               goods_id=id,
               user_id=user_id)
    o.save()
    money = goods.price
    alipay_client_config = AlipayClientConfig()
    alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do'
    alipay_client_config.app_id = '2016092100561600'
    alipay_client_config.app_private_key = 'MIIEpQIBAAKCAQEAxr2mbz2s8RigfJPxqYFht3hjtbEY9k/7C5BNvATGJRXSpI+9XmSCHG58OnYoZvYLgQoSLKRrE/z7ZeDL8gCVRuLWmEUHRYGEeBQ3IraaHqfHewP39yyoZ3M0Z9gIoK+yRIsgMcK4vdYwQGaw+MRypIEmqIC+AUeWOStYVDzK/TtcJPq8NZN+Gc2hzm94NE4F1fE+OFXVDPmoKJyljRsD2NYRz2iV6nuvRZ4inU31lpy6wNWwgqAZi6tIKMr1ElOFWH59ReCtkTyY0N2u4Z2TopiZgpCnZ3tQAoSEOslyefIH4w/I/dm2zxH3FF7bRuEp5jkueem5gfzmarGRClNp0wIDAQABAoIBABTfaDJ4tMghgQF0fEYEK6IcR8SWU/vSjJg7UJ61laXhc90Kp6XZQnz/8ZYmQLoHj0+/IgeEQSa5RCIACQtimkr2mfkmDsxy/Nmrrdq8eNVNY7r8wLc5/nnW9KMPYmCV81AVmI0BWWu+qhSpdF68Kxox4kCCPPJfdVyNu9olBGCyAtPKp2J/+lD/qCG9uxo7ltT5L4nsoR9gciLqce4B4VImHroUatDcOrDeMniRhNHkNa2YRkV4ddncAHtexAjA8yesTO1bO1D/TyLOHRnNElTBSDJbJaVzifgHM0OmcJUhgdbjJhGEUh+/atMjHLmMiZxEwoUsn4Ctcb8/NT541CECgYEA8Ao8+LIYzydlmaV4ns7GmclkfDXp3ZzVUeoQLCPGQtVeSZjiwIeB4G0bcO3d4JA0c1g5dfYJUA7YhOaOcQzMkkUnJu7oMBX2STYohX2012AdZPUz1/UWnckt5zvZoRYK0KjVQ06zLo2gWuk+dr+KVYQB1XRh777QxLhXK19V8LECgYEA0/RzoZ/+KvMTrFDEFiJep/I3avk6kohx8JUJyJQlus0cxnUdBv3rp3RkElJYCnvvtwhILWRuMovRTKxgUU7fXGIZY3HH7Zw0V3wpsOzPefNsVHCsg9kmpHqIEbabdJKAtnNIginMgEs0l5K2LKPbRK1CETRG3GwRcsoCdFV7A8MCgYEAyWB9eFLJd3jgxr7Ia8qjWL9ZOs9sLMx3Nip8eNtmaAli+bF2gfjs36AJRnt4Cf5Q0newdSL8+xoJUa2u0G7hbNDxILuLNVQnc5Io+pzUS1/KKTmAzetClwsBJJ3UXU0Fs7oAeGAc+LA+WCaXjb3xSv7dHvttclmOAYt5LdzkV3ECgYEAqkr6aH4yaPGZ+dV+ZkZBBPDAA8uwerDz0pb8IFKfKcHIf87yfn6eypDiIjJUmD/Rbp5R116chzH8/Hx2en1DSmdq/JIbTtY026Ffoc3yOIoSnJlWkixzNq1YC9tKdVOL5IslU6cfrmg+HhX7FkykTD5kGYyF7m1Ja4/QfwV6658CgYEAq/YNAIzrLkQxQeyS26bbCf7+FT6jLGmKgxyReODIOPKk7S+vaZWbyHX14AW9cDBeOfsiIQobfkIHMRJtVqe5TC49lHh08zAX610SvXSzIkpeTIMfUVKwhr0xfOqCMSEHKNG6mGbTie0AvhGCHYl2ptAWZot9ugNcgwdTu43Nyag='
    alipay_client_config.alipay_public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8OsmAJsaykPLzLIN//XnymU4s13kPE95EyOvZFq8TMPKJtsQ/f7eQB72wYAi3NarGT7RwebfJoAyeaM0KJsYNFqAodVHwpPRSemj8mwBtzEGGSyOT4Ilbv4KOz+HAsOkaLuQQ2ZGD1m7CCrgZCtxJDVqbd4xigSgMwrTFZYywoT0Sswv0oPV2TMl1tg+F7VUuvQpEvIn6qCQfzXa15eX9/P8OknvP9NSl3jOvDcpMliC2KvbfkNF9Qx9FEgtRlfnZdDItgmUj34VmBph+LUrAyV3lZjLpbFMhKlTBUeAbH72JPUKifXTXKsmbAl0n6cPaJQgb3zd+cfW7equoMhIEQIDAQAB'
    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)

    model = AlipayTradePagePayModel()
    model.out_trade_no = o.order
    model.total_amount = money
    model.subject = "小动物保护网站-" + goods.name
    model.body = goods.name
    model.product_code = "FAST_INSTANT_TRADE_PAY"
    request = AlipayTradePagePayRequest(biz_model=model)
    request.return_url = 'http://39.105.195.67:8000/return_url'
    print('request:', request)
    # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段
    response = client.page_execute(request, http_method="GET")
    print('response:', response)
    return HttpResponseRedirect(response)
示例#29
0
    def init_app(self, app):
        config = app.config['ALIPAY']
        if not hasattr(app, "extensions"):
            app.extensions = {}
        app.extensions['alipay'] = self
        alipay_client_config = AlipayClientConfig(config['DEBUG'])
        alipay_client_config.app_id = config['ALIPAY_APP_ID']
        alipay_client_config.app_private_key = open(config['ALIPAY_PRIVATE_KEY_FILE'], "r").read()
        alipay_client_config.app_public_key = open(config['ALIPAY_PUB_KEY_FILE'], "r").read()

        self.alipay_client_config = alipay_client_config
        self.model = AlipayTradePagePayModel()
        self.model.product_code = "FAST_INSTANT_TRADE_PAY"
        self.return_url = config['ALIPAY_RETURN_URL']
        self.notify_url = config['ALIPAY_NOTIFY_URL']
        self.logger = self.get_logger(config['LOG_PATH'])
        self.logger.debug(self.notify_url)
        self.logger.debug(self.return_url)

        self.client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=self.logger)
示例#30
0
 def alipay_get_auth_code(self, redirect=None, **kw):
     """
     支付宝登录回调方法
     """
     auth_code = request.params['auth_code']
     logging.info('>>>auth_code:{}'.format(auth_code))
     # 用得到的auth_code换取access_token及用户userId
     alipay_client_config = AlipayClientConfig()
     alipay_client_config.server_url = request.env[
         'ir.config_parameter'].sudo().get_param(
             'odoo_alipay.alipay_gateway')
     alipay_client_config.app_id = request.env['ir.config_parameter'].sudo(
     ).get_param('odoo_alipay.alipay_appid')
     alipay_client_config.encrypt_key = request.env[
         'ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_aes')
     alipay_client_config.app_private_key = request.env[
         'ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_sign')
     alipay_client_config.alipay_public_key = request.env[
         'ir.config_parameter'].sudo().get_param(
             'odoo_alipay.alipay_public_key')
     self.get_access_token_and_userid(alipay_client_config, auth_code)