def doGeFuBigPaySdkCallback(cls, rpath): rparam = TyContext.RunHttp.convertArgsToDict() TyContext.ftlog.info('TuYouPayGeFuBigSdk Callback ', rparam) strtransdata = rparam['transdata'] sign = rparam['sign'].replace(' ', '+') params = eval(str(rparam['transdata'])) TyContext.ftlog.info('TuYouPayGeFuBigSdk callback transdata ', params) orderPlatformId = params['cporderid'] total_fee = float(params['money']) if rsacrypto._verify_with_publickey_pycrypto_md5( strtransdata, sign, _aibei_pubkey_py): if 0 == params['result']: rparam['third_orderid'] = params['transid'] rparam['chargeType'] = 'gefubig' PayHelper.callback_ok(orderPlatformId, total_fee, rparam) return 'SUCCESS' else: errinfo = '支付失败' PayHelper.callback_error(orderPlatformId, errinfo, rparam) return 'FAILURE' else: errinfo = '签名校验失败' PayHelper.callback_error(orderPlatformId, errinfo, rparam) return 'FAILURE'
def doYouKuCallback(cls, rpath): cb_rsp = {} rparam = TyContext.RunHttp.convertArgsToDict() try: orderPlatformId = rparam['apporderID'] price = rparam['price'] uid = rparam['uid'] sign = rparam['sign'] youku_appId = rparam['passthrough'] except: TyContext.ftlog.exception() TyContext.ftlog.info( 'doYouKuCallback->ERROR, param error !! rparam=', rparam) cb_rsp['status'] = 'failed' cb_rsp['desc'] = '参数错误' return json.dumps(cb_rsp) paykey_dict = TyContext.Configure.get_global_item_json( 'youku_paykeys', {}) paykey = str(paykey_dict[str(youku_appId)]) # 签名校验 if not cls.__verify_sign(rparam, paykey, sign): TyContext.ftlog.error( 'TuYouPayYouKu.doYouKuCallback sign verify error !!') cb_rsp['status'] = 'failed' cb_rsp['desc'] = '签名验证失败' return json.dumps(cb_rsp) try: result = int(rparam['result']) success_amount = rparam['success_amount'] if result < 1 or result > 2: TyContext.ftlog.error('doYouKuCallback got failed result:', result) cb_rsp['status'] = 'failed' cb_rsp['desc'] = 'result(%d) is not 1 or 2' % result PayHelper.callback_error(orderPlatformId, 'result(%d) is not 1 or 2' % result, rparam) return json.dumps(cb_rsp) if result == 2: TyContext.ftlog.error( 'doYouKuCallback got partial success result:' 'success_amount is', success_amount) except: pass total_fee = float(price) / 100 rparam['chargeType'] = 'youku' isOk = PayHelper.callback_ok(orderPlatformId, total_fee, rparam) if isOk: cb_rsp['status'] = 'success' cb_rsp['desc'] = '发货成功' return json.dumps(cb_rsp) else: cb_rsp['status'] = 'failed' cb_rsp['desc'] = '发货失败' return json.dumps(cb_rsp)
def doCardCallback(cls, rpath): iHmacStr = TyContext.RunHttp.getRequestParam('hmac', '') cHmacStr = cls.getCallBackHmacString() if iHmacStr != cHmacStr: TyContext.ftlog.error( 'TuYouPayYee.doCardCallback, hmac verification error') return 'error' rparam = TyContext.RunHttp.convertArgsToDict() mer_code = TyContext.RunHttp.getRequestParam('p1_MerId') if mer_code != TuYouPayYee.p1_MerId: TyContext.ftlog.error( 'TuYouPayYee.doCardCallback error, mer_code is not me !!!') return 'error' platformOrderId = TyContext.RunHttp.getRequestParam('p2_Order') chargeKey = 'sdk.charge:' + platformOrderId chargeInfo = TyContext.RedisPayData.execute('HGET', chargeKey, 'charge') try: import json chargeInfo = json.loads(chargeInfo) rparam['chargeType'] = chargeInfo['chargeType'] except: TyContext.ftlog.exception() rparam['chargeType'] = 'yee.card' rparam['sub_paytype'] = TyContext.RunHttp.getRequestParam( 'p4_FrpId', 'na') r1_Code = TyContext.RunHttp.getRequestParam('r1_Code') if r1_Code != '1': # 长连接通知,客户端支付失败 status = TyContext.RunHttp.getRequestParamInt( 'p8_cardStatus', 10000) TyContext.ftlog.error( 'TuYouPayYee.doCardCallback error, charge return error !!! status=', status) errorInfo = u'支付失败,' + TuYouPayYee.code_map.get( status, 'status' + str(status)) PayHelper.callback_error(platformOrderId, errorInfo, rparam) return 'success' total_fee = float(rparam['p3_Amt']) isOK = PayHelper.callback_ok(platformOrderId, total_fee, rparam) if isOK: return 'success' else: return 'error'
def doCallback1(cls, rpath): datas = cls.__verify_callback__() if not datas: return '{"errorcode ":200024, "callback":1}' TyContext.ftlog.info('TuYouPayYee2.doCallback1 rpath', rpath, 'datas', datas) if 'sign' in datas: del datas['sign'] result = datas.get('status', 0) orderPlatformId = datas.get('orderid', '') if orderPlatformId.find('-') > 0: orderPlatformId = orderPlatformId.split('-')[0] total_fee = float(datas.get('amount', -1)) / 100 datas['third_orderid'] = datas['yborderid'] if result == 1: isOk = PayHelper.callback_ok(orderPlatformId, total_fee, datas) else: isOk = PayHelper.callback_error(orderPlatformId, str(result), datas) if isOk: return '{"errorcode ":0, "status":1, "callback":1}' else: return '{"errorcode ":200000, "status":1, "callback":1}'
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'
def doIosCallback(cls, rpath): platformOrderId = TyContext.RunHttp.getRequestParam('iosOrderId', '') TyContext.RunMode.get_server_link(platformOrderId) isReturn, params = AccountCheck.normal_check(rpath, True) if isReturn: return params userId = params['userId'] appId = params['appId'] clientId = params['clientId'] appInfo = TyContext.RunHttp.getRequestParam('appInfo', '') isMock = bool(TyContext.RunHttp.getRequestParam('isMock')) receipt = TyContext.RunHttp.getRequestParam('receipt', '') receiptData = {'receiptJsonStr': '{"receipt-data" : "' + receipt + '"}', 'platformOrder': platformOrderId, 'userId': userId} TyContext.ftlog.info('IOS->doIosCallback->userId', userId, 'appId', appId, 'clientId', clientId, 'appInfo', appInfo, 'platformOrderId', platformOrderId, 'receipt', receipt, 'isMock', isMock) rparam = PayHelper.getArgsDict() rparam['chargeType'] = 'tuyooios' rparam['userId'] = params['userId'] rparam['appId'] = params['appId'] rparam['clientId'] = params['clientId'] isSandbox = is_sandbox_receipt(receipt) ret = cls.doIosCallbackVerify(receiptData, isSandbox, isMock) TyContext.ftlog.debug('IOS->doIosCallback->doIosCallbackVerify ret=', ret) if ret != 'ok' and ret != 'uuid_prohibit': PayHelper.callback_error(platformOrderId, ret, rparam) return ret # 如果是被封禁的uuid,不进行发货处理 if ret == 'uuid_prohibit': return 'success' transaction_id = receiptData['original_transaction_id'] rparam['third_orderid'] = transaction_id rparam['third_prodid'] = receiptData.get('product_id', 'na') rparam['isTestOrder'] = receiptData.get('sandbox', False) if cls._is_ios_transaction_delivered(transaction_id): PayHelper.callback_error(platformOrderId, 'error-transaction-already-delivered', rparam) TyContext.ftlog.info('IOS->doIosCallback error-transaction-already-delivered ' 'userId', userId, 'platformOrder', platformOrderId) return 'error-transaction-already-delivered' if not platformOrderId: ret = cls._deliver_missing_order(rparam) if not ret: return 'error-platform-order-missing' else: platformOrderId = ret # 根据商品Id过滤刷单的订单---------------start try: chargeKey = 'sdk.charge:' + platformOrderId chargeInfo = TyContext.RedisPayData.execute('HGET', chargeKey, 'charge') if chargeInfo == None: TyContext.ftlog.info('IOS->doIosCallback error-platformOrderId-not-found ' 'userId', userId, 'platformOrder', platformOrderId) return 'error-platform-order-missing' chargeInfo = TyContext.strutil.loads(chargeInfo, decodeutf8=True) if 'chargeData' in chargeInfo and 'orderIosCode' in chargeInfo['chargeData'] and chargeInfo['chargeData'][ 'orderIosCode'] != rparam['third_prodid']: TyContext.ftlog.info('IOS->doIosCallback error-product_id ' 'userId', userId, 'platformOrder', platformOrderId, 'orderIosCode', chargeInfo['chargeData']['orderIosCode'], 'receipt_product_id', rparam['third_prodid']) return 'error-product_id' except: pass from paytuyooios import TuYouPayMyIos product = TuYouPayMyIos.get_pay_ios_product(appId, rparam['third_prodid'], clientId, 'iosid') if not product: TyContext.ftlog.error('get_pay_ios_product products not found!' ' appId=', appId, 'iosId=', rparam['third_prodid'], 'clientId=', clientId, 'checkIdKey=iosid') return 'error-product_id' # 根据商品Id过滤刷单的订单---------------end isOk = PayHelper.callback_ok(platformOrderId, -1, rparam) if isOk: cls._mark_ios_transaction_as_delivered(transaction_id) try: # 328 & 628 第一次购买后只能使用微信支付 ios_control = TyContext.Configure.get_global_item_json('ios_weinxin_pay_control', {}) if product['tyid'] in ios_control.get('weixin_products', []): wxpay_count = TyContext.RedisUser.execute(userId, 'HGET', 'user:'******'wxpay_flag') if not wxpay_count: wxpay_count = 0 TyContext.RedisUser.execute(userId, 'HSET', 'user:'******'wxpay_flag', int(wxpay_count) + 1) except: TyContext.ftlog.exception() return 'success' else: return 'error-handle-callback'