Пример #1
0
    def doMsgDxCallback(self, rpath):

        MchNo = TyContext.RunHttp.getRequestParam('MchNo', '')
        Phone = TyContext.RunHttp.getRequestParam('Phone', '')
        Fee = TyContext.RunHttp.getRequestParam('Fee', '')
        OrderId = TyContext.RunHttp.getRequestParam('OrderId', '')
        MobileType = TyContext.RunHttp.getRequestParam('MobileType', '')
        Sign = TyContext.RunHttp.getRequestParam('Sign', '')
        if MchNo == '' or Phone == '' or Fee == '' or OrderId == '' or Sign == '':
            return '401~参数错误~'

        eft_skey = ''
        try:
            eft_appid = OrderId[0:2]
            eft_skey = TuYouPayMsgDx.appkeys.get(eft_appid)
        except:
            TyContext.ftlog.exception()
        tSign = MchNo + Phone + Fee + OrderId + eft_skey
        m = md5()
        m.update(tSign)
        vSign = m.hexdigest()
        if Sign != vSign:
            TyContext.ftlog.info('doMsgDxCallback->ERROR, sign error !! sign=',
                                 Sign, 'vSign=', vSign, 'eft_skey=', eft_skey)
            return '555~数字签名错误~'

        # 解密得到原始游戏订单号
        orderPlatformId = ''
        try:
            orderPlatformId = OrderId[2:]
            Fee = int(Fee)
        except:
            TyContext.ftlog.exception()
        TyContext.ftlog.info('TuYouPayMsgDx.doMsgDxCallback orderPlatformId=',
                             orderPlatformId)

        notifys = {
            'MchNo': MchNo,
            'vouchMobile': Phone,
            'OrderId': OrderId,
            'third_orderid': MchNo
        }
        if MobileType == 'LT':
            notifys['payType'] = 'EFTChinaUnion.msg'
        elif MobileType == 'DX':
            notifys['payType'] = 'EFTChinaTelecom.msg'
        from tysdk.entity.pay.pay import TuyouPay

        from tysdk.entity.paythird.helper import PayHelper
        PayHelper.set_order_mobile(orderPlatformId, Phone, 'v2')
        isOk = TuyouPay.doBuyChargeCallback(orderPlatformId, Fee,
                                            'TRADE_FINISHED', notifys)
        if isOk:
            return '000~成功~'
        else:
            return '111~失败~'
Пример #2
0
    def doDuoKuCallback(cls, rpath):
        TyContext.ftlog.info('doDuoKuCallback start')
        rparam = TyContext.RunHttp.convertArgsToDict()

        try:
            shortOrderPlatformId = rparam['cpdefinepart']
            orderPlatformId = ShortOrderIdMap.get_long_order_id(
                shortOrderPlatformId)
            appId = rparam['appid']
            sign = rparam['sign']
            unit = rparam['unit']
            amount = rparam['amount']
            status = rparam['status']
            mobileId = rparam.get('phone', '')
        except:
            TyContext.ftlog.info(
                'doDuoKuCallback->ERROR, param error !! rparam=', rparam)
            TyContext.ftlog.exception()
            return 'failure'
        if status != 'success':
            PayHelper.callback_error(orderPlatformId, 'pay fail', rparam)
            return 'failure'

        paykey_dict = TyContext.Configure.get_global_item_json(
            'duoku_paykeys', {})
        paykey = str(paykey_dict[str(appId)])

        # 签名校验
        if not cls.__verify_sign(rparam, paykey, sign):
            return 'failure'

        if unit == 'fen':
            total_fee = float(amount) / 100
        else:
            total_fee = float(amount)

        rparam['chargeType'] = 'duoku'
        rparam['third_orderid'] = rparam['orderid']
        PayHelper.set_order_mobile(orderPlatformId, mobileId)
        isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam)
        if isOk:
            return 'success'
        else:
            return 'failure'