Example #1
0
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
Example #2
0
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)
Example #3
0
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
Example #4
0
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)
Example #5
0
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&regold=%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)
Example #6
0
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)
Example #7
0
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)
Example #8
0
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)
Example #9
0
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
Example #10
0
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)
Example #11
0
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&timestamp=%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}
Example #12
0
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)
Example #13
0
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'
Example #14
0
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)
    
Example #15
0
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
Example #16
0
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
    }
Example #17
0
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
    }
Example #18
0
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
Example #19
0
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')
Example #20
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
Example #21
0
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}}

    
Example #22
0
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
Example #23
0
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
    }
Example #24
0
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
Example #25
0
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
Example #26
0
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
Example #27
0
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
    }
Example #28
0
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'
Example #29
0
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)
Example #30
0
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