Exemple #1
0
 def doLinkYunUnionConfirm(cls, rpath):
     rparam = PayHelper.getArgsDict()
     TyContext.ftlog.info(cls.__name__, 'doLinkYunUnionConfirm->args=',
                          rparam)
     try:
         mobileId = rparam['mobile']
         serviceid = rparam['serviceid']
         orderId = rparam['orderid']
         orderPlatformId = str(rparam['orderid'])[2:]
         sign = rparam['sign']
         # 效验sign=mobile#serviceid#orderid#密钥
         isOk = PayHelper.verify_md5(sign, mobileId, '#', serviceid, '#',
                                     orderId, '#', cls.sign_skey)
         if isOk:
             orderPlatformId = ShortOrderIdMap.get_long_order_id(
                 orderPlatformId)
             TyContext.RunMode.get_server_link(orderPlatformId)
             order_state = TyContext.RedisPayData.execute(
                 'HGET', 'sdk.charge:' + str(orderPlatformId), 'state')
             if order_state is not None and int(
                     order_state) >= PayConst.CHARGE_STATE_BEGIN and int(
                         order_state) < PayConst.CHARGE_STATE_DONE:
                 return '0'
     except:
         TyContext.ftlog.exception()
     TyContext.ftlog.info(cls.__name__,
                          'doLinkYunUnionConfirm->ERROR, rparam=', rparam)
     return '1'
Exemple #2
0
 def doLinkYunConfirm(cls, rpath):
     rparam = PayHelper.getArgsDict()
     TyContext.ftlog.info('doLinkYunConfirm->args=', rparam)
     try:
         orderId = rparam['orderId']
         mobileId = rparam['mobileId']
         price = rparam['price']
         goodsInf = rparam['goodsInf']
         sign = rparam['sign']
         # 效验sign
         isOk = PayHelper.verify_md5(sign, orderId, mobileId, price, goodsInf, cls.sign_skey)
         if isOk:
             orderPlatformId = str(goodsInf)[2:]
             orderPlatformId = ShortOrderIdMap.get_long_order_id(orderPlatformId)
             TyContext.RunMode.get_server_link(orderPlatformId)
             order_state = TyContext.RedisPayData.execute('HGET', 'sdk.charge:' + str(orderPlatformId), 'state')
             if order_state != None and int(order_state) >= PayConst.CHARGE_STATE_BEGIN and int(
                     order_state) < PayConst.CHARGE_STATE_DONE:
                 return 'Y'
             return 'N'
         else:
             TyContext.ftlog.error('doLinkYunConfirm->ERROR, sign error !! ')
             return 'N'
     except:
         TyContext.ftlog.exception()
         TyContext.ftlog.error('doLinkYunConfirm->ERROR, exception error !! ', rparam)
         return 'N'
Exemple #3
0
    def doCardCallback(cls, rpath):
        rparam = PayHelper.getArgsDict()
        TyContext.ftlog.info('cls.doCardCallback->rparam=', rparam)

        version = rparam['version']
        merId = rparam['merId']
        payMoney = rparam['payMoney']
        orderId = rparam['orderId']
        payResult = rparam['payResult']
        privateField = rparam['privateField']
        payDetails = rparam['payDetails']
        md5String = rparam['md5String']
        # signString = rparam['signString']

        if merId != cls.szf_merId:
            TyContext.ftlog.error('cls.doCardCallback-> its not my merId ! merId=', merId, 'my=', cls.szf_merId)
            return 'error'

        cardMoney = rparam.get('cardMoney')
        if cardMoney:
            combineString = version + "|" + merId + "|" + payMoney + "|" + cardMoney + "|" + orderId + "|" + payResult + "|" + privateField + "|" + payDetails + "|" + cls.szf_privateKey
        else:
            combineString = version + merId + payMoney + orderId + payResult + privateField + payDetails + cls.szf_privateKey

        isOk = PayHelper.verify_md5(md5String, combineString)
        if not isOk:
            TyContext.ftlog.error('cls.doCardCallback-> md5 error ! md5String=', md5String, 'combineString=',
                                  combineString)
            return 'error'

        platformOrderId = privateField
        rparam['chargeType'] = 'shenzhoufu.card'

        if payResult != '1':
            # 长连接通知,客户端支付失败
            TyContext.ftlog.error('cls.doCardCallback error, charge return error !!!')
            errcode = 0
            if 'errcode' in rparam:
                errcode = int(rparam['errcode'])
            errorInfo = ''
            if errcode in cls.szf_call_back_code:
                errorInfo = cls.szf_call_back_code[errcode]
            else:
                errorInfo = '神州付-未知错误'
            errorInfo = errorInfo.decode('utf-8')
            PayHelper.callback_error(platformOrderId, errorInfo, rparam)
            return orderId

        total_fee = float(payMoney) / 100
        isOK = PayHelper.callback_ok(platformOrderId, total_fee, rparam)
        if isOK:
            return orderId
        else:
            return 'error'
Exemple #4
0
    def doAliCallback(self, rpath):
        rparam = PayHelper.getArgsDict()
        TyContext.ftlog.info('doAliCallback->args=', rparam)

        sign = rparam['sign']
        notify_data = rparam['notify_data']
        mock = rparam.get('mock', '')
        # 签名校验
        if not rsaVerify('notify_data=' + notify_data, sign, mock=mock):
            TyContext.ftlog.error(
                'TuyouPayTuyou.doAliCallback rsa verify error !!')
            return 'error'

        xmlroot = ElementTree.fromstring(notify_data)
        trade_status = xmlroot.find('trade_status').text
        total_fee = float(xmlroot.find('total_fee').text)
        subject = xmlroot.find('subject').text
        out_trade_no = xmlroot.find('out_trade_no').text
        trade_no = xmlroot.find('trade_no').text
        nodeTime = xmlroot.find('notify_reg_time')
        if not nodeTime:
            nodeTime = xmlroot.find('gmt_create')
        if nodeTime:
            notify_reg_time = nodeTime.text
        else:
            notify_reg_time = 'not know'

        platformOrderId = out_trade_no
        notifys = {
            'status': trade_status,
            'total_fee': total_fee,
            'subject': subject,
            'out_trade_no': out_trade_no,
            'notify_reg_time': notify_reg_time,
            'trade_no': trade_no,
            'sign': sign,
            'notify_data': notify_data,
            'chargeType': 'tuyou.ali',
            'third_orderid': trade_no
        }

        if trade_status == 'TRADE_CLOSED':
            PayHelper.callback_error(platformOrderId, 'TRADE_CLOSED', notifys)
            return 'success'

        if trade_status != 'TRADE_FINISHED':
            return 'success'

        isOK = PayHelper.callback_ok(platformOrderId, total_fee, notifys)
        if isOK:
            return 'success'
        else:
            return 'error'
Exemple #5
0
    def callback(cls, rpath):
        try:
            rparam = PayHelper.getArgsDict()
            TyContext.ftlog.info(cls.__name__, 'callback->rparam=', rparam)

            orderPlatformId = rparam['mer_trade_code']
            if orderPlatformId.find('-') > 0:
                orderPlatformId = orderPlatformId[0:orderPlatformId.find('-')]

            mer_code = rparam['mer_code']
            bank_pay_flag = rparam['bank_pay_flag']
            sign = rparam['sign']
            total_fee = rparam.get('pay_amount', rparam.get('rec_amount', -1))
            try:
                total_fee = float(total_fee)
            except:
                TyContext.ftlog.error(cls.__name__,
                                      'callback fee error. total_fee',
                                      total_fee)
                total_fee = -1

            del rparam['sign']

            vSign = cls.__build_my_sign__(rparam)
            if sign != vSign:
                raise Exception('sign not equal')

            rparam['sign'] = sign

            if mer_code != cls.merchant_code:
                raise Exception('mer_code is not me !!!')

            rparam['third_orderid'] = rparam['gateway_trade_code']
            if bank_pay_flag == 'success':
                chargeType = cls.bank_code2charge_type_dict.get(
                    rparam.get('bank_code', ''), None)
                if chargeType:
                    rparam['chargeType'] = chargeType

                isOk = PayHelper.callback_ok(orderPlatformId, total_fee,
                                             rparam)
            else:
                bank_pay_flag = bank_pay_flag.decode('utf-8')
                isOk = PayHelper.callback_error(orderPlatformId, bank_pay_flag,
                                                rparam)
            if isOk:
                return 'success'
        except:
            TyContext.ftlog.exception()

        return 'error'
Exemple #6
0
    def doAliCallback(self, rpath):
        rparam = PayHelper.getArgsDict()
        TyContext.ftlog.info('doAliCallbackNew->args=', rparam)

        sign = rparam['sign']
        notify_data = self.createLinkString(rparam)
        # TyContext.ftlog.info('doAliCallbackNew->notify_data=', notify_data)
        # TyContext.ftlog.info('doAliCallbackNew->sign=', sign)
        # 签名校验
        if not rsaVerify(notify_data, sign, 'shediao'):
            TyContext.ftlog.error(
                'TuyouPayTuyou.doAliCallback rsa verify error !!')
            return 'error'

        trade_status = rparam['trade_status']
        total_fee = rparam['total_fee']
        subject = rparam['subject']
        out_trade_no = rparam['out_trade_no']
        trade_no = rparam['trade_no']

        platformOrderId = out_trade_no
        notifys = {
            'status': trade_status,
            'total_fee': total_fee,
            'subject': subject,
            'out_trade_no': out_trade_no,
            'trade_no': trade_no,
            'sign': sign,
            'notify_data': notify_data,
            'chargeType': 'shediao.ali',
            'third_orderid': trade_no
        }

        if trade_status == 'TRADE_CLOSED':
            PayHelper.callback_error(platformOrderId, 'TRADE_CLOSED', notifys)
            return 'success'

        if trade_status != 'TRADE_FINISHED':
            return 'success'

        isOK = PayHelper.callback_ok(platformOrderId, total_fee, notifys)
        if isOK:
            return 'success'
        else:
            return 'error'
Exemple #7
0
    def doLinkYunUnionCallback(cls, rpath):
        rparam = PayHelper.getArgsDict()
        TyContext.ftlog.info(cls.__name__, 'doLinkYunUnionCallback->args=',
                             rparam)
        try:
            mobileId = rparam['mobile']
            serviceid = rparam['serviceid']
            orderPlatformId = str(rparam['orderid'])[2:]
            msgcontent = rparam['msgcontent']
            sign = rparam['sign']

            # 效验sign
            isOk = PayHelper.verify_md5(sign, mobileId, '#', serviceid, '#',
                                        msgcontent, '#', cls.sign_skey)
            if isOk:
                # 对凌云充值的订单,把手机号补充到订单信息里
                orderPlatformId = ShortOrderIdMap.get_long_order_id(
                    orderPlatformId)
                TyContext.RunMode.get_server_link(orderPlatformId)
                PayHelper.set_order_mobile(orderPlatformId, mobileId)
                operator = PayHelper.get_mobile_operator(mobileId)
                if operator == 'chinaunicom':
                    rparam['chargeType'] = 'linkyununion'
                elif operator == 'chinatelecom':
                    rparam['chargeType'] = 'linkyundx'
                else:
                    TyContext.ftlog.error(
                        cls.__name__,
                        'doLinkYunUnionCallback->ERROR get_mobile_operator for',
                        mobileId)
                if msgcontent == '0:0':
                    PayHelper.callback_ok(orderPlatformId, -1, rparam)
                    return '0'
                else:
                    PayHelper.callback_error(orderPlatformId, '', rparam)
        except:
            TyContext.ftlog.exception()
        TyContext.ftlog.info(cls.__name__,
                             'doLinkYunUnionCallback->ERROR, rparam=', rparam)
        return '0'
Exemple #8
0
    def callback(cls, rpath):
        success = 0
        try:
            rparam = PayHelper.getArgsDict()
            TyContext.ftlog.info(cls.__name__, 'callback rparam=', rparam)

            platformOrderId = rparam['platformOrderId']
            sign = rparam['sign']
            result = rparam['result']

            isOK = PayHelper.verify_md5(sign, platformOrderId, result, cls.sign_skey)
            if isOK:
                if result == '1':
                    isBackOk = PayHelper.callback_ok(platformOrderId, -1, rparam)
                    if isBackOk:
                        success = 1
                else:
                    PayHelper.callback_error(platformOrderId, '', rparam)
        except:
            TyContext.ftlog.exception()

        return '{"result":{"success":%d,"platformOrderId":"%s"}}' % (success, platformOrderId)
Exemple #9
0
    def doLinkYunCallback(cls, rpath):
        rparam = PayHelper.getArgsDict()
        TyContext.ftlog.info('doLinkYunCallback->args=', rparam)
        try:
            orderId = rparam['orderId']
            mobileId = rparam['mobileId']
            price = rparam['price']
            goodsInf = rparam['goodsInf']
            sign = rparam['sign']
            isOk = PayHelper.verify_md5(sign, orderId, mobileId, price, goodsInf, cls.sign_skey)
            # 效验sign
            if not isOk:
                TyContext.ftlog.info('doLinkYunCallback->ERROR, sign error !!')
                return '1||sign error'

            platformOrderId = str(goodsInf)[2:]
            if not platformOrderId:
                TyContext.ftlog.info('doLinkYunCallback->ERROR, platformOrderId error !!')
                return '1||orderPlatformId error'

            # 对凌云充值的订单,把手机号补充到订单信息里
            platformOrderId = ShortOrderIdMap.get_long_order_id(platformOrderId)
            TyContext.RunMode.get_server_link(platformOrderId)
            PayHelper.set_order_mobile(platformOrderId, mobileId)

            rparam['chargeType'] = 'linkyun'
            rparam['third_orderid'] = orderId
            total_fee = float(price) / 100
            isOk = PayHelper.callback_ok(platformOrderId, total_fee, rparam)
            if isOk:
                return '0||'
            else:
                return '1||charge fail'
        except:
            TyContext.ftlog.exception()
            TyContext.ftlog.info('doLinkYunCallback->ERROR, param error !! rparam=', rparam)
            return '1||charge exception'