def alipayCallbackForVip(self, request): try: if request.method == "POST": with transaction.atomic(): AlipayBase().callback_vip(request.data) return HttpResponse('success') else: with transaction.atomic(): AlipayBase().callback_vip(request.query_params) return HttpResponse('success') except Exception: return HttpResponse('error!')
def QzCanlceHandler(self, request): """ 系统强制退款 :param request: :return: """ orderid = request.data_format.get("orderid", None) try: order = Order.objects.select_for_update().get(orderid=orderid) if order.status != '1': raise PubErrorCustom("只允许强制取消已付款待发货状态的订单!") order.before_status = '2' order.refundmsg = "因为系统原因,订单提交失败,钱款将原路退回支付账户,请注意查收!" order.status = '4' order.save() try: user = Users.objects.select_for_update().get( userid=order.userid) except Users.DoesNotExist: raise PubErrorCustom("用户{}有误!".format(user.mobile)) user.jf += order.use_jf user.jf -= order.get_jf user.save() AlipayBase().refund(order=order, orderid=order.orderid, refund_amount=order.amount) except Order.DoesNotExist: raise PubErrorCustom("订单异常!") return None
def RefundConfirmHandler(self, request): """ 退款确认 :param request: :return: """ orderid = request.data_format.get("orderid", None) try: order = Order.objects.select_for_update().get(orderid=orderid) if order.before_status != '1': raise PubErrorCustom("只允许通过已申请退款的订单!") order.before_status = '2' order.status = '4' order.save() try: user = Users.objects.select_for_update().get( userid=order.userid) except Users.DoesNotExist: raise PubErrorCustom("用户{}有误!".format(user.mobile)) user.jf += order.use_jf user.jf -= order.get_jf user.save() AlipayBase().refund(order=order, orderid=order.orderid, refund_amount=order.amount) except Order.DoesNotExist: raise PubErrorCustom("订单异常!") return None
def PayHandler(self, request): payType = request.data_format.get("payType", None) orderid = request.data_format.get("orderid", None) if not payType: raise PubErrorCustom("支付方式有误!") try: order = Order.objects.select_for_update().get(orderid=orderid) except Order.DoesNotExist: raise PubErrorCustom("订单异常!") if not len(json.loads(order.address)): raise PubErrorCustom("请返回订单页填写收货地址!") OrderBase(order=order).checkvoidForcreateOrder(flag='city') try: user = Users.objects.select_for_update().get(userid=order.userid) except Users.DoesNotExist: raise PubErrorCustom("用户不存在!") if order.use_jf > user.jf: raise PubErrorCustom("积分不够!") order.paytype = str(payType) order.save() if payType == 2: return {"data": AlipayBase().create(order.orderid, order.amount)} else: raise PubErrorCustom("支付方式有误!")
def PayHandler(self, request): payType = request.data_format.get("payType",None) orderid = request.data_format.get("orderid",None) if not payType: raise PubErrorCustom("支付方式有误!") try: order = Order.objects.select_for_update().get(orderid=orderid) except Order.DoesNotExist: raise PubErrorCustom("订单异常!") try: user = Users.objects.select_for_update().get(userid=order.userid) except Users.DoesNotExist: raise PubErrorCustom("用户不存在!") if order.use_jf > user.jf: raise PubErrorCustom("积分不够!") order.paytype = str(payType) order.save() if payType == 2: return {"data":AlipayBase().create(order.orderid,order.amount)} else: raise PubErrorCustom("支付方式有误!")
def PayHandlerVip(self, request): payType = request.data_format.get("payType", None) ruleid = request.data_format.get("ruleid", None) try: viprule = VipRule.objects.get(id=ruleid) except VipRule.DoesNotExist: raise PubErrorCustom("规则不存在!!") if not payType: raise PubErrorCustom("支付方式有误!") order = OrderVip.objects.create(**{ "userid":request.user['userid'], "amount":viprule.amount, "term":viprule.term, "unit":viprule.unit, "paytype":payType }) subject="" if order.unit == '0': subject = "{}周会员充值".format(order.term) elif order.unit == '1': subject = "{}月会员充值".format(order.term) elif order.unit == '2': subject = "{}年会员充值".format(order.term) else: subject = "会员充值" if payType == 2: return {"data": AlipayBase(isVip=True).create(order.orderid, order.amount,subject=subject)} else: raise PubErrorCustom("支付方式有误!")
import os import sys import django pathname = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, pathname) sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # print() os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") django.setup() from app.order.utils import AlipayBase from app.order.models import Order from django.db import transaction if __name__ == '__main__': for item in Order.objects.filter(status__in=['1', '2', '3']): with transaction.atomic(): order = Order.objects.select_for_update().get(orderid=item.orderid) response = AlipayBase().query(orderid=order.orderid) if response['code'] == '10000' and response[ 'trade_status'] == 'TRADE_SUCCESS': pass else: print(response)