Exemple #1
0
    def charge_data(cls, chargeinfo):

        platformOrderId = chargeinfo['platformOrderId']
        prodPrice = int(chargeinfo['chargeTotal']) * 100
        charge = int(chargeinfo['chargeTotal'])
        prodName = chargeinfo['diamondName']
        callbackAddress = PayHelper.getSdkDomain() + '/v1/pay/maopao/callback'

        prodPayMethod = ''
        maopaoConfig = TyContext.Configure.get_global_item_json('maopao_config', {})

        phoneType = TyContext.UserSession.get_phone_type_name(chargeinfo['phoneType'])

        if charge in maopaoConfig['paysms'] and PHONETYPE_INTS[phoneType] != 1:
            prodPayMethod = 'sms'
            payInfo = chargeinfo['payInfo']
            maopaoAppid = payInfo['appid']['maopao_appid']
            typroductId = chargeinfo['buttonId']
            payPointNum = '-1'
            if maopaoAppid in maopaoConfig:
                maopaoAppidPayNum = maopaoConfig[maopaoAppid]
                if typroductId in maopaoAppidPayNum:
                    payPointNum = maopaoAppidPayNum[typroductId]
                    TyContext.ftlog.debug('doMaopaoCallback payInfo', payInfo, 'maopaoAppid', maopaoAppid,
                                          'typroductId', typroductId)
        else:
            prodPayMethod = '3rd'
            payPointNum = '1'

        TyContext.ftlog.debug('doMaopaoCallback payPointNum', payPointNum)

        chargeinfo['chargeData'] = {'platformOrderId': platformOrderId, 'prodPrice': prodPrice,
                                    'prodName': prodName, 'prodPayMethod': prodPayMethod,
                                    'callbackAddress': callbackAddress, 'payPointNum': payPointNum}
Exemple #2
0
    def charge_data(cls, chargeinfo):
        appId = chargeinfo['appId']
        diamondId = chargeinfo['buttonId']
        orderPlatformId = chargeinfo['platformOrderId']
        clientId = chargeinfo['clientId']
        if 'payInfo' in chargeinfo and chargeinfo['payInfo']:
            payInfo = chargeinfo['payInfo']
            if 'appid' in payInfo and payInfo['appid']['vivo']:
                clientId = payInfo['appid']['vivo']

        pramas = {}
        pramas['version'] = '1.0.0'
        pramas['orderTitle'] = chargeinfo['buttonName']
        pramas['orderDesc'] = chargeinfo['buttonName']
        pramas['orderAmount'] = '%.2f' % chargeinfo['chargeTotal']

        appinfoconfig = TyContext.Configure.get_global_item_json(
            'vivo_appkeys', {})
        appdata = appinfoconfig.get(str(clientId), None)
        if not appdata:
            raise Exception('can not find app info define of clientId=' +
                            clientId)

        pramas['storeId'] = appdata['cpid']
        pramas['appId'] = appdata['appid']
        notifyurl = PayHelper.getSdkDomain() + '/v1/pay/vivo/callback'
        pramas['notifyUrl'] = notifyurl
        pramas['storeOrder'] = orderPlatformId

        timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
        pramas['orderTime'] = timestamp
        cpkey = appdata['cpkey']
        sign = cls.__cal_sign(pramas, cpkey)
        pramas['signature'] = sign
        pramas['signMethod'] = 'MD5'

        orderpushurl = 'https://pay.vivo.com.cn/vivoPay/getVivoOrderNum'
        TyContext.ftlog.debug('TuYouPayVivo->order push url->', orderpushurl)
        response, orderpushurl = TyContext.WebPage.webget(orderpushurl, pramas)
        try:
            datas = json.loads(response)
            if int(datas['respCode']) != 200:
                TyContext.ftlog.error(
                    'TuYouPayVivo charge_data->order push url response ERROR, rspmsg=',
                    datas['respMsg'])
                return
            if not cls.__verify_sign(datas, cpkey, datas['signature']):
                return
            chargeinfo['chargeData'] = {
                'vivoOrder': datas['vivoOrder'],
                'vivoSignature': datas['vivoSignature']
            }
        except:
            TyContext.ftlog.exception()
            TyContext.ftlog.error(
                'TuYouPayVivo charge_data->order push url return ERROR, response=',
                response)
Exemple #3
0
    def charge_data(cls, chargeinfo):
        TyContext.ftlog.info('TuYouPayPPZhuShou->chargeinfo', chargeinfo)

        orderNo = chargeinfo['platformOrderId']
        fee = int(chargeinfo['chargeTotal'])
        productDesc = chargeinfo['buttonName']
        notifyUrl = PayHelper.getSdkDomain() + '/v1/pay/ppzhushou/callback'

        chargeinfo['chargeData'] = {
            'orderNo': orderNo,
            'fee': fee,
            'productDesc': productDesc,
            'notifyUrl': notifyUrl
        }
Exemple #4
0
    def __create_order(cls, phoneType, userId, amount, orderPlatformId,
                       is_monthly, bindMobile, paycode, scheme):
        # yiconfig = TyContext.Configure.get_global_item_json('yipaywap_config', {})
        iccid = TyContext.UserSession.get_session_iccid(userId)
        imei = TyContext.UserSession.get_session_imei(userId)
        params = {}
        if phoneType == PHONETYPE_CHINAMOBILE:
            params['corp_type'] = '1'
        elif phoneType == PHONETYPE_CHINAUNION:
            params['corp_type'] = '2'
        else:
            params['corp_type'] = '3'

        params['merc_id'] = cls.merc_id
        params['amount'] = str(amount)
        if iccid:
            params['iccid'] = iccid
        if imei:
            params['imei'] = imei
        params['user_id'] = userId
        params['app_id'] = cls.yipay_appid
        params['site_type'] = '1'
        params['scheme'] = '%s' % scheme
        params['ver'] = '2.0'

        params[
            'pay_code'] = paycode  # yiconfig['paycode_config'][str(amount/100)]
        # 0非包月, 2包月
        params['is_monthly'] = is_monthly
        params['phone'] = bindMobile
        notifyurl = PayHelper.getSdkDomain() + '/v1/pay/yipay/callback'
        params['app_orderid'] = orderPlatformId
        params['ip'] = TyContext.RunHttp.get_client_ip()
        params['ret_url'] = notifyurl
        params['noti_url'] = notifyurl
        params['time'] = str(int(time.time()))
        params['sign'] = cls._cal_sign(params)
        response_msg, final_url = TyContext.WebPage.webget(
            cls.createorder_url, params)

        TyContext.ftlog.debug('TuYouPayYiWap->charge_data createorder_url',
                              cls.createorder_url, 'params', params,
                              'response_msg', response_msg)
        response = json.loads(response_msg)
        return response
Exemple #5
0
    def __get_card_request_params__(cls, chargeInfo, mi, mo, cardType):
        if not PayHelper.checkCardParam(mi, mo):
            return None

        orderPrice = int(float(chargeInfo['chargeTotal']))
        card_amount = mi.getParamStr('card_amount', '')
        desKey = base64.decodestring(cls.szf_desKey)
        cardInfo = card_amount + '@' + mi.getParamStr('card_number') + '@' + mi.getParamStr('card_pwd')
        TyContext.ftlog.debug('__get_card_request_params__ cardInfo=', cardInfo)
        #        iv = Random.new().read(DES.block_size)
        desobj = DES.new(desKey, DES.MODE_ECB)
        padlen = 8 - len(cardInfo) % 8
        for i in xrange(padlen):
            cardInfo = cardInfo + chr(padlen)
        cipher = desobj.encrypt(cardInfo)
        cardInfo = base64.b64encode(cipher)
        cls.reqSeq += 1
        orderPlatformId = chargeInfo['platformOrderId']
        ct = datetime.datetime.now()
        orderId = ct.strftime('%Y%m%d') + '-' + cls.szf_merId + '-' + orderPlatformId + str(cls.reqSeq % 10000)
        rparam = {}
        rparam['version'] = 3  # 版本号值为:  3
        rparam['merId'] = cls.szf_merId  # 商户在神州付的唯一身份标识
        rparam['payMoney'] = orderPrice * 100  # 支付金额  单位:分
        rparam['orderId'] = orderId  # 订单号的格式:yyyyMMdd-merId-SN
        rparam['returnUrl'] = PayHelper.getSdkDomain() + cls.szf_callback_url
        rparam[
            'cardInfo'] = cardInfo  # DES 加密并做 BASE64 编码后的数据  DES 加密数据格式:充值卡面额[单位:元]@充值卡序列号 @充值卡密码 (请与神州付技术联系配置密钥,然后登录商户平台查看密钥)
        rparam['merUserName'] = ''  # 支付此订单的用户的用户名
        rparam['merUserMail'] = ''  # 支付此订单的用户的邮箱
        rparam['privateField'] = orderPlatformId  # 可以传任意字母数字组成的字符串,回调的时候会传回给商户
        rparam['verifyType'] = 1  # 固定传1
        rparam['cardTypeCombine'] = cardType  # 0:移动;1:联通;2:电信
        md5String = str(rparam['version']) + str(rparam['merId']) + \
                    str(rparam['payMoney']) + str(rparam['orderId']) + \
                    str(rparam['returnUrl']) + str(rparam['cardInfo']) + \
                    str(rparam['privateField']) + str(rparam['verifyType']) + \
                    cls.szf_privateKey
        m = hashlib.md5()
        m.update(md5String)
        md5String = m.hexdigest()
        rparam['md5String'] = md5String  # MD5 校验串
        TyContext.ftlog.debug('__get_card_request_params__->rparam=', rparam)
        return rparam
Exemple #6
0
 def _get_pay_requset_params(cls, chargeInfo, mi, mo, bankIndex):
     cls.reqSeq += 1
     rparam = {}
     # 如果同一个事务,发送第一次请求,失败,360认为此事务已被占用,必须使用不同的事务ID
     rparam['mer_trade_code'] = chargeInfo['platformOrderId'] + '-' + str(
         cls.reqSeq)
     rparam['rec_amount'] = float(chargeInfo['chargeTotal'])
     rparam['product_name'] = chargeInfo['buttonName']
     rparam['mer_code'] = cls.merchant_code
     rparam['trans_service'] = cls.trans_service
     rparam['input_cha'] = cls.input_cha
     rparam['sign_type'] = cls.sign_type
     rparam['notify_url'] = PayHelper.getSdkDomain() + cls.notify_url
     rparam['return_url'] = cls.no_notify_url
     rparam['bank_code'] = cls.bank_code[bankIndex]
     if bankIndex in (1, 2, 3):
         if not PayHelper.checkCardParam(mi, mo):
             return None
         rparam['card_amount'] = mi.getParamInt('card_amount')
         rparam['card_number'] = mi.getParamStr('card_number')
         rparam['card_pwd'] = mi.getParamStr('card_pwd')
     rparam['sign'] = cls.__build_my_sign__(rparam)
     return rparam
Exemple #7
0
 def charge_data(cls, chargeinfo):
     notifyurl = PayHelper.getSdkDomain() + '/v1/pay/uc/callback'
     TyContext.ftlog.debug('TuYouPayUc charge_data callback url=',
                           notifyurl)
     chargeinfo['chargeData'] = {'notifyUrl': notifyurl}