def query_yy(request): g = request.GET account = g.get('account', '') time = g.get('time', '') game = g.get('game', '') server = g.get('server', '') sign = g.get('sign', '') code = -1 s_sign = md5( '%s%s%s%s%s' % (account, game, server, time, 'dpmoFiT05iTvMYGrvvuokwybDz0n0Jja')) player = { 'user_id': 0, 'player_id': 0, 'player_name': '', 'level': 0, 'server_id': 0 } sign = sign.lower() if sign != s_sign: return render_to_response('client/yy/player_info.html', { 'player': player, 'code': code }) try: server = int(server) player = query_player(46, account, server) code = 0 except Exception, ex: print 'query yy error:', ex
def confirm_lefeifan(request, pay_channel={}): #app_key = pay_channel.get_config_value('app_key','I0oskdibsBfb6klo') app_key = pay_channel.get_config_value('app_key', 'c87dfb0f15088051f05a10c074e06381') keys = [ 'account', 'amount', 'orderid', 'result', 'channel', 'msg', 'extrainfo', 'sign' ] account, amount, orderid, result, channel, msg, extrainfo, sign = [ request.POST.get(x, request.GET.get(x, '')) for x in keys ] sign_str = u'account=%s&amount=%s&orderid=%s&result=%s&channel=%s&msg=%s&extrainfo=%s&appkey=%s' % ( account, amount, orderid, result, channel, msg, extrainfo, app_key) sign_str = md5(sign_str) print '-' * 40 print dict(request.POST) print(extrainfo, amount) print(sign, sign_str) pay_amount = 0 server_id = player_id = 0 if sign.encode('utf-8') == sign_str: try: if int(result) == 0: pay_amount = float(amount) server_id, player_id = [int(i) for i in extrainfo.split('_')] result_msg = str(orderid) msg = u'%s: %s' % (channel, msg) except Exception, e: result_msg = '-3' print('confirm lefeifan has error', e)
def confirm_xy(request, pay_channel): rp = lambda x, y='': request.POST.get(x, y) print request.POST params_dict = { "orderid": rp("orderid"), "uid": rp("uid"), "serverid": rp("serverid"), "amount": rp("amount"), "extra": rp("extra"), "ts": rp("ts"), } sign = urllib.unquote(rp("sign")) app_key = pay_channel.get_config_value("app_key", "") server_id = player_id = amount = 0 order_id = remark = result_msg = "" try: sign_con = app_key + "&".join([ "%s=%s" % (k, params_dict[k]) for k in sorted(params_dict.keys()) ]) print "=== xy ===", sign_con sign_md5 = md5(sign_con) print(sign, sign_md5) if sign == sign_md5: order_id = params_dict["orderid"] server_id = int(params_dict["serverid"]) player_id = int(params_dict["extra"]) amount = float(params_dict["amount"]) result_msg = "success" else: result_msg = "fail" except Exception, e: print e
def confirm_lemon(request,pay_channel={}): app_key = pay_channel.get_config_value('app_key','d72fc4301b5b851d') keys = ['appid','serverid','uid','amount','orderid','item','actual_amount','payext','signature'] appid,serverid,uid,amount,orderid,item,actual_amount,payext,signature = [ request.POST.get(x,request.GET.get(x,'')) for x in keys ] sign_str = u'%s%s%s%s%s%s%s%s%s'%(appid,serverid,uid,amount,orderid,item,actual_amount,payext,app_key) sign_str = md5(sign_str) print '-' * 40 print [ appid,serverid,uid,amount,orderid,item,actual_amount,payext,signature ] print 'item %s' % item print (sign_str,signature) account = msg = '' pay_amount = 0 server_id = player_id = openid = 0 result_msg = '{"result":1,"msg":"Fail"}' user_type = int(pay_channel.get_config_value('user_type',84)) if signature.encode('utf-8') == sign_str: try: if item: msg = '%s,%s' % (actual_amount,amount) pay_amount = 1 else: pay_amount = float(actual_amount) server_id = int(serverid) openid = int(uid) result_msg = '{"result":0,"msg":"success"}' #成功:CP方订单ID except Exception,e: result_msg = 'server_id,player_id error' print('confirm lemon has error',e)
def confirm_hucn(request,pay_channel={}): app_key = pay_channel.get_config_value('app_key','I0oskdibsBfb6klo') user_type = pay_channel.get_config_value('user_type',8) custom = request.POST.get('custom','') order_id = request.POST.get('orderid','') account = request.POST.get('account','') regold = request.POST.get('regold','') result = request.POST.get('result','') remark = request.POST.get('msg','') channel = request.POST.get('channel','') sign = request.POST.get('sign','') sign_str = 'custom=%s&account=%s®old=%s&orderid=%s&result=%s&msg=%s&channel=%s&%s'%(custom,account,regold,order_id,result,remark,channel,app_key) #print(sign_str) sign_str = md5(sign_str)[10:22] result_msg = '0' pay_amount = 0 server_id = 0 #print sign_str if sign==sign_str: try: server_id = int(custom) if int(result)==0: pay_amount = float(regold) result_msg = '{query_id}' except Exception,e: print('confirm hucn has error',e)
def confirm_ios49(request, pay_channel={}): app_key = pay_channel.get_config_value('app_key', '115bea0008adecd35dc87d460f038dbf') keys = ['uid', 'amount', 'orderid', 'serverid', 'extrainfo', 'sign'] uid, amount, orderid, serverid, extrainfo, sign = [ request.POST.get(x, request.GET.get(x, '')) for x in keys ] sign_str = u'%s%s%s%s%s%s' % (orderid, uid, serverid, amount, extrainfo, app_key) sign_str = md5(sign_str) print '-' * 40 print[uid, amount, orderid, serverid, extrainfo, sign] print(sign_str, sign) account = msg = '' pay_amount = 0 server_id = player_id = 0 if sign.encode('utf-8') == sign_str: try: pay_amount = float(amount) account = uid server_id, player_id = [int(i) for i in extrainfo.split('_')] result_msg = orderid #成功:CP方订单ID except Exception, e: result_msg = 'server_id,player_id error' print('confirm ios49 has error', e)
def confirm_songgang(request, pay_channel): app_key = pay_channel.get_config_value('app_key', '') user_type = pay_channel.get_config_value('user_type', 114) rq = request.POST print rq payName = rq.get('payName', '') payDesc = rq.get('payDesc', '') itemCode = rq.get('itemCode', '') money = rq.get('money', '') orderId = rq.get('orderId', '') transactionID = rq.get('transactionID', '') itemChange = rq.get('itemChange', '') Sig = rq.get('Sig', '').encode('utf-8') sign = md5('%s%s%s' % (transactionID, app_key, money)) order_id = '' pay_amount = 0 remark = '' result_msg = '0|Fail' server_id = player_id = '' try: if sign == Sig: order_id = transactionID pay_amount = float(money) server_id, player_id = payDesc.split('_')[:2] server_id = int(server_id) player_id = int(player_id) remark = payName result_msg = '1|Success' else: result_msg = '0|Sgin Error' except Exception, e: print('confirm songgang has an error:', e)
def confirm_songgang_web(request,pay_channel): app_key = pay_channel.get_config_value('app_key','Zo#@dwk@s p%') user_type = pay_channel.get_config_value('user_type', 114) rq = request.REQUEST print rq gameid = rq.get('gameid','') orderid = rq.get('orderid','') uid = rq.get('uid','') serverid = rq.get('serverid','') amount = rq.get('amount','') sig = rq.get('sig','') #md5(orderid + uid + serverid + amount + key) sign_str = '%s%s%s%s%s' % (orderid,uid,serverid,amount,app_key) sign = md5(sign_str) print (sign,sig,sign_str) order_id = '' pay_amount = 0 remark = '' result_msg = 'E999' server_id = player_id = openid ='' try: if sign.encode('utf-8') == sig: order_id = orderid pay_amount = float(amount) server_id = int(serverid) openid = uid remark = gameid result_msg = 'E000' else: result_msg = 'E007' except Exception,e: result_msg = 'E999' print('confirm songgang_web has an error:',e)
def confirm_guguo(request, pay_channel): app_key = pay_channel.get_config_value('app_key', '1de853df437052757c11863f048f5531') g = lambda x, y: request.POST.get(x, y) openId = g('openId', '') # String 11 唯一标识,对应COOGUO用户ID 1 serverId = g('serverId', '') # String 30 充值服务器ID,接入时应与COOGUO协商 2 serverName = g('serverName', '') # String 30 充值服务器名字 3 roleId = g('roleId', '') # String 30 游戏角色ID 4 roleName = g('roleName', '') # String 30 游戏角色名称 5 orderId = g('orderId', '') # String 20 COOGUO订单号 6 orderStatus = g('orderStatus', '') # String 4 订单状态,1-成功;其他为失败 7 payType = g('payType', '') # String 30 支付类型,如:2_13_支付宝、4_15_银联等 8 amount = g('amount', '') # String 10 成功充值金额,单位(分),实际float类型 9 remark = g('remark', '') # String 255 结果说明,描述订单状态 10 callBackInfo = g('callBackInfo', '') # String 255 合作商自定义参数,SDK调用时传入的数据 11 payTime = g('payTime', '') # String 20 玩家充值时间,yyyyMMddHHmmss 12 paySUTime = g('paySUTime', '') # String 20 玩家充值成功时间,yyyyMMddHHmmss 13 sign = g('sign', '') # String 32 参数签名(用于验签对比) serverName = urllib.unquote(serverName.encode('utf-8')).decode('utf-8') roleName = urllib.unquote(roleName.encode('utf-8')).decode('utf-8') payType = urllib.unquote(payType.encode('utf-8')).decode('utf-8') remark = urllib.unquote(remark.encode('utf-8')).decode('utf-8') #sign = MD5(“openId=100000& serverId=123& serverName=测试服务器& roleId=147& roleName=测试角色& orderId=20121129115114758& orderStatus=1& payType=支付宝& amount=100.0& remark=&callBackInfo=自定义数据&payTime=20130101125612&paySUTime=20130101126001&app_key=1478523698”) server_sign = u'openId=%s&serverId=%s&serverName=%s&roleId=%s&roleName=%s&orderId=%s&orderStatus=%s&payType=%s&amount=%s&remark=%s&callBackInfo=%s&payTime=%s&paySUTime=%s&app_key=%s' server_sign = server_sign % ( openId, serverId, serverName, roleId, roleName, orderId, orderStatus, payType, amount, remark, callBackInfo, payTime, paySUTime, app_key) server_sign = md5(server_sign) pay_amount = 0 player_id = 0 server_id = 0 order_id = '' remark = '' result_msg = '0' if sign == server_sign: result_msg = '1' try: amount = float(amount) / 100 if amount > 0 and int(orderStatus) == 1: result_msg = 'success' pay_amount = amount order_id = orderId tmp = callBackInfo.split('_') server_id = int(tmp[0]) player_id = int(tmp[1]) except Exception, ex: result_msg = 'error' remark = 'comfrim guguo error:', ex
def confirm_ledou(request, pay_channel={}): app_key = pay_channel.get_config_value('app_key', '33c0604d8c4625a00c46') user_type = pay_channel.get_config_value('user_type', 6) custom = request.GET.get('extraInfo', '') order_id = request.GET.get('orderId', '') open_id = request.GET.get('openid', '') post_amount = request.GET.get('amount', '') pay_amount = request.GET.get('actualAmount', '') result = request.GET.get('success', '') remark = request.GET.get('msg', '') sign = request.GET.get('sign', '') sign_str = u'orderId=%s&openid=%s&amount=%s&actualAmount=%s&success=%s&secret=%s' % ( order_id, open_id, post_amount, pay_amount, result, app_key) sign_str = md5(sign_str) result_msg = 'failure' server_id = 0 print(sign_str) amount = 0 if sign == sign_str: try: if int(result) == 0: amount = float(pay_amount) server_id = int(custom.replace('&', '')) result_msg = 'ok' except Exception, e: print('confirm ledou has error', e)
def confirm_yunyoyo(request,pay_channel={}): cpid = pay_channel.get_config_value('cpid',230) game_seq_num = pay_channel.get_config_value('game_seq_num',1) notice_key = pay_channel.get_config_value('notice_key','TFJkSTYyTks=') #secret_key = pay_channel.get_config_value('secret_key','NnVxdnlDdzA=') server_seq_num = request.POST.get('server_seq_num','') trade_no = request.POST.get('trade_no','') amount = request.POST.get('amount','') user_id = request.POST.get('user_id','') ext_info = request.POST.get('ext_info','') timestamp = request.POST.get('timestamp','') remark = request.POST.get('remark','') verstring = request.POST.get('verstring','') sign_str = u'trade_no=%s&cpid=%s&game_seq_num=%s&server_seq_num=%s&amount=%s&user_id=%s&ext_info=%s×tamp=%s&SecretKey=%s'%(trade_no,cpid,game_seq_num,server_seq_num,amount,user_id,ext_info,timestamp,base64.decodestring(notice_key)) #print(sign_str) sign_str = md5(sign_str) print(sign_str,verstring) pay_status = 'error order' user_type = 4 server_id = 0 pay_amount = 0 if sign_str == verstring: server_id = int(ext_info) pay_amount = float(amount) pay_status = 'success' else: pay_status = 'error sign' return {'server_id':server_id,'user_type':user_type,'open_id':user_id,'order_id':trade_no,'amount':pay_amount,'remark':remark,'result_msg':pay_status}
def confirm_shoumengpc(request, pay_channel): app_key = pay_channel.get_config_value('app_key', 'dcb60382d326868980c2c4d080811666') keys = [ 'user_id', 'login_account', 'game_id', 'packet_id', 'game_server_id', 'game_role_id', 'order_id', 'game_coin', 'total_fee', 'pay_time', 'pay_result', 'sign' ] user_id, login_account, game_id, packet_id, game_server_id, game_role_id, order_id, game_coin, total_fee, pay_time, pay_result, sign = [ request.POST.get(x, request.GET.get(x, '')) for x in keys ] sign_str = 'user_id=%s&login_account=%s&game_id=%s&packet_id=%s&game_server_id=%s&game_role_id=%s&order_id=%s&game_coin=%s&total_fee=%s&pay_time=%s&pay_result=%s&secret=%s' % \ (user_id,login_account,game_id,packet_id,game_server_id,game_role_id,order_id,game_coin,total_fee,pay_time,pay_result,app_key) sign_str = md5(sign_str) print '-' * 40 print dict(request.POST) print(sign, sign_str) remark = '' result_msg = 'FAILURE' pay_amount = 0 server_id = player_id = 0 orderId = '' if sign.encode('utf-8') == sign_str.encode('utf-8'): try: pay_amount = float(total_fee) if int(pay_result) == 1 and pay_amount > 0: server_id = int(game_server_id) player_id = int(game_role_id) orderId = order_id result_msg = 'SUCCESS' except Exception, e: print('confirm youai has error', e)
def confirm_xunleiniux(request,pay_channel={}): g = lambda x,y:request.POST.get(x,request.GET.get(x,y)) app_key = pay_channel.get_config_value('app_key','0e7a4c2691b623a69c6ef0337896ec04') orderid = g('orderid', '') user = g('user', '') gold = g('gold', '') money = g('money', '') time = g('time', '') sign = g('sign', '') server = g('server', '') roleid = g('roleid', '') sign_str = '%s%s%s%s%s%s'% (orderid, user, gold, money, time, app_key) remark = '' result_msg = '' order_id = '' server_id = 0 player_id = 0 amount = 0 if sign == md5(sign_str): try: server_id = int(server) player_id = int(roleid) amount = int(money) order_id = orderid except Exception, ex: print 'Urecharge_Id error' result_msg = '1'
def query_xunleikankan(request): UserName = request.GET.get('UserName', '') #md5(ReturnCode=r&MchID=x&UserName=y&Ticket=t&Key=a).ToLower() sign = md5('ReturnCode=1&MchID=xl&UserName=%s&Ticket=0&Key=%s' % (UserName, '9@zi(v6bw0$k6fku')) result_data = '''<?xml version="1.0" encoding="utf-8" ?><root><ReturnCode>1</ReturnCode><MchID>xl</MchID><UserName>%s</UserName><Ticket>0</Ticket><ReturnMsg></ReturnMsg><Signature>%s</Signature></root>''' % (UserName, sign) return HttpResponse(result_data)
def return_xml(MchOrderID, UserName, Amount, app_key): #ReturnCode 是 返回值,详见后 #MchID 是 商户号 #MchOrderID 是 迅雷支付订单号,唯一 #UserName 是 充值的迅雷账号数字ID #Amount 是 订单金额(分) #OrderDate 是 订单提交时间(yyyyMMddhhmmss) #OrderID 是 游戏方使用的订单号 #PayDate 是 充值时间(yyyyMMddhhmmss) #ReturnMsg 是 返回信息 #Signature 是 数字签名 now = datetime.datetime.now() now_str = now.strftime('%Y%m%d%H%M%S') OrderDate = now_str PayDate = now_str OrderID = '%s%s' % (int(time.mktime(now.timetuple())), MchOrderID) sign = md5('ReturnCode=1&MchID=xl&MchOrderID=%s&UserName=%s&Amount=%s&OrderID=%s&PayDate=%s&Key=%s' % (MchOrderID, UserName, Amount, OrderID, PayDate, app_key)) data = '''<?xml version="1.0" encoding="utf-8" ?> <root> <ReturnCode>1</ReturnCode> <MchID>xl</MchID> <MchOrderID>%s</MchOrderID> <UserName>%s</UserName> <Amount>%s</Amount> <OrderDate>%s</OrderDate> <OrderID>%s</OrderID> <PayDate>%s</PayDate> <ReturnMsg>success</ReturnMsg> <Signature>%s</Signature> </root>''' % (MchOrderID, UserName, Amount, OrderDate, OrderID, PayDate, sign) return data
def confirm_gfan(request, pay_channel={}): #print(request.GET,request.raw_post_data) result_msg = '<response><ErrorCode>0</ErrorCode><ErrorDesc>error order info</ErrorDesc></response>' uid = pay_channel.get_config_value( 'uid', '7874351') #uid是开发者在机锋注册时获得的用户ID,登陆开发者后台可看到。 request_xml = request.raw_post_data result_data = parse_notify_data(request_xml) server_sign = md5('%s%s' % (uid, result_data.get('time'))) sign = result_data.get('sign') print(sign, server_sign) query_id = '' pay_amount = 0 remark = '' if sign == server_sign: query_id = result_data.get('order_id') pay_amount = float(result_data.get('cost')) result_msg = '<response><ErrorCode>1</ErrorCode><ErrorDesc></ErrorDesc></response>' else: remark = 'error sign' return { 'query_id': query_id, 'amount': pay_amount, 'remark': remark, 'result_msg': result_msg }
def confirm_91baidu(request, pay_channel={}): g = lambda x, y: request.POST.get(x, request.GET.get(x, y)) app_key = pay_channel.get_config_value('app_key', 'GjSUrxU9BpRPMaG0T3ZSk9IX') transdata = g('transdata', '') #JSON sign = g('sign', '') sign_str = '%s%s' % (transdata, app_key) remark = '' result_msg = '' order_id = '' server_id = 0 player_id = 0 amount = 0 if sign == md5(sign_str): transdata = transdata.encode('utf-8') transdata = json.loads(transdata) print 'get transdata:%s' % transdata j = lambda x, y='': transdata.get(x, y) exorderno = j('exorderno') #商户订单号 transid = j('transid') #计费支付平台的交易流水号 appid = j('appid') #平台为商户应用分配的唯一编号 waresid = j('waresid') #平台为应用内需计费商品分配的编号 feetype = j( 'feetype' ) #计费类型:0 – 开放价格1 – 免费 2 – 按次 3 – 包自然时长 4 – 包账期5 – 买断6 – 包次数7 – 按时长8 – 包活跃时长9 – 批量购买100 – 按次免费试用101 – 按时长免费试用 money = j('money') #本次交易的金额,单位:分 count = j('count') #本次购买的商品数量 result = j('result') #交易结果:0 – 交易成功 1 – 交易失败 transtype = j('transtype') #交易类型:0 – 交易 1 – 冲正 transtime = j('transtime') #交易时间格式 cpprivateinfo = j('cpprivateinfo') #商户私有信息 tmp = exorderno.split('_') print 'tmp:%s' % tmp server_id = int(tmp[0]) player_id = int(tmp[1]) order_id = transid if result == 0: amount = int(round(money / 100.0)) else: result_msg = 'charge error' else: result_msg = remark = 'sign error' return { 'server_id': server_id, 'player_id': player_id, 'order_id': order_id, 'amount': amount, 'remark': remark, 'result_msg': result_msg }
def query_a360(request): g = lambda x, y: request.POST.get(x, y) code = g('code', '') t = g('t', '') client_id = 'cb26fca917fa06404ad43fbd5f68b2b1' client_secret = 'd922f3b4d08aa5fb3f29aeb592213d15' if 'c1wan' == t: client_id = '296b209cdc14817feb19adf4dfca7e61' client_secret = '24ff2c281606b475a7f3cede20f09565' elif 'youai360bssg' == t: client_id = g('client_id', '24903cebad0aa882443fc8cfd24650ae') client_secret = 'f450b94ce27a05f0700cc01cb546857f' request_url = 'https://openapi.360.cn/oauth2/access_token' userinfo_url = 'https://openapi.360.cn/user/me.json' grant_type = 'authorization_code' #定值 redirect_uri = 'oob' #定值 request_url = '%s?grant_type=%s&code=%s&client_id=%s&client_secret=%s&redirect_uri=%s' % ( request_url, grant_type, code, client_id, client_secret, redirect_uri) result_code = 1 result_msg = '' link_key = '' sign = '' access_token = '' try: data_result = http_post(request_url) data_result = json.loads(data_result) access_token = data_result.get('access_token', '') #Access Token 值 expires_in = data_result.get('expires_in', '') #Access Token 的有效期 以秒计 refresh_token = data_result.get('refresh_token', '') #用于刷新 Access Token的 Token, 有效期 14天 scope = data_result.get( 'scope', '') #Access Token 最终的访问范围,即用户实际授予的权限列表当前只 支持值 basic #查询用户信息 #access_token Y 授权的 access token #fields N 允许应用自定义返回字段,多个属性之间用英文半角逗号作为分 隔符。不传递此参数则缺省返回 id,name,avatar #?access_token=12345678983b38aabcdef387453ac8133ac3263987654321&fields=id,name,avatar,sex,area if access_token != '': userinfo_url = '%s?access_token=%s&fields=id' % (userinfo_url, access_token) user_info = http_post(userinfo_url) user_info = json.loads(user_info) link_key = user_info.get('id', '') if link_key != '': result_code = 0 else: result_msg = u'会话已过期,请重新登陆' timestamp = int(time.time()) mykey = 'boluoboluomi' sign = md5(('%s%s%s') % (link_key, timestamp, mykey)) except Exception, ex: result_msg = 'internal error' print ex
def query_songgang(request): '''客户端给的充值成功消息 /service/query/songgang?orderId=502_526385358_1404200092771&transId=PPK237301685&itemChange=fal se&payName=%E9%87%91%E5%B8%81&amount=60.0&paymentID=38&serverId=502&playerId=526385358 CHECKCODE規則:MD5(TransactionKey+”*”+SHOPID+”*”+ORDERID+”*”+TransactionKey) ''' check_url = 'http://www.pay168.com.tw/purepay/online/CheckTransStatus.aspx' app_key = 'sx#Ud#S4YR6t5P6*st' request.POST._mutable = True # request.GET._mutable = True #可以是使用reuqest.GET.setlist('key',value)方法 SHOPID = 13121601 rq = request.REQUEST ORDERID = rq.get('orderId', '') transId = rq.get('transId', '') itemChange = rq.get('itemChange', '') payName = rq.get('payName', '') amount = rq.get('amount', '') paymentID = rq.get('paymentID', '') serverId = rq.get('serverId', '') playerId = rq.get('playerId', '') CHECKCODE = md5('%s*%s*%s*%s' % (app_key, SHOPID, ORDERID, app_key)) query_data = 'SHOPID=%s&ORDERID=%s&CHECKCODE=%s' % (SHOPID, ORDERID, CHECKCODE) check_url = '%s?%s' % (check_url, query_data) response = http_post(check_url, query_data) r = convert_songgong_response(response) print r if r.get('TRANSACTIONSTATUS', '') == '0' and serverId and playerId: #设置回调的参数 transactionID = r.get('TRANSACTIONID', '') request.POST.setlist('payName', [payName]) request.POST.setlist('payDesc', ['%s_%s' % (serverId, playerId)]) request.POST.setlist('itemCode', ['']) request.POST.setlist('money', [amount]) request.POST.setlist('orderId', [ORDERID]) request.POST.setlist('transactionID', [transactionID]) request.POST.setlist('itemChange', [itemChange]) sign = md5('%s%s%s' % (transactionID, app_key, amount)) request.POST.setlist('Sig', [sign]) return confirm(request, 'songgang') return HttpResponse('0')
def confirm_ttw(request, pay_channel): rp = request.POST orderid = rp.get('orderid', '') username = rp.get('username', '') gameid = rp.get('gameid', '') roleid = rp.get('roleid', '') serverid = rp.get('serverid', '') paytype = rp.get('paytype', '') amount = rp.get('amount', '') productname = rp.get('productname', '').encode("utf-8") paytime = rp.get('paytime', '') attach = rp.get('attach', '') sign = rp.get('sign', '') server_id = 0 order_id = '' pay_amount = 0 remark = '' open_id = 0 result_msg = '' user_type = pay_channel.get_config_value('user_type', 107) if user_type != '': user_type = int(user_type) orderid_url = urlencode("orderid", orderid) username_url = urlencode("username", username) roleid_url = urlencode("roleid", roleid) productname_url = urlencode("productname", productname) paytype_url = urlencode("paytype", paytype) attach_url = urlencode("attach", attach) try: app_key = pay_channel.get_config_value( 'app_key', '288ec75d9347f4d7d73c9d8a741b43c0') server_list = pay_channel.get_config_value('server_list', {}) server_id = int(server_list.get(str(serverid), serverid)) local_sign = "%s&%s&gameid=%s&%s&serverid=%s&%s&amount=%s&%s&paytime=%s&%s&appkey=%s" \ % (orderid_url, username_url, gameid, roleid_url, serverid, paytype_url, amount, productname_url, paytime, attach_url, app_key) print local_sign local_sign = md5(local_sign) print {"in_sign": sign, "local_sign": local_sign} if sign == local_sign: order_id = orderid pay_amount = int(amount) open_id = username result_msg = 'success' else: result_msg = 'errorSign' remark = 'sign error' except Exception, e: print e
def confirm_egame(request, pay_channel={}): #app_id = pay_channel.get_config_value('app_id', '') serialno = request.GET.get('serialno', '') resultCode = request.GET.get('resultCode', '') resultMsg = request.GET.get('resultMsg', '') gameUserId = request.GET.get('gameUserId', '') gameGold = request.GET.get('gameGold', '')#单位元 validatecode = request.GET.get('validatecode', '')#MD5(serialNo + gameUserId) payType = request.GET.get('payType', '') gameId = request.GET.get("gameId", '') requestTime = request.GET.get('requestTime', '')#请求时间 responseTime = request.GET.get('responseTime', '')#反馈时间 order_id = '' ip = '' if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] remove_ip = pay_channel.get_config_value('ip', '202.102.39.') server_sign = md5('%s%s' % (serialno, gameUserId)) print (validatecode, server_sign) remark = '' result_msg = '' pay_amount = 0 server_id = 0 player_id = 0 if 0 == ip.find(remove_ip): if validatecode == server_sign: result_msg = serialno if str(resultCode) == "120": pay_amount = float(gameGold) the_action = PayAction.objects.get(id = int(gameUserId)) if None != the_action: server_id = the_action.server_id player_id = the_action.pay_user order_id = serialno else: remark = 'the_action is none, id:%s' % gameUserId else: remark = '充值失败' else: remark = '签名错误' else: remark = '违法ip' return {"server_id":server_id, "player_id": player_id, "order_id":order_id ,"amount": pay_amount, "result_msg":result_msg,"remark":remark ,"header":{"serialno":serialno}}
def confirm_yy_new(request, pay_channel): rg = request.GET account = rg.get('account', '') orderid = rg.get('orderid', '') rmb = rg.get('rmb', '') num = rg.get('num', '') rtype = rg.get('type', '') time = rg.get('time', '') game = rg.get('game', '') server = rg.get('server', '') role = rg.get('role', '') itemid = rg.get('itemid', '') price = rg.get('price', '') itemname = rg.get('itemname', '') cparam = rg.get('cparam', '') sign = rg.get('sign', '') server_id = 0 open_id = 0 order_id = '' remark = '' pay_amount = 0 result_msg = '' user_type = int(pay_channel.get_config_value('user_type', 46)) #sign = account + orderid + rmb + num + rtype + time + game + server + role + itemid + price + itemname + cparam + sign try: app_key = pay_channel.get_config_value( 'app_key', 'dpmoFiT05iTvMYGrvvuokwybDz0n0Jja') check_sign = md5( '%s%s%s%s%s%s%s%s%s%s%s%s%s%s' % (account, orderid, rmb, num, rtype, time, game, server, role, itemid, price, itemname, cparam, app_key)) server_list = pay_channel.get_config_value('server_list', {}) server_id = int(server_list.get(str(server), server)) print "##### %s #####" % {'in_sign': sign, 'local_sign': check_sign} if check_sign == sign: pay_amount = float(rmb) open_id = account order_id = orderid result_msg = json.dumps({ "code": 1, "data": { "orderid": order_id, "rmb": pay_amount, "account": int(account) } }) else: remark = 'sign error' result_msg = json.dumps({"code": -19, "data": None}) except Exception, e: print e
def confirm_baidu_ios(request, pay_channel={}): result_code = 'ERROR_SIGN' try: api_key = pay_channel.get_config_value( 'api_key', '3bcc6690013b5d1794881a2dd0c8d38f') secret_key = pay_channel.get_config_value( 'secret_key', '8a97a9943bcc6690013bd0c8d38f1a2e') user_type = pay_channel.get_config_value('user_type', 22) except: result_code = 'ERROR_PAY_CONFIG' user_id = request.POST.get('user_id', '') #玩家登陆游戏时向厂商传入的user_id server_id = request.POST.get('server_id', '') #百度游戏开放平台分配给合作商户游戏的服务器编号 order_id = request.POST.get('order_id', '') #百度游戏平台对应商户订单号(厂商与百度对账时使用) transaction_id = request.POST.get('transaction_id', '') #苹果应用内支付对应订单号 product_id = request.POST.get('product_id', '') quantity = request.POST.get('quantity', '') timestamp = request.POST.get('timestamp', '') sign = request.POST.get('sign', '') my_server_id = '' server_list = pay_channel.get_config_value('server_list', None) if server_list != None and server_id != '': my_server_id = server_list.get(str(server_id), server_id) #print 'my_server_id:%s' % my_server_id sign_str = '%sapi_key%sorder_id%sproduct_id%squantity%sserver_id%stimestamp%suser_id%stransaction_id%s' % ( secret_key, api_key, order_id, product_id, quantity, server_id, timestamp, user_id, transaction_id) #print 'sign_str :: %s' % sign_str sign_str = md5(sign_str) amount = 0 remark = '' #print 'sign:::%s, %s' % (sign, sign_str) if sign == sign_str: try: if my_server_id != '': my_server_id = int(my_server_id) amount = float(quantity) remark = transaction_id result_code = '<!--recv=ok-->' except: result_code = 'unknow error' return { 'order_id': order_id, 'server_id': my_server_id, 'open_id': user_id, 'user_type': user_type, 'amount': amount, 'remark': remark, 'result_msg': result_code }
def confirm_xunleikankan(request, pay_channel={}): #MchID #MchOrderID 是 #UserName 是 #PayType 是 #ProCode 是 #PayNum 是 #Amount 是 #Signature 是 #Ip 否 #ServerID 否 app_key = pay_channel.get_config_value('app_key', '9@zi(v6bw0$k6fku') user_type = pay_channel.get_config_value('user_type', 51) MchID = request.GET.get('MchID', '')# 商户号 MchOrderID = request.GET.get('MchOrderID', '')#迅雷支付订单号,唯一 UserName = request.GET.get('UserName', '')#充值的迅雷账号数字ID PayType = request.GET.get('PayType', '')#支付类别(默认0) ProCode = request.GET.get('ProCode', '')#产品代码,可扩展为充值优惠(需双方协商开发) PayNum = request.GET.get('PayNum', '')#数量(默认1),可扩展为充值赠送商品数量(需双方协商开发) Amount = request.GET.get('Amount', '')#订单金额(分) Signature = request.GET.get('Signature', '')# 数字签名 Ip = request.GET.get('Ip', '')#充值的ip,此值不参与签名计算 ServerID = request.GET.get('ServerID', '')#返回充值发生的服务器ID,它的值为3.3.1和3.3.2中所传入的serverid参数,此值不参与签名计算 #Signature=md5(MchID=x&MchOrderID=y&UserName=z&PayType=t&ProCode=p&PayNum=n&Amount=a&Key=a).ToLower() sign = 'MchID=%s&MchOrderID=%s&UserName=%s&PayType=%s&ProCode=%s&PayNum=%s&Amount=%s&Key=%s' % (MchID, MchOrderID, UserName, PayType, ProCode, PayNum, Amount, app_key) sign = md5(sign) pay_amount = 0 order_id = '' open_id = '' server_id = 0 remark = '' result_msg = '' if Signature == sign: try: Amount = float(Amount) if Amount > 0: pay_amount = Amount / 100 try: UserName = UserName[4:] except Exception, ex: print 'xunleikankan username is error' print ex order_id = MchOrderID open_id = UserName server_id = int(ServerID) result_msg = return_xml(MchOrderID, UserName, Amount, app_key) remark = 'success' except Exception, ex: print 'xunleikankan error' print ex
def confirm_yy(request, pay_channel={}): g = request.GET #print g account = g.get('account', '') orderid = g.get('orderid', '') rmb = g.get('rmb', '') #单位:元 coin = g.get('coin', '') sign = g.get('sign', '') type = g.get('type', '') time = g.get('time', '') game = g.get('game', '') server = g.get('server', '') nickname = g.get('nickname', '') user_type = pay_channel.get_config_value('user_type', '') server_id = 0 open_id = '' order_id = '' pay_amount = 0 remark = '' result_msg = '' #MD5(account+ orderid + rmb + coin + game+ server +nickname+time+ 密钥),其中nickname不用进行编码 try: app_key = pay_channel.get_config_value( 'app_key', 'dpmoFiT05iTvMYGrvvuokwybDz0n0Jja') s_sign = '%s%s%s%s%s%s%s%s%s' % (account, orderid, rmb, coin, game, server, nickname, time, app_key) s_sign = md5(s_sign) print sign, s_sign open_id = account order_id = orderid server_list = pay_channel.get_config_value('server_list', None) if server_list != None and server_id != '': server_id = server_list.get(str(server), server) else: server_id = server server_id = int(server_id) if sign == s_sign: rmb = float(rmb) result_msg = '1' if rmb > 0: pay_amount = rmb else: remark = 'sign error' result_msg = '-11' except Exception, ex: print 'confirm yy error' print ex
def confirm_rockhippo(request, pay_channel): rg = request.GET print "*** %s ***" % rg postData = rg.get('postData', '') query_dict = urldecode(postData.split('&')) orderid = query_dict.get('orderId', '') amount = query_dict.get('amount', 0) paynum = query_dict.get('payNum', '') resultcode = query_dict.get('resultCode', 1) paytime = query_dict.get('payTime', '') failure = query_dict.get('failure', '') faildesc = query_dict.get('failDesc', '') reserved1 = query_dict.get('reserved1', 0) reserved2 = query_dict.get('reserved2', 0) reserved3 = query_dict.get('reserved3', '') sign = query_dict.get('signMsg', '') server_id = 0 player_id = 0 pay_amount = 0 order_id = '' remark = '' result_msg = '' app_key = pay_channel.get_config_value('app_key', 'rockhippo.net from 10002') try: server_list = pay_channel.get_config_value('server_list', {}) server_id = int(server_list.get(str(reserved1), reserved1)) faildesc_url = urllib.urlencode({"failDesc": faildesc}) local_sign = "orderId=%s&amount=%s&payNum=%s&resultCode=%s&payTime=%s&failure=%s&%s&reserved1=%s&reserved2=%s" \ "&reserved3=%s&appKey=%s" % (orderid, amount, paynum, resultcode, paytime, failure, faildesc_url, reserved1, reserved2, reserved3, app_key) print '--- %s ---' % local_sign local_sign = md5(local_sign).upper() print '###', {'in_sign': sign, 'local_sign': local_sign} if local_sign == sign: player_id = int(reserved2) pay_amount = int(amount) / 100 order_id = orderid result_msg = "result=1" else: result_msg = 'result=0' except Exception, e: print e
def confirm_cmge(request, pay_channel={}): app_key = pay_channel.get('app_key', '') user_type = pay_channel.get('user_type', '') __request = request openId = get_param('openId', '') serverId = get_param('serverId', '') serverName = get_param('serverName', '') roleId = get_param('roleId', '') roleName = get_param('roleName', '') orderId = get_param('orderId', '') orderStatus = get_param('orderStatus', -1, lambda x: float(x)) payType = get_param('payType', '') amount = get_param('amount', '') remark = get_param('remark', '') callBackInfo = get_param('callBackInfo', '') sign = get_param('sign', '') #sign = MD5(“openId=100000& serverId=123& serverName=测试服务器& roleId=147& roleName=测试角色& orderId=20121129115114758& orderStatus=1& payType=支付宝& amount=1000& remark=&callBackInfo=自定义数据&app_key=1478523698”) server_sign = 'openId=%s&serverId=%s&serverName=%s&roleId=%s&roleName=%s&orderId=%s&orderStatus=%s&payType=%s&amount=%s&remark=%s&callBackInfo=%s&app_key=%s' server_sign = server_sign % (openId, serverId, serverName, roleId, roleName, orderId, orderStatus, payType, amount, remark, callBackInfo, app_key) print server_sign server_sign = md5(server_sign) print(sign, server_sign) order_id = '' server_id = 0 pay_amount = 0 result_code = 'error' if sign == server_sign: orderid = order_id open_id = openId server_id = serverId result_code = 'success' if 1 == orderStatus: pay_amount = amount / 100 else: result_code = 'errorSign' return { 'open_id': open_id, 'user_type': user_type, 'server_id': server_id, 'order_id': orderid, 'amount': pay_amount, 'remark': remark, 'result_msg': result_code }
def confirm_taiwanmimigigi(request, pay_channel={}): g = lambda x, y: request.POST.get(x, request.GET.get(x, y)) app_key = pay_channel.get_config_value('app_key', 'woxianzaihaibuzhidao') Result = g('result', '') Imei = g('imei', '') uid = g('uid', '') error_msg = g('error_msg', '') orderid = g('orderId', '') paytype = g('paytype', '') price = g('price', '') timestamp = g('timeStamp', '') token = g('token', '') # print 'Result:%s'% Result # print 'app_key:%s'% app_key # print 'uid:%s'% uid # print 'timestamp:%s'% timestamp # print 'orderid:%s'% orderid # print 'paytype:%s'% paytype # print 'price:%s'% price # print 'token:%s'% token sign_str = '%s%s%s%s%s%s' % (app_key, uid, timestamp, orderid, paytype, price) # print 'sign_str%s'% sign_str remark = '' result_msg = '' order_id = '' server_id = 0 player_id = 0 amount = 0 if token == md5(sign_str): # print 'enter token == md5(sign_str' if Result == 'success': # print 'enter Result == success' try: server_id = int(g('server_id', 0)) player_id = int(g('player_id', 0)) amount = int(price) order_id = orderid result_msg = 'Success' print 'player_id:%s' % player_id print 'server_id:%s' % server_id except Exception, ex: print 'Urecharge_Id error' else: result_msg = 'wrong ret'
def pay_efun(payAction,pay_channel={},host_ip='service.fytxonline.com'): if pay_channel==None: pay_channel = PayChannel.objects.using('read').get(id=payAction.pay_type) gameCode = pay_channel.get_config_value('app_id', 'lsj') key = pay_channel.get_config_value('app_key', 'B708A6BC2006911EDF5AC3871E7FB7CF') #timestamp = payAction.post_time.strftime('%Y%m%d%H%M%S') timestamp = time.mktime(payAction.post_time.timetuple()) serverCode = '%ss%s' % (gameCode,payAction.server_id) creditId = payAction.query_id userId = payAction.pay_user payFrom = pay_channel.get_config_value('payFrom', 'efun_efun_efun_lsj') #md5Str: new MD5(gameCode+serverCode+credited+userId+payFrom+time+key) md5Str = '%s%s%s%s%s%s%s' % (gameCode, serverCode, creditId, userId, payFrom, timestamp, key) print md5Str md5Str = md5(md5Str) print md5Str language = 'tw' remark = '' data = {} data['gameCode'] = gameCode data['serverCode'] = serverCode data['creditId'] = creditId data['userId'] = userId data['payFrom'] = payFrom data['time'] = timestamp data['md5Str'] = md5Str data['language'] = language data['remark'] = remark #http://pay.efun.com/payForward_toPay.shtml? #gameCode=lsj #&serverCode=lsjs1 #&creditId=12121212 #&userId=1 #&payFrom=efun_efun_efun_lsj #&time=134434343434 #&md5Str=xxxxxxxxxxxxxxxx #&language=tw #&remark=xxxxxxxxxxxxxxx result_code = 1 msg = urllib.urlencode(data) return (result_code,msg)
def confirm_a553(request, pay_channel={}): app_key = pay_channel.get_config_value('app_key', 'sgesferyrhrgefegtrhe3trfq') user_type = pay_channel.get_config_value('user_type', 25) uname = request.GET.get('uname', '') package = request.GET.get('package', '') count = request.GET.get('count', '') rmb = request.GET.get('rmb', '') orderid = request.GET.get('orderid', '') #平台订单号 userdata = request.GET.get('userdata', '') #透传参数 sign = request.GET.get('sign', '') #md5(游戏币包容量+游戏币包个数+人民币+玩家帐号+平台订单号+key) #********回调接口返回参数说明(字符型)***** #1 Sign验证失败 #0&orderid 充值成功,返回0和平台传的订单号 #2 该平台订单号已经为玩家充值,本此回调未再充值 #3 充值失败 server_sign = '%s%s%s%s%s%s' % (package, count, rmb, uname, orderid, app_key) print server_sign server_sign = md5(server_sign) print(sign, server_sign) pay_amount = 0 result_code = '1' order_id = '' open_id = '' server_id = 0 player_id = '' remark = '' try: if sign == server_sign: amount = float(rmb) if 0 < amount: result_code = '0&%s' % orderid order_id = orderid open_id = uname server_id, player_id = userdata.split('_') server_id = int(server_id) player_id = int(player_id) pay_amount = amount else: result_code = '1' except Exception, ex: remark = '错误信息 %s' % ex