def sign ( request ): if request.method == 'POST': try: dataFromClientEncoded = request.body.decode("utf-8") data = json.loads(dataFromClientEncoded) except Exception as e: return HttpResponse(type(e)) tn = data['tn'] subject = data['subject'] body = data['body'] total_fee = data['total_fee'] userid = data['userid'] score=total_fee time=datetime.datetime.now().strftime("%Y-%m-%d %H:%I:%S") status=1 #充值进行中 print(userid) consumption=Consumption(orderid=tn,userid=userid,total=total_fee,score=score,time=time,status=1) consumption.save() sign = build_mysign(tn, subject, body, total_fee) dataToClientDecoded = { "sign":sign, "sign_type":settings.ALIPAY_SIGN_TYPE, } dataToClientEncoded = json.dumps(dataToClientDecoded) return HttpResponse(dataToClientEncoded )
def notify_verify(request): if request.method == 'POST': try: dataFromClientEncoded = request.body.decode("utf-8") data = json.loads(dataFromClientEncoded) except Exception as e: return HttpResponse(type(e)) tn = data['tn'] subject = data['subject'] body = data['body'] total_fee = data['total_fee'] mysign = build_mysign(tn, subject, body, total_fee) if mysign != request.POST.get('sign'): return HttpResponse ("fail") params = {} params['partner'] = settings.ALIPAY_PARTNER params['notify_id'] = data['notify_id'] gateway = 'https://mapi.alipay.com/gateway.do?service=notify_verify&' verify_result = urlopen(gateway, urlencode(params)).read() if verify_result.lower().strip() != 'true': return HttpResponse ("fail") trade_status = data['trade_status'] if trade_status == 'TRADE_FINISHED': consumptions=Consumption.objects.filter(orderid=tn) if consumptions.exits(): consumption=consumptions[0] userid=consumption.userid score=consumption.score consumption.status=2 consumption.save() userinfos=User_info.objects.filter(userid=userid) if userinfos.exists(): userinfo=userinfos[0] userinfo.score+=score userinfo.save() else: userinfo=User_info.objects.filter(userid=userid,score=score) userinfo.save() return HttpResponse("success") else: consumptions=Consumption.objects.filter(orderid=tn) if consumptions.exists(): consumption=consumptions[0] consumption.status=0 consumption.save() return HttpResponse("success") else: return HttpResponse("fail")