Ejemplo n.º 1
0
 def pay_query(cls, user, info_code):
     '''支付结果查询'''
     paid = False
     if PayRecord.objects.filter(info_code=info_code).first() is not None:
         # 已经为该用户充值过了
         return True
     res = alipay.api_alipay_trade_query(out_trade_no=info_code)
     if res.get("trade_status", "") == "TRADE_SUCCESS":
         paid = True
         amount = Decimal(res.get("total_amount"))
         with transaction.atomic():
             # 生成对于数量的充值码
             code = MoneyCode.objects.create(number=amount)
             # 充值操作
             user.balance += code.number
             user.save()
             code.user = user.username
             code.isused = True
             code.save()
             # 将充值记录和捐赠绑定
             Donate.objects.create(user=user, money=amount)
             PayRecord.objects.create(username=user,
                                      info_code=info_code,
                                      amount=amount,
                                      money_code=code)
     return paid
Ejemplo n.º 2
0
def pay_query(request):
    '''
    当面付结果查询逻辑
    rtype:
        json
    '''
    context = {}
    user = request.user
    trade_num = request.session['out_trade_no']
    paid = False
    # 等待1秒后再查询支付结果
    time.sleep(1)
    res = alipay.api_alipay_trade_query(out_trade_no=trade_num)
    if res.get("trade_status", "") == "TRADE_SUCCESS":
        paid = True
        amount = Decimal(res.get("total_amount", 0))
        # 生成对于数量的充值码
        code = MoneyCode.objects.create(number=amount)
        # 充值操作
        user.balance += code.number
        user.save()
        code.user = user.username
        code.isused = True
        code.save()
        # 将充值记录和捐赠绑定
        Donate.objects.create(user=user, money=amount)
        # 后台数据库增加记录
        PayRecord.objects.create(username=user,
                                 info_code=trade_num,
                                 amount=amount,
                                 money_code=code)
        del request.session['out_trade_no']
        # 返回充值信息
        info = {
            'title': '充值成功!',
            'subtitle': '请去商品界面购买商品!',
            'status': 'success',
        }
        context['info'] = info

    # 如果三次还没成功择关闭订单
    if paid is False:
        alipay.api_alipay_trade_cancel(out_trade_no=trade_num)
        info = {
            'title': '支付查询失败!',
            'subtitle': '亲,确认支付了么?',
            'status': 'error',
        }
        context['info'] = info
    return JsonResponse(context)
Ejemplo n.º 3
0
 def pay_query(cls, user, info_code):
     '''支付结果查询'''
     paid = False
     if PayRecord.objects.filter(info_code=info_code).first() is not None:
         # 已经为该用户充值过了
         return True
     res = alipay.api_alipay_trade_query(out_trade_no=info_code)
     if res.get("trade_status", "") == "TRADE_SUCCESS":
         paid = True
         amount = Decimal(res.get("total_amount"))
         with transaction.atomic():
             # 生成对于数量的充值码
             code = MoneyCode.objects.create(number=amount)
             # 充值操作
             user.balance += code.number
             user.save()
             code.user = user.username
             code.isused = True
             code.save()
             # 将充值记录和捐赠绑定
             Donate.objects.create(user=user, money=amount)
             PayRecord.objects.create(username=user, info_code=info_code,
                                      amount=amount, money_code=code)
     return paid