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'
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'
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'
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'
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'
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'
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'
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)
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'