def doMingTianDongLiApiCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doMingTianDongLiApiCallback rparam', rparam) '''strSoureSign = md.encode(channelNum + appId + price + cpparams + subChannelNum + imei + provider + province + mobile + number''' strSoureSign = rparam['channelNum'] + rparam['appId'] + rparam['price'] + \ rparam['cpparams'] + rparam['subChannelNum'] + rparam['imei'] + \ rparam['provider'] + rparam['province'] + rparam['mobile'] + \ rparam['number'] if not cls._verify_sign(strSoureSign, rparam['sign']): TyContext.ftlog.error( 'doMingTianDongLiApiCallback->ERROR invalid strSoureSign', strSoureSign, 'rparam[sign]', rparam['sign']) return 'error' orderPlatformId = rparam['cpparams'] total_fee = float(rparam['price']) / 100 if rparam['mobile']: mobileId = rparam['mobile'] PayHelper.set_order_mobile(orderPlatformId, mobileId) PayHelper.callback_ok(orderPlatformId, total_fee, rparam) return 0
def doCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() transdata = rparam['transdata'] transdata = json.loads(transdata) sign = rparam['sign'] appid = transdata['appid'] signtype = rparam['signtype'] coolpad_keys = TyContext.Configure.get_global_item_json( 'coolpad_keys', {}) pubkey = coolpad_keys[appid]['publicKey'] try: orderPlatformId = transdata['cporderid'] # total_fee = transdata['money'] result = transdata['result'] except Exception as e: TyContext.ftlog.error('doCoolpadPayCallback->ERROR, exception', e, 'rparam', transdata) return 'error' if not cls._verify_sign(rparam, sign, pubkey): errinfo = '支付失败' PayHelper.callback_error(orderPlatformId, errinfo, rparam) return 'failed' if result != 0: errinfo = '支付失败' TyContext.ftlog.error( 'doCoolpadPayCallback->ERROR, exception, result not 0') PayHelper.callback_error(orderPlatformId, errinfo, rparam) return 'failed' PayHelper.callback_ok(orderPlatformId, -1, rparam) return 'success'
def doMiDaShiPayCallback(cls, rpath): # 由于设计到路径和请求方法,验签放到httpgateway里做了,这里只负责发货 rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.debug('TuYouPayMiDaShi->doMiDaShiPayCallback rparam: ', rparam) if 'payitem' in rparam: payitem = rparam['payitem'] appmeta = payitem.split('*')[0] platformOrderId = appmeta else: return cls.getReturnContent(4, 'payitem') if 'appmeta' in rparam: appmeta = rparam['appmeta'] if '*' in appmeta: appmeta = appmeta.split('*')[1] thirdPayType = appmeta else: return cls.getReturnContent(4, 'appmeta') if 'amt' in rparam: total_fee = float(rparam['amt']) else: return cls.getReturnContent(4, 'amt') rparam['sub_paytype'] = thirdPayType PayHelper.callback_ok(platformOrderId, -1, rparam) return cls.getReturnContent(0)
def _docallback(cls, appkey, paykey): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.debug('TuYouPayXYZS->_docallback rparam is : ', rparam) # 验签 safeSign = cls._gen_safe_sign(rparam, appkey) if safeSign != rparam['sign']: TyContext.ftlog.error( 'TuYouPayXYZS->_docallback sign verify failed, ' 'sign is [', safeSign, '], rparam["sign"] is [', rparam['sign'], ']') return cls._response_result(6) if rparam['sig']: safeSign = cls._gen_safe_sign(rparam, paykey) if safeSign != rparam['sig']: TyContext.ftlog.error( 'TuYouPayXYZS->_docallback sign verify failed.' 'sig is [', safeSign, '], rparam["sig"] is [', rparam['sig'], ']') return cls._response_result(6) # 开始发货 orderPlatformId = rparam["extra"] total_fee = float(rparam["amount"]) PayHelper.callback_ok(orderPlatformId, total_fee, rparam) TyContext.ftlog.debug( 'TuYouPayXYZS->_docallback deliver goods successed.') return cls._response_result(0)
def doUcDjCallback(cls, rpath): body = TyContext.RunHttp.get_body_content() TyContext.ftlog.debug('TuYouPayUcDj->doUcDjCallback Request data: ', body) rparam = TyContext.strutil.loads(body, decodeutf8=True) try: data = rparam['data'] orderPlatformId = data['orderId'] state = data['orderStatus'] total_fee = data['amount'] sign = rparam['sign'] thirdorderid = data['tradeId'] except: TyContext.ftlog.error( 'TuYouPayUcDj->doUcDjCallback ERROR, param error !! rparam=', rparam) return 'FAILURE' # 签名校验 if not cls.__verify_sign(data, sign): TyContext.ftlog.error( 'TuYouPayUcDj->doUcDjCallback verify error !!') return 'FAILURE' # 充值状态校验 if state != 'S': TyContext.ftlog.info( 'TuYouPayUcDj->doUcDjCallback charge failed. fail reason:', data['failedDesc']) PayHelper.callback_error(orderPlatformId, data['failedDesc'], rparam) return 'SUCCESS' data['third_orderid'] = thirdorderid total_fee = float(total_fee) PayHelper.callback_ok(orderPlatformId, total_fee, data) return 'SUCCESS'
def doPayAiSiCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.debug('TuYouPayAiSi->rparam', rparam) try: orderPlatformId = rparam['billno'] total_fee = float(rparam['amount']) status = int(rparam['status']) sign = rparam['sign'] third_orderid = rparam['order_id'] appid = rparam['app_id'] except Exception as e: TyContext.ftlog.error('TuYouPayAiSi->doPayAiSiCallback Error: ', e) return 'fail' # 验签 if not cls.VerifySign(sign, rparam): TyContext.ftlog.error( 'TuYouPayMiDaShi->doMiDaShiPayCallback Verify sign ERROR!') return 'fail' rparam['third_orderid'] = third_orderid rparam['chargeType'] = 'aisi' if status == 0: PayHelper.callback_ok(orderPlatformId, total_fee, rparam) return 'success' elif status == 1: return 'success' else: errinfo = '支付失败' PayHelper.callback_error(orderPlatformId, errinfo, rparam) return 'fail'
def doDaodaoCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doDaodaoCallback', rparam) try: orderPlatformId = rparam['cpparam'] total_fee = rparam['successMoney'] except Exception as e: TyContext.ftlog.error('doDaodaoCallback ,param err,exception ', e) PayHelper.callback_ok(orderPlatformId, float(total_fee), rparam)
def doMeizuPayCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doMeizuPayCallback rparam', rparam) cp_order_id = None try: cp_order_id = rparam['cp_order_id'] total_price = float(rparam['total_price']) trade_status = rparam['trade_status'] except Exception as e: TyContext.ftlog.error('doMeizuCallback param error, exception', e, 'cp_order_id', cp_order_id) return json.dumps({ 'code': 900000, 'message': '参数不匹配', 'redirect': '', 'value': None }) if not cls._check_sign(rparam): TyContext.ftlog.error('TuYouPayMeizu _check_sign failed', cp_order_id) return json.dumps({ 'code': 900000, 'message': '签名错误', 'redirect': '', 'value': None }) if trade_status == '3': PayHelper.callback_ok(cp_order_id, total_price, rparam) return json.dumps({ 'code': 200, 'message': '充值成功', 'redirect': '', 'value': None }) elif trade_status == '4': PayHelper.callback_error(cp_order_id, '订单取消', rparam) return json.dumps({ 'code': 900000, 'message': '', 'redirect': '', 'value': None }) elif trade_status == '1' or trade_status == '2': return json.dumps({ 'code': 90000, 'message': '订单处理中', 'redirect': '', 'value': None }) elif trade_status == '5': return json.dumps({ 'code': 90000, 'message': '订单异常取消', 'redirect': '', 'value': None })
def doLenovoDanjiCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doLenovoDanjiCallback->rparam=', rparam) try: transdata = rparam['transdata'] verifyData = transdata signStr = rparam['sign'] transdata = json.loads(transdata) TyContext.ftlog.debug( 'TuYouPayLenovoDanji->doLenovoDanjiCallback transdata: ', transdata) orderPlatformId = transdata['cpprivate'] appid = transdata['appid'] total_fee = transdata['money'] result = transdata['result'] paytype = transdata['paytype'] except Exception as e: TyContext.ftlog.error( 'TuYouPayLenovoDanji->doLenovoDanjiCallback ERROR:', e) return 'FAILURE' if '0' != str(result): TyContext.ftlog.error( 'TuYouPayLenovoDanji->doLenovoDanjiCallback ERROR, sign error !! rparam=', rparam, 'sign=', sign) PayHelper.callback_error(orderPlatformId, '支付失败', transdata) return 'FAILURE' appkeyconfig = TyContext.Configure.get_global_item_json( 'lenovodanji_config', {}) if not appkeyconfig: TyContext.ftlog.error( 'TuYouPayLenovoDanji->doLenovoDanjiCallback Doesn\'t find appkeyconfig by lenovodanji_config' ) return 'FAILURE' for item in appkeyconfig: if 0 == cmp(appid, item['appId']): lenovodanji_prikey_str = item['appKey'] break else: TyContext.ftlog.error( 'TuYouPayLenovoDanji->doLenovoDanjiCallback Doesn\'t find appkey by appid:', appid) return 'FAILURE' if not cls.verifySign(lenovodanji_prikey_str, verifyData, signStr): TyContext.ftlog.error( 'TuYouPayLenovoDanji->doLenovoDanjiCallback ERROR, sign error') return 'FAILURE' transdata['sub_paytype'] = paytype PayHelper.callback_ok(orderPlatformId, float(total_fee) / 100, transdata) return 'SUCCESS'
def doKuaiYongPingGuoPayCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback rparam', rparam) ''' uid = rparam['uid'] subject = rparam['subject'] version = rparam['version'] ''' thirdId = rparam['orderid'] platformOrderId = rparam['dealseq'] encryptData = rparam['notify_data'] sign = rparam['sign'] verifySign = ''.join([k + '=' + str(rparam[k]) + '&' for k in sorted(rparam.keys()) if k != 'sign']) verifySign = verifySign[0:-1] TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback verifySign', verifySign) # 公钥验签 if not _verify_with_publickey_pycrypto(verifySign, sign, _kuaiyongpingguo_pubkey_py): TyContext.ftlog.error('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback public verify fail') return 'failed' # 公钥解密:加载.so文件,python嵌入动态库 decryptData = rsa_decrypto_with_publickey(encryptData, KUAIYONGPINGGUO_PUB_KEY, 1) TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback decryptData', decryptData) # 将dealseq=20130219160809567&fee=0 .01&payresult=0转化为dict结构. responseStatus = {} attr = decryptData.split('&') for param in attr: params = param.split('=') responseStatus[params[0]] = params[1] TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback responseStatus', responseStatus) rparam['third_orderid'] = thirdId rparam['chargeType'] = 'kuaiyongpingguo' if 0 == int(responseStatus['payresult']): total_fee = int(float(responseStatus['fee'])) chargeKey = 'sdk.charge:' + platformOrderId chargeInfo = TyContext.RedisPayData.execute('HGET', chargeKey, 'charge') chargeInfo = json.loads(chargeInfo) # 当返回的fee和商品定价不一致时,采用商品本身的价格 TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback chargeInfo', chargeInfo, chargeInfo['chargeTotal'], total_fee) # if chargeInfo['chargeTotal'] != total_fee: # total_fee = chargeInfo['chargeTotal'] PayHelper.callback_ok(platformOrderId, total_fee, rparam) return 'success' else: errinfo = '支付失败' PayHelper.callback_error(platformOrderId, errinfo, rparam) return 'failed'
def doJinliCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doJinliCallback', rparam) try: orderPlatformId = rparam['out_order_no'] total_fee = rparam['deal_price'] except Exception as e: TyContext.ftlog.error('doJinliCallback ,param err,exception ', e) return 'exception in params' if not cls._check_sign(rparam): TyContext.ftlog.error('doJinliCallback ,check sign error!') return 'check sign error!' PayHelper.callback_ok(orderPlatformId, float(total_fee), rparam) return 'success'
def notifyGameServerDelivery(cls, rparam): TyContext.ftlog.debug('TuYouPayHuiYuanBaoYue->notifyGameServerDelivery User[%s, mobile:%s, orderid:%s] ' 'subscribe monthly vip!' % ( rparam['userId'], rparam['mobile'], rparam['platformOrderId'])) TyContext.RedisUser.execute(rparam['userId'], 'HMSET', 'user:'******'userId'], 'isYouyifuVipUser', '1', 'youyifuVipMsg', rparam['message']) # 这个参数用来告诉游戏服务器,这个商品是一件会员包月商品 rparam['isYouyifuMonthVip'] = '1' PayHelper.callback_ok(rparam['platformOrderId'], rparam['total_fee'], rparam) cls.changeUserInfoStatus('vipuser:'******'mobile'], 'success') TyContext.ftlog.info( 'TuYouPayHuiYuanBaoYue->notifyGameServerDelivery %s has subscribed Monthly VIP.' % cls.getLogUserInfo( rparam))
def doAiGameMsgCallback(self, rpath): notifys = TyContext.RunHttp.convertArgsToDict() cpparam = notifys.get('cpparam', '') if not cpparam: appkeys = '62d55e5d5d47f5d0121d2049d6893bc1' return self._doAiGameMsgCallbackNew(appkeys, rpath) resultcode = notifys.get('resultCode', '') resultmsg = notifys.get('resultMsg', '') try: order_paytype = notifys['payType'] notifys['sub_paytype'] = order_paytype except: order_paytype = '' validatecode = notifys.get('validatecode', '') # 限制ip请求 # clientIp = TyContext.RunHttp.get_client_ip() # TyContext.ftlog.info('TuYouPayAiGame.doAiGameMsgCallback in clientIp=', clientIp) # iplist = clientIp.split('.') # if len(iplist) != 4 or iplist[0] != '202' or iplist[1] != '102' or iplist[2] != '39' : # return cpparam if resultcode == '' or resultmsg == '' or cpparam == '' or order_paytype != 'isagSmsPay' or validatecode == '': return TuYouPayAiGame.XML_RET % ('1', cpparam) tSign = resultcode + cpparam m = md5() m.update(tSign) vSign = m.hexdigest() if validatecode != vSign: TyContext.ftlog.info( 'doAiGameMsgCallback->ERROR, sign error !! sign=', validatecode, 'vSign=', vSign) return TuYouPayAiGame.XML_RET % ('1', cpparam) # 解密得到原始游戏订单号 orderPlatformId = cpparam TyContext.ftlog.info('doAiGameMsgCallback orderPlatformId=', orderPlatformId) notifys['chargeType'] = 'aigame.msg' if resultcode == '00': PayHelper.callback_ok(orderPlatformId, -1, notifys) else: PayHelper.callback_error(orderPlatformId, 'resultCode(%s) not 0' % resultcode, notifys) return TuYouPayAiGame.XML_RET % ('0', cpparam)
def doCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('TuYouNow callback with: %s' % rparam) payNowAppId = rparam['appId'] borui_paykeys = TyContext.Configure.get_global_item_json( 'borui_paykeys', {}) try: payNowInfo = borui_paykeys[payNowAppId] except KeyError: payNowInfo = borui_paykeys appSecret = payNowInfo['appSecret'] ## check signature keys = filter(lambda k: k not in [ 'signType', 'signature', ], rparam.keys()) keys.sort() text = '&'.join(['%s=%s' % (k, rparam[k]) for k in keys]) text = urllib.unquote(text) # 转为utf-8编码 s1 = hashlib.md5(appSecret).hexdigest() s2 = hashlib.md5('%s&%s' % (text, s1)).hexdigest() if rparam['signature'] != s2: TyContext.ftlog.error('TuYouNow->ERROR, sign error !! rparam=', rparam) return 'N' # do charge tradeStatus = rparam['tradeStatus'] orderPlatformId = rparam['mhtOrderNo'] if tradeStatus == 'A001': if PayHelper.callback_ok(orderPlatformId, -1, rparam): return 'Y' return 'N'
def doLangtianCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.debug('doLangtianCallback start, rparam=', rparam) try: msg = rparam['msg'] mobileId = rparam.get('mobile', '') msgList = msg.split('#') orderPlatformId = msgList[-1] sign = rparam['mac'] except: TyContext.ftlog.error( 'doLangtianCallback->ERROR, param error !! rparam=', rparam) return 'error' # 签名校验 if not cls.__verify_sign(rparam, sign): TyContext.ftlog.error( 'TuyouPayLangtian.doLangtianCallback sign verify error !!') return 'error' total_fee = float(rparam['fee']) PayHelper.set_order_mobile(orderPlatformId, mobileId) isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam) if isOk: return 'success' else: return 'error'
def doLinkYunApiCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doLinkYunApiCallback rparam', rparam) try: shortOrderPlatformId = rparam['cpparam'][2:] mobile = rparam['mobile'] orderPlatformId = ShortOrderIdMap.get_long_order_id( shortOrderPlatformId) sign = rparam['sign'] except: TyContext.ftlog.error( 'doLinkYunApiCallback->ERROR, param error !! rparam=', rparam) return 'error' # 签名校验 if not cls.__verify_sign(rparam, sign): TyContext.ftlog.error( 'TuYouPayLinkYunApi.doLinkYunApiCallback verify error !!') return 'error' rparam['chargeType'] = 'linkyun.api' rparam['third_orderid'] = rparam['orderId'] total_fee = float(rparam['price']) / 100 PayHelper.set_order_mobile(orderPlatformId, mobile) isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam) if isOk: return '0||' else: return 'error'
def __check_callback(cls, rparam, appKey): signQuery = rparam['signature'] del rparam['signature'] sk = rparam.keys() sk.sort() queryStr = "" for k in sk: queryStr = queryStr + str(k) + '=' + str(rparam[k]) + '&' signData = queryStr[:-1] TyContext.ftlog.info('doXiaomiCallback->queryStr=', queryStr, 'signData=', signData) a = hmac.new(appKey, signData, sha1) sign = a.digest().encode('hex').upper() if signQuery.upper() != sign: TyContext.ftlog.info( 'doXiaomiCallback->ERROR, sign error !! signQuery=', signQuery, 'sign=', sign) return '{"errcode":1525}' orderPlatformId = rparam['cpOrderId'] total_fee = float(rparam['payFee']) / 100 isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam) if isOk: return '{"errcode":200}' else: return '{"errcode":1506}'
def doSztyPayCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() clientip = TyContext.RunHttp.get_client_ip() sztyconfig = TyContext.Configure.get_global_item_json( 'shuzitianyu_config', {}) callback_ip = str(sztyconfig['callback_ip']) if clientip != callback_ip: TyContext.ftlog.error('doSztyPayCallback->ERROR, ip error !! ip =', clientip) return 'error' try: shortorderPlatformId = rparam['linkid'][7:] mobileId = rparam.get('mobile', '') status = int(rparam['status']) except: TyContext.ftlog.error( 'doSztyPayCallback->ERROR, param error !! rparam=', rparam) return 'error' orderPlatformId = ShortOrderIdMap.get_long_order_id( shortorderPlatformId) rparam['chargeType'] = 'shuzitianyu' if status == 1: PayHelper.set_order_mobile(orderPlatformId, mobileId) isOk = PayHelper.callback_ok(orderPlatformId, -1, rparam) # Youyifu will resend the callback if the response is NOT 'success' return 'success' else: PayHelper.callback_error(orderPlatformId, '支付失败', rparam) return 'success'
def doSztyPayH5Callback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doSztyPayH5Callback', rparam) clientip = TyContext.RunHttp.get_client_ip() szty_config = TyContext.Configure.get_global_item_json('shuzitianyu_h5_config', {}) callback_ip = str(szty_config['callback_ip']) if clientip != callback_ip: TyContext.ftlog.error('doSztyPayH5Callback->ip auth failed. ' 'callback ip', clientip, 'expected', callback_ip) return 'error' try: orderPlatformId = rparam['orderid'] mobileId = rparam.get('mob', '') state = int(rparam['state']) price = int(rparam['price']) except Exception as e: TyContext.ftlog.error('doSztyPayH5Callback->param error !! rparam=', rparam, 'Exception:', e) return 'error' TyContext.ftlog.debug('doSztyPayH5Callback orderId', orderPlatformId) if state == 0: PayHelper.set_order_mobile(orderPlatformId, mobileId) isOk = PayHelper.callback_ok(orderPlatformId, price / 100.0, rparam) return 'ok' else: PayHelper.callback_error(orderPlatformId, '支付失败', rparam) return 'error'
def doYdjdCallback(self, rpath): xmldata = TyContext.RunHttp.get_body_content() TyContext.ftlog.debug('TuYouPayYdjd.doYdjdCallback in xmldata=', xmldata) notifys = {'xml': xmldata, 'chargeType': 'ydjd'} try: xmlroot = ElementTree.fromstring(xmldata) ret = xmlroot.find('hRet').text status = xmlroot.find('status').text userId = xmlroot.find('userId').text contentId = xmlroot.find('contentId').text consumeCode = xmlroot.find('consumeCode').text orderPlatformId = xmlroot.find('cpparam').text[2:] except Exception as e: msg = 'failure' TyContext.ftlog.error('TuYouPayYdjd.doYdjdCallback:', msg, e) return TuYouPayYdjd.XML_RET % (1, msg) notifys['pay_appid'] = contentId notifys['third_prodid'] = consumeCode notifys['third_userid'] = userId if ret != '0' or status != '1800': msg = 'ret(%s) is not 0 or status(%s) is not 1800' % (ret, status) TyContext.ftlog.error('TuYouPayYdjd.doYdjdCallback:', msg) PayHelper.callback_error(orderPlatformId, msg, notifys) return TuYouPayYdjd.XML_RET % (1, 'failure') isOk = PayHelper.callback_ok(orderPlatformId, -1, notifys) if isOk: return TuYouPayYdjd.XML_RET % (0, 'successful') else: return TuYouPayYdjd.XML_RET % (1, 'failure')
def doJiuxiuCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doJiuxiuCallback start rparam=', rparam) try: orderPlatformId = rparam['orderPlatformId'] total_fee = rparam['amount'] sign = rparam['sign'] thirdorderid = rparam['orderId'] except: TyContext.ftlog.error( 'doJiuxiuCallback->ERROR, param error !! rparam=', rparam) return 'fail' # 签名校验 if not cls.__verify_sign(rparam, sign): TyContext.ftlog.error( 'TuYouPayJiuxiu.doJiuxiuCallback verify error !!') return 'fail' rparam['chargeType'] = '9xiu' rparam['third_orderid'] = thirdorderid total_fee = float(total_fee) isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam) if isOk: return 'success' else: return 'fail'
def doIDOCallback(cls, rpath): TyContext.ftlog.info('doIDOCallback start') rparam = TyContext.RunHttp.convertArgsToDict() try: orderidconfig = TyContext.Configure.get_global_item_json( 'IDO_orderid', {}) start = orderidconfig.get(str(rparam['price']), None)[0] end = orderidconfig.get(str(rparam['price']), None)[1] shortOrderPlatformId = rparam['order_code'][start:end] orderPlatformId = ShortOrderIdMap.get_long_order_id( shortOrderPlatformId) sign = rparam['sign'] except: TyContext.ftlog.error( 'doIDOCallback->ERROR, param error !! rparam=', rparam) return 'error' # 签名校验 if not cls.__verify_sign(rparam, sign): TyContext.ftlog.error( 'TuyouPayIDO.doIDOCallbacksign verify error !!') return 'error' rparam['chargeType'] = 'linkyun.ido' rparam['third_orderid'] = rparam['orderID'] total_fee = float(rparam['price']) / 100 isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam) if isOk: return 'successful' else: return 'error'
def doLenovoCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doLenovoCallback->rparam=', rparam) transdata = rparam['transdata'] try: datas = json.loads(transdata) appId = datas['appid'] except: TyContext.ftlog.exception() TyContext.ftlog.info( 'doLenovoCallback->ERROR, sign error !! transdata=', transdata) return 'ERROR' appkeyconfig = TyContext.Configure.get_global_item_json( 'lenovo_appkeys', {}) appKey = appkeyconfig[str(appId)] sign = rparam['sign'] if cls.verifySign(transdata, sign, appKey) != True: TyContext.ftlog.info( 'doLenovoCallback->ERROR, sign error !! transdata=', transdata, 'sign=', sign) return 'ERROR' orderPlatformId = datas['exorderno'] total_fee = float(datas['money']) / 100 isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam) if isOk: return 'SUCCESS' else: return 'ERROR'
def doiToolsPayCallback(cls, rpath): postData = TyContext.RunHttp.get_body_content() TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback postData: ', postData) paramslist = postData.split('&') params = {} for k in paramslist: paramdata = k.split('=') params[paramdata[0]] = paramdata[1] TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback postParams: ', params) for k in params.keys(): params[k] = urllib.unquote(params[k]) TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback postParams_urldecode: ', params) pristr = params['notify_data'] sign = params['sign'] data = rsa_decrypto_with_publickey(pristr, iTools_pubkey_str, 1) TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback iTools callback data: ', data) rparam = json.loads(data) TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback notify_data: ', rparam) try: orderPlatformId = rparam['order_id_com'] amount = rparam['amount'] account = rparam['account'] third_orderid = rparam['order_id'] result = rparam['result'] user_id = rparam['user_id'] except: TyContext.ftlog.error('TuYouPayiTools->doiToolsPayCallback Get params in iTools callback ERROR!') return 'fail' if 0 != cmp('success', result): TyContext.ftlog.error('TuYouPayiTools->doiToolsPayCallback Charge failed!') errormsg = 'user use ' + account + ' charge ' + result PayHelper.callback_error(orderPlatformId, errormsg, rparam) # veriry_result = cls.rsa_verify(data, sign, iTools_pubkey_str) veriry_result = _verify_with_publickey_pycrypto(data, sign, _iTools_pubkey_py) if not veriry_result: TyContext.ftlog.error( 'TuYouPayiTools->doiToolsPayCallback Verify failed! data: %s, sign: %s, iTools_pubkey_str: %s' % (data, sign, iTools_pubkey_str)) return 'fail' rparam['third_orderid'] = third_orderid PayHelper.callback_ok(orderPlatformId, amount, rparam) TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback user %s charge % successed! ' % (user_id, amount)) return 'success'
def doTongBuTuiPayCallback(cls, rpath): success = json.dumps({'status': 'success'}) fail = json.dumps({'status': 'fail'}) params = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.debug( 'TuYouPayTongBuTui->doPayTongBuTuiCallback Request Params: ', params) rparam = OrderedDict() try: rparam['source'] = params['source'] rparam['trade_no'] = params['trade_no'] rparam['amount'] = params['amount'] rparam['partner'] = params['partner'] rparam['paydes'] = params['paydes'] rparam['debug'] = params['debug'] rparam['tborder'] = params['tborder'] rparam['sign'] = params['sign'] except Exception as e: TyContext.ftlog.error( 'TuYouPayTongBuTui->doPayTongBuTuiCallback Get Params ERROR. ', e) return fail # appid = 150918, appkey = rBODan#VKXuF8He2B4Olyn@KhXu8RG2q # 获取key,根据partner keyvalue = TyContext.Configure.get_global_item_json( 'tongbutui_config', {}) # 获取同步推的key for value in keyvalue: if 0 == cmp(value['appid'], params['partner']): appkey = value['appkey'] break else: TyContext.ftlog.error( 'TuYouPayHaiMaWan->doHaiMaWanPayCallback get appkey ERROR') return 'fail' rparam['key'] = appkey sign = cls.generate_verifysign(rparam) if 0 != cmp(sign, rparam['sign']): TyContext.ftlog.error( 'TuYouPayHaiMaWan->doHaiMaWanPayCallback verify sign ERROR.' 'sign: [%s], verify_sign: [%s]' % (rparam['sign'], sign)) return fail # 通知游戏服发货 rparam['third_orderid'] = rparam['tborder'] PayHelper.callback_ok(rparam['trade_no'], float(rparam['amount']) / 100, rparam) return success
def doMaopaoPayCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() maopaoInfo = {} maopaoInfo['orderId'] = rparam['orderId'] maopaoInfo['skyId'] = rparam['skyId'] maopaoInfo['resultCode'] = rparam['resultCode'] maopaoInfo['payNum'] = rparam['payNum'] maopaoInfo['cardType'] = rparam['cardType'] maopaoInfo['realAmount'] = rparam['realAmount'] maopaoInfo['payTime'] = rparam['payTime'] maopaoInfo['failure'] = rparam['failure'] maopaoInfo['signMsg'] = rparam['signMsg'] rparam['third_orderid'] = maopaoInfo['payNum'] rparam['chargeType'] = 'maopao' maopaoConfig = TyContext.Configure.get_global_item_json('maopao_config', {}) md5key = maopaoConfig['md5key'] signParams = rparam['orig_uri'] signInfo = signParams[signParams.find('?') + 1:signParams.find('signMsg') - 1] + '&' + 'key' + '=' + md5key TyContext.ftlog.info('doMaopaoCallback signInfo', signInfo) total_fee = int(maopaoInfo['realAmount']) / 100 orderPlatformId = maopaoInfo['orderId'] sign = cls._cal_sign(signInfo) TyContext.ftlog.debug('doMaopaoCallback sign', sign, 'signMsg', maopaoInfo['signMsg'], 'signInfo', signInfo) if sign == maopaoInfo['signMsg']: if int(maopaoInfo['realAmount']) > 0: PayHelper.callback_ok(orderPlatformId, total_fee, rparam) TyContext.ftlog.info('doMaopaoCallback->SUCCESSFUL rparam', rparam) return 'result=0' else: errinfo = '支付失败' PayHelper.callback_error(orderPlatformId, errinfo, rparam) TyContext.ftlog.error('doMaopaoCallback->ERROR, failDesc', errinfo, 'rparam', rparam) else: errinfo = '签名校验失败' PayHelper.callback_error(orderPlatformId, errinfo, rparam) TyContext.ftlog.error('doMaopaoCallback->ERROR, failDesc', errinfo, 'rparam', rparam) return 'result=0'
def doAiGameCallback(self, rpath): notifys = TyContext.RunHttp.convertArgsToDict() serialno = notifys.get('serialno', '') resultcode = notifys.get('resultCode', '') resultmsg = notifys.get('resultMsg', '') gameUserId = notifys.get('gameUserId', '') order_paytype = notifys.get('payType', '') validatecode = notifys.get('validatecode', '') # 限制ip请求 # clientIp = TyContext.RunHttp.get_client_ip() # TyContext.ftlog.info('TuYouPayAiGame.doAiGameCallback in clientIp=', clientIp) # iplist = clientIp.split('.') # if len(iplist) != 4 or iplist[0] != '202' or iplist[1] != '102' or iplist[2] != '39' : # return serialno if serialno == '' or resultcode == '' or resultmsg == '' or gameUserId == '' or order_paytype == '' or validatecode == '': return serialno tSign = serialno + gameUserId m = md5() m.update(tSign) vSign = m.hexdigest() if validatecode != vSign: TyContext.ftlog.info( 'TuYouPayAiGame.doAiGameCallback->ERROR, sign error !! sign=', validatecode, 'vSign=', vSign) return serialno # 解密得到原始游戏订单号 orderPlatformId = gameUserId TyContext.ftlog.info( 'TuYouPayAiGame.doAiGameCallback orderPlatformId=', orderPlatformId) if resultcode == '120': # if int(gameGold) == 0: # total_fee = -1 # else: # total_fee = int(gameGold) notifys['chargeType'] = 'aigame' PayHelper.callback_ok(orderPlatformId, -1, notifys) return serialno
def doGeFuPayCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('doGeFuPayCallback->rparam', rparam) try: orderPlatformId = rparam['orderno'] total_fee = float(rparam['fee']) / 100 reqTime = rparam['reqtime'] status = rparam['status'] mobileId = rparam.get('mobilenum') sign = rparam['sign'] except Exception as e: TyContext.ftlog.error('doGeFuPayCallback->ERROR, exception', e, 'rparam', rparam) return 'error' pathType = TyContext.RunHttp.get_request_path() chargeType = pathType.find('gefusdk') if chargeType != -1: thirdPartyId = '43' rparam['chargeType'] = 'gefusdk' else: thirdPartyId = '32' rparam['chargeType'] = 'gefu' gefuconfig = TyContext.Configure.get_global_item_json( 'gefupay_config', {}) md5key = gefuconfig[thirdPartyId]['md5key'] paramsIn = rparam['fee'] + rparam['orderno'] + rparam['reqtime'] if not cls._verify_sign(paramsIn, sign, md5key): TyContext.ftlog.error('do_gefupay_callback->ERROR invalid sign', sign) return 'error' PayHelper.set_order_mobile(orderPlatformId, mobileId) if status == 'success': PayHelper.callback_ok(orderPlatformId, total_fee, rparam) return 'success' errinfo = '支付失败' PayHelper.callback_error(orderPlatformId, errinfo, rparam) return 'failed'
def doCallback(cls, rpath): rparams = TyContext.RunHttp.convertArgsToDict() platformOrderId = rparams['extend'] TyContext.ftlog.debug('TuYouPayLizi->doCallback, rparams=', rparams) if not cls.verify_sign(rparams): return 'failure' isOk = PayHelper.callback_ok(platformOrderId, -1, rparams) if isOk: return 'success' else: return 'failure'
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'