Exemple #1
0
    def doCallback(self, rpath):
        rparams = TyContext.RunHttp.convertArgsToDict()
        order_id = rparams['dealseq']
        TyContext.ftlog.debug('TuYouPayJusdkV4->doCallback,rparams=', rparams)

        if not self.verify_sign(rparams):
            return 'failed'

        notify_data = rparams['notify_data']
        data = rsa_decrypto_with_publickey(notify_data, JUSDK_PUB_KEY, 1)
        TyContext.ftlog.debug('TuYouPayJusdkV4 -> de rsa notify data = ', data)
        notify_dict = dict((l.split('=') for l in data.split('&')))

        if notify_dict.get('dealseq') != rparams.get('dealseq'):
            TyContext.ftlog.debug('TuYouPayJusdkV4 -> dealseq Different')
            return 'failed'

        if int(notify_dict.get('payresult')) != 0:
            TyContext.ftlog.debug('TuYouPayJusdkV4 -> payresult Different')
            return 'failed'

        is_ok = PayHelperV4.callback_ok(order_id, -1, rparams)
        if is_ok:
            return 'success'
        else:
            TyContext.ftlog.debug('TuYouPayJusdkV4 -> not ok')
            return 'failed'
Exemple #2
0
    def doiToolsPayCallback(self, rpath):
        postData = TyContext.RunHttp.get_body_content()
        TyContext.ftlog.debug('TuYouPayiTools->doiToolsPayCallback postData: ',
                              postData)
        paramslist = postData.split('&')
        params = {}
        for k in paramslist:
            paramdata = k.split('=')
            params[paramdata[0]] = paramdata[1]
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback postParams: ', params)

        for k in params.keys():
            params[k] = urllib.unquote(params[k])
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback postParams_urldecode: ',
            params)

        pristr = params['notify_data']
        sign = params['sign']
        data = rsa_decrypto_with_publickey(pristr, iTools_pubkey_str, 1)
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback iTools callback data: ', data)
        rparam = json.loads(data)
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback notify_data: ', rparam)
        try:
            orderPlatformId = rparam['order_id_com']
            amount = rparam['amount']
            account = rparam['account']
            third_orderid = rparam['order_id']
            result = rparam['result']
            user_id = rparam['user_id']
        except:
            TyContext.ftlog.error(
                'TuYouPayiTools->doiToolsPayCallback Get params in iTools callback ERROR!'
            )
            return 'fail'
        if 0 != cmp('success', result):
            TyContext.ftlog.error(
                'TuYouPayiTools->doiToolsPayCallback Charge failed!')
            errormsg = 'user use ' + account + ' charge ' + result
            PayHelperV4.callback_error(orderPlatformId, errormsg, rparam)

        # veriry_result = cls.rsa_verify(data, sign, iTools_pubkey_str)
        veriry_result = _verify_with_publickey_pycrypto(
            data, sign, _iTools_pubkey_py)
        if not veriry_result:
            TyContext.ftlog.error(
                'TuYouPayiTools->doiToolsPayCallback Verify failed! data: %s, sign: %s, iTools_pubkey_str: %s'
                % (data, sign, iTools_pubkey_str))
            return 'fail'

        rparam['third_orderid'] = third_orderid
        PayHelperV4.callback_ok(orderPlatformId, amount, rparam)
        TyContext.ftlog.debug(
            'TuYouPayiTools->doiToolsPayCallback user %s charge % successed! '
            % (user_id, amount))
        return 'success'
Exemple #3
0
    def doKuaiYongPingGuoPayCallback(cls, rpath):
        rparam = TyContext.RunHttp.convertArgsToDict()
        TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  rparam', rparam)

        '''
        uid = rparam['uid']
        subject = rparam['subject']
        version = rparam['version']
        '''

        thirdId = rparam['orderid']
        platformOrderId = rparam['dealseq']
        encryptData = rparam['notify_data']
        sign = rparam['sign']

        verifySign = ''.join([k + '=' + str(rparam[k]) + '&' for k in sorted(rparam.keys()) if k != 'sign'])
        verifySign = verifySign[0:-1]
        TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  verifySign', verifySign)
        # 公钥验签
        if not _verify_with_publickey_pycrypto(verifySign, sign, _kuaiyongpingguo_pubkey_py):
            TyContext.ftlog.error('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback public verify fail')
            return 'failed'

        # 公钥解密:加载.so文件,python嵌入动态库
        decryptData = rsa_decrypto_with_publickey(encryptData, KUAIYONGPINGGUO_PUB_KEY, 1)
        TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  decryptData', decryptData)

        # 将dealseq=20130219160809567&fee=0 .01&payresult=0转化为dict结构.
        responseStatus = {}
        attr = decryptData.split('&')
        for param in attr:
            params = param.split('=')
            responseStatus[params[0]] = params[1]
        TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  responseStatus', responseStatus)

        rparam['third_orderid'] = thirdId
        rparam['chargeType'] = 'kuaiyongpingguo'
        if 0 == int(responseStatus['payresult']):
            total_fee = int(float(responseStatus['fee']))
            chargeKey = 'sdk.charge:' + platformOrderId
            chargeInfo = TyContext.RedisPayData.execute('HGET', chargeKey, 'charge')
            chargeInfo = json.loads(chargeInfo)
            # 当返回的fee和商品定价不一致时,采用商品本身的价格
            TyContext.ftlog.debug('TuYouPayKuaiYongPingGuo->doKuaiYongPingGuoPayCallback  chargeInfo', chargeInfo,
                                  chargeInfo['chargeTotal'], total_fee)
            # if chargeInfo['chargeTotal'] != total_fee:
            #    total_fee = chargeInfo['chargeTotal']

            PayHelper.callback_ok(platformOrderId, total_fee, rparam)
            return 'success'
        else:
            errinfo = '支付失败'
            PayHelper.callback_error(platformOrderId, errinfo, rparam)
            return 'failed'
Exemple #4
0
 def VerifySign(cls, pristr, params):
     try:
         pristr = "".join(pristr.split())
         TyContext.ftlog.debug('TuYouPayAiSi->VerifySign Before decrypt: ',
                               pristr)
         data = rsa_decrypto_with_publickey(pristr, aisi_pubkey_str, 1)
         TyContext.ftlog.debug('TuYouPayAiSi->VerifySign After decrypt: ',
                               data)
         priParam = {}
         for item in data.split('&'):
             tmplist = item.split('=')
             priParam[tmplist[0]] = tmplist[1]
         TyContext.ftlog.debug('TuYouPayAiSi->VerifySign priParam is: ',
                               priParam)
         for item in params:
             if item == 'sign':
                 continue
             if params[item] != priParam[item]:
                 return False
     except Exception as e:
         TyContext.ftlog.error('TuYouPayAiSi->VerifySign Error: ', e)
         return False
     return True