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 = Donate.objects.create(user=user, money=amount) # 后台数据库增加记录 record = AlipayRecord.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 result = json.dumps(context, ensure_ascii=False) return HttpResponse(result, content_type='application/json')
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 = Donate.objects.create(user=user, money=amount) # 后台数据库增加记录 record = 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 result = json.dumps(context, ensure_ascii=False) return HttpResponse(result, content_type='application/json')
def pay_request(request): ''' 当面付请求逻辑 ''' num = int(request.POST.get('num', '')) context = {} if num < 1: info = { 'title': '失败', 'subtitle': '请保证金额大于1元', 'status': 'error', } context['info'] = info else: out_trade_no = datetime.datetime.fromtimestamp( time.time()).strftime('%Y%m%d%H%M%S%s') try: # 获取金额数量 amount = num # 生成订单 trade = alipay.api_alipay_trade_precreate( subject=settings.ALIPAY_TRADE_INFO.format(amount), out_trade_no=out_trade_no, total_amount=amount, timeout_express='60s', ) # 获取二维码链接 code_url = trade.get('qr_code', '') request.session['code_url'] = code_url request.session['out_trade_no'] = out_trade_no request.session['amount'] = amount info = { 'title': '请求成功!', 'subtitle': '支付宝扫描下方二维码付款,付款完成记得按确认哟!', 'status': 'success', } context['info'] = info except: alipay.api_alipay_trade_cancel(out_trade_no=out_trade_no) info = { 'title': '糟糕,当面付插件可能出现问题了', 'subtitle': '如果一直失败,请后台联系站长', 'status': 'error', } context['info'] = info return JsonResponse(context)
def pay_request(request): ''' 当面付请求逻辑 ''' num = int(request.POST.get('num', '')) context = {} if num < 1: info = { 'title': '失败', 'subtitle': '请保证金额大于1元', 'status': 'error', } context['info'] = info else: out_trade_no = datetime.datetime.fromtimestamp( time.time()).strftime('%Y%m%d%H%M%S%s') try: # 获取金额数量 amount = num # 生成订单 trade = alipay.api_alipay_trade_precreate( subject=settings.ALIPAY_TRADE_INFO.format(amount), out_trade_no=out_trade_no, total_amount=amount, timeout_express='60s',) # 获取二维码链接 code_url = trade.get('qr_code', '') request.session['code_url'] = code_url request.session['out_trade_no'] = out_trade_no request.session['amount'] = amount info = { 'title': '请求成功!', 'subtitle': '支付宝扫描下方二维码付款,付款完成记得按确认哟!', 'status': 'success', } context['info'] = info except: res = alipay.api_alipay_trade_cancel( out_trade_no=out_trade_no) info = { 'title': '糟糕,当面付插件可能出现问题了', 'subtitle': '如果一直失败,请后台联系站长', 'status': 'error', } context['info'] = info result = json.dumps(context, ensure_ascii=False) return HttpResponse(result, content_type='application/json')
def pay_request(request): ''' 当面付请求逻辑 ''' num = int(request.POST.get('num', '')) context = {} if num < 1: info = { 'title': '失败', 'subtitle': '请保证金额大于1元', 'status': 'error', } context['info'] = info else: out_trade_no = datetime.datetime.fromtimestamp( time.time()).strftime('%Y%m%d%H%M%S%s') try: # 获取金额数量 amount = num # 生成订单 trade = alipay.api_alipay_trade_precreate( subject=settings.ALIPAY_TRADE_INFO.format(amount), out_trade_no=out_trade_no, total_amount=amount, timeout_express='60s',) # 获取二维码链接 code_url = trade.get('qr_code', '') request.session['code_url'] = code_url request.session['out_trade_no'] = out_trade_no request.session['amount'] = amount info = { 'title': '提示', 'subtitle': '付款完成后请务必按 [确认] 键', 'status': 'success', } context['info'] = info except: res = alipay.api_alipay_trade_cancel( out_trade_no=out_trade_no) info = { 'title': '糟糕,可能出现问题了', 'subtitle': '如果一直失败,请后台联系站长', 'status': 'error', } context['info'] = info result = json.dumps(context, ensure_ascii=False) return HttpResponse(result, content_type='application/json')