Exemplo n.º 1
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': '支付失败,请重新支付'})
Exemplo n.º 2
0
    def post(self, request):
        # 获得支付宝客户端
        client = AlipayView.sign()
        # 构造请求参数
        model = AlipayTradePagePayModel()
        model.out_trade_no = order_id
        model.total_amount = str(order.total_price)
        model.subject = "天天生鲜订单支付"
        model.timeout_express = str(settings.ALIPAY_TIMEOUT_MINUTE) + 'm'

        pay_request = AlipayTradePagePayRequest(biz_model=model)
        url = 'http://121.40.139.86:8000' + reverse('order:alipay_result')
        pay_request.notify_url = url  # 支付后回调地址
        pay_url = client.page_execute(pay_request, http_method='GET')  # 获取支付链接
        return JsonResponse({'res': 0, 'msg': '正在支付中...', 'url': pay_url})
Exemplo n.º 3
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})