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