Exemple #1
0
 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!')
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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("支付方式有误!")
Exemple #5
0
    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("支付方式有误!")
Exemple #6
0
    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("支付方式有误!")
Exemple #7
0
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)