コード例 #1
0
ファイル: api.py プロジェクト: tlshop/shop_server
 def txPayCallback(self, request):
     try:
         with transaction.atomic():
             wechatPay().callback(request)
         return HttpResponse("""<xml><return_code><![CDATA[SUCCESS]]></return_code>
                             <return_msg><![CDATA[OK]]></return_msg></xml>""",
                         content_type='text/xml', status=200)
     except Exception:
         return HttpResponse("""<xml><return_code><![CDATA[FAIL]]></return_code>                          
                                 <return_msg><![CDATA[Signature_Error]]></return_msg></xml>""",
                                      content_type = 'text/xml', status = 200)
コード例 #2
0
    def openVip(self, request):
        """
        开通会员
        :param request:
        :return:
        """
        print(request.data_format)
        try:
            user = Users.objects.get(userid=request.user.get("userid"))
        except Users.DoesNotExist:
            raise PubErrorCustom("用户不存在!")

        order = Order.objects.create(**{
            "userid": user.userid,
            "amount": 198,
            "payamount": 198
        })

        data = wechatPay().request({
            "out_trade_no":
            order.orderid,
            "total_fee":
            int(order.amount * 100),
            "spbill_create_ip":
            request.META.get("HTTP_X_REAL_IP"),
            "openid":
            user.uuid
        })

        return {"data": data}
コード例 #3
0
    def txPayOrderQuery(self, request):

        return wechatPay().orderQuery(request.data_format['orderid'])
コード例 #4
0
ファイル: api.py プロジェクト: xpygl/server
    def OrderPaysByOrder(self, request):

        if not request.data_format.get('orderid', None):
            raise PubErrorCustom("订单号为空!")

        try:
            user = Users.objects.select_for_update().get(
                userid=request.user.get("userid"))
        except Users.DoesNotExist:
            raise PubErrorCustom("用户不存在!")

        try:
            order = Order.objects.select_for_update().get(
                orderid=request.data_format.get('orderid', None))
            order.address = json.dumps(request.data_format.get('address', {}))
            order.memo = request.data_format.get("memo", "")
            if order.status == '1':
                raise PubErrorCustom("此订单已付款!")
        except Order.DoesNotExist:
            raise PubErrorCustom("订单异常!")

        for item in OrderGoodsLink.objects.filter(linkid__in=json.loads(
                order.linkid)['linkids']).order_by("-updtime"):
            #是虚拟商品
            if item.virtual == '0':
                cards = Cardvirtual.objects.filter(
                    gdid=item.gdid, status='1').order_by('createtime')
                if cards.exists():
                    if len(cards) < item.gdnum:
                        raise PubErrorCustom("暂无存货!")

                    virtualids = json.loads(item.virtualids)
                    count = 0
                    for card in cards:
                        count += 1
                        virtualids['ids'].append({
                            "id": card.id,
                            "account": card.account,
                            "password": card.account
                        })
                        card.status = '0'
                        card.useuserid = user.userid
                        card.save()
                        if count == item.gdnum:
                            break
                    item.virtualids = json.dumps(virtualids)
                    item.save()
                else:
                    raise PubErrorCustom("暂无存货!")

        amount = Decimal(str(order.amount))

        order.balamount = 0.0
        order.payamount = 0.0

        if request.data_format.get('usebal'):
            if user.bal >= amount:
                tmp = user.bal
                user.bal -= amount
                order.balamount = amount
                order.status = '1'
                if order.isvirtual == '0':
                    order.fhstatus = '0'
                updBalList(user, order, order.amount, tmp, user.bal, "余额支付")
                user.save()
                order.save()
                return {"data": {"usebalall": True}}
            else:
                print(user.bal, amount)
                amount -= user.bal
                print(amount)
                order.balamount = user.bal
                order.payamount = amount
                order.save()
        else:
            order.payamount = amount
            order.save()
        print(amount)
        #request.META.get("HTTP_X_REAL_IP"),
        data = wechatPay().request({
            "out_trade_no":
            order.orderid,
            "total_fee":
            int(amount * 100),
            "spbill_create_ip":
            request.META.get("HTTP_X_REAL_IP"),
            "openid":
            user.uuid
        })

        return {"data": data}