Esempio n. 1
0
 def login(self):
     """ 用户登录 """
     self.logined = datetime.now()
     self.ip = get_ip()
     self.spm = request.args.get('spm', self.spm)
     self.ip_area = parse_ip(get_ip())
     self.save()
Esempio n. 2
0
    def prepay(self, **kwargs):
        """微信支付预付款下单,对接口进行封装。

        :param body: 订单名称
        :param detail: 订单详情
        :param out_trade_no: 订单号
        :param openid: 用户OpenID
        :param type: 订单分类,默认为normal
        :rtype: 微信接口返回结果
        """
        type = kwargs.pop('type', 'normal')
        kwargs.setdefault('appid', self.config.get('appid'))
        kwargs.setdefault('mch_id', self.config.get('mchid'))
        kwargs.setdefault('spbill_create_ip', get_ip())
        kwargs.setdefault('notify_url',
                          url_for(self.endpoint, type=type, _external=True))
        kwargs.setdefault('trade_type', 'JSAPI')
        kwargs.setdefault('body', '微信支付')
        kwargs.setdefault('out_trade_no', 'wxtest')
        kwargs.setdefault('total_fee', 100)
        kwargs.setdefault('nonce_str', randstr(32))
        kwargs.setdefault('sign', self.sign(**kwargs))

        if 'openid' not in kwargs:
            raise ValueError('openid is required.')

        data = dicttoxml(kwargs, custom_root='xml', attr_type=False)
        try:
            xml = requests.post(self.PREPAY_URL, data=data).content
            return self.xml2dict(xml)
        except Exception, e:
            return dict(return_code='ERROR', return_msg=str(e))
Esempio n. 3
0
    def bind(self, args):
        if current_user.is_user():
            if current_user.phone:
                abort(BINDED)

            current_user.phone = args['phone']
            if um.config.required_bind_password:
                current_user.password = args['password']
            current_user.save()
            return current_user

        user = um.models.User.objects(phone=args['phone']).first()
        if not user:
            user = um.models.User(
                phone=args['phone'],
                password=args['password'] if um.config.required_bind_password else '',
                channel=get_channel(),
                spm=get_spm(),
                ip=get_ip(),
            )
            user.create()
        elif um.config.required_bind_password:
            user.password = args['password']
            user.save()
        return user
Esempio n. 4
0
File: wxpay.py Progetto: endsh/chiki
    def prepay(self, **kwargs):
        """微信支付预付款下单,对接口进行封装。

        :param body: 订单名称
        :param detail: 订单详情
        :param out_trade_no: 订单号
        :param openid: 用户OpenID
        :param type: 订单分类,默认为normal
        :rtype: 微信接口返回结果
        """
        config = kwargs.pop('config', {})
        self.config['appid'] = config.get('appid')
        self.config['mchid'] = config.get('mchid')
        self.config['key'] = config.get('key')
        type = kwargs.pop('type', 'normal')
        kwargs.setdefault('appid', self.get_config('appid', config=config))
        kwargs.setdefault('mch_id', self.get_config('mchid', config=config))
        kwargs.setdefault('spbill_create_ip', get_ip())
        kwargs.setdefault('notify_url',
                          url_for(self.endpoint, type=type, _external=True))
        kwargs.setdefault('trade_type', 'JSAPI')
        kwargs.setdefault('body', '微信支付')
        kwargs.setdefault('out_trade_no', 'wxtest')
        kwargs.setdefault('total_fee', 100)
        kwargs.setdefault('nonce_str', randstr(32))
        kwargs.setdefault('sign', self.sign(config=config, **kwargs))

        data = dicttoxml(kwargs, custom_root='xml', attr_type=False)
        try:
            xml = requests.post(self.PREPAY_URL, data=data).content
            return self.xml2dict(xml)
        except Exception, e:
            current_app.logger.error(traceback.format_exc())
            return dict(return_code='ERROR', return_msg=str(e))
Esempio n. 5
0
    def prepay(self, **kwargs):
        """微信支付预付款下单,对接口进行封装。

        :param body: 订单名称
        :param detail: 订单详情
        :param out_trade_no: 订单号
        :param openid: 用户OpenID
        :param type: 订单分类,默认为normal
        :rtype: 微信接口返回结果
        """
        type = kwargs.pop('type', 'normal')
        kwargs.setdefault('appid', self.config.get('appid'))
        kwargs.setdefault('mch_id', self.config.get('mchid'))
        kwargs.setdefault('spbill_create_ip', get_ip())
        kwargs.setdefault('notify_url', url_for('wxpay_callback', type=type, _external=True))
        kwargs.setdefault('trade_type', 'JSAPI')
        kwargs.setdefault('body', '微信支付')
        kwargs.setdefault('out_trade_no', 'wxtest')
        kwargs.setdefault('total_fee', 100)
        kwargs.setdefault('nonce_str', randstr(32))
        kwargs.setdefault('sign', self.sign(**kwargs))

        if 'openid' not in kwargs:
            raise ValueError('openid is required.')

        data = dicttoxml(kwargs, custom_root='xml', attr_type=False)
        try:
            xml = requests.post(self.PREPAY_URL, data=data).content
            return self.xml2dict(xml)
        except Exception, e:
            return dict(return_code='ERROR', return_msg=str(e))
Esempio n. 6
0
def question(id):
    form = AnswerForm()
    q = Question.objects(id=id).get_or_404()
    related = Question.objects(
        id__ne=id, tags__in=q.tags).order_by('-week_weight').limit(8)
    query = Answer.objects(question=q).order_by('-created')
    current_app.redis.sadd('qv_%s' % q.id, get_ip())
    return query.paginate(id=id).render(
        'common/question.html', question=q, related=related, form=form)
Esempio n. 7
0
 def create(self, args):
     user = um.models.User(
         email=args['email'],
         password=args['password'],
         channel=get_channel(),
         spm=get_spm(),
         ip=get_ip(),
     )
     user.create()
     return user
Esempio n. 8
0
 def log(user, model, before_data, after_data, type, **kwargs):
     ip = kwargs.get('ip', get_ip())
     spm = kwargs.get('spm', get_spm())
     headers = kwargs.get('headers', request.headers)
     AdminChangeLog(user=user,
                    model=model,
                    before_data=before_data,
                    after_data=after_data,
                    type=type,
                    ip=ip,
                    spm=spm,
                    headers=str(headers)).save()
Esempio n. 9
0
    def log(type, id, device, key='', spm=None, ip=None, ua=None):
        if current_app.config.get('FAST_MODE') is True:
            return

        spm = spm if spm else get_spm()
        ip = ip if ip else get_ip()
        ua = ua if ua else request.headers.get('User-Agent', '')
        um.models.UserLog(user=id,
                          type=type,
                          device=device,
                          key=key,
                          spm=spm,
                          ip=ip,
                          ua=ua).save()
Esempio n. 10
0
File: wxpay.py Progetto: endsh/chiki
 def transfers(self, **kwargs):
     kwargs.setdefault('mch_appid', self.config.get('appid'))
     kwargs.setdefault('mchid', self.config.get('mchid'))
     kwargs.setdefault('check_name', 'NO_CHECK')
     kwargs.setdefault('amount', 1)
     kwargs.setdefault('desc', '企业打款')
     kwargs.setdefault('spbill_create_ip', get_ip())
     kwargs.setdefault('nonce_str', randstr(32))
     kwargs.setdefault('sign', self.sign(**kwargs))
     data = dicttoxml(kwargs, custom_root='xml', attr_type=False)
     try:
         xml = requests.post(self.TRANSFERS, data=data, cert=self.config.get('cert')).content
         return self.xml2dict(xml)
     except Exception, e:
         current_app.logger.error(traceback.format_exc())
         return dict(return_code='ERROR', return_msg=str(e))
Esempio n. 11
0
 def transfers(self, **kwargs):
     kwargs.setdefault('mch_appid', self.config.get('appid'))
     kwargs.setdefault('mchid', self.config.get('mchid'))
     kwargs.setdefault('check_name', 'NO_CHECK')
     kwargs.setdefault('amount', 1)
     kwargs.setdefault('desc', '企业打款')
     kwargs.setdefault('spbill_create_ip', get_ip())
     kwargs.setdefault('nonce_str', randstr(32))
     kwargs.setdefault('sign', self.sign(**kwargs))
     data = dicttoxml(kwargs, custom_root='xml', attr_type=False)
     try:
         xml = requests.post(self.TRANSFERS,
                             data=data,
                             cert=self.config.get('cert')).content
         return self.xml2dict(xml)
     except Exception, e:
         current_app.logger.error(traceback.format_exc())
         return dict(return_code='ERROR', return_msg=str(e))
Esempio n. 12
0
    def prepay(self, **kwargs):
        kwargs.setdefault('MchId', self.config.get('mchid'))
        kwargs.setdefault('PayTypeId', 'wechat_wap')
        kwargs.setdefault('TradeContent', '云计费')
        kwargs.setdefault('TradeAttach', '云计费')
        kwargs.setdefault('TradeMoney', 1)
        kwargs.setdefault('Ip', get_ip())

        host = self.callback_host if self.callback_host else request.host
        backurl = 'http://%s%s' % (host, url_for(self.endpoint))
        kwargs.setdefault('NotifyUrl', backurl)
        kwargs.setdefault('RedirectUrl', 'http://%s/' % request.host)
        kwargs['Sign'] = self.sign(**kwargs)
        try:
            return requests.post(self.PREPAY_URL % self.host,
                                 data=json.dumps(kwargs),
                                 timeout=8).json()
        except Exception, e:
            return dict(Error=-1, Message=str(e))
Esempio n. 13
0
 def prepay(self, **kwargs):
     kwargs.setdefault('body', '云计费')
     kwargs.setdefault('total_fee', '1')
     kwargs.setdefault('product_id', '20170101')
     kwargs.setdefault('goods_tag', 'default')
     kwargs.setdefault('op_user_id', self.config.get('op_user_id'))
     kwargs.setdefault('nonce_str', randstr(32))
     host = self.callback_host if self.callback_host else request.host
     backurl = 'http://%s%s' % (host, url_for(self.endpoint))
     kwargs.setdefault('notify_url', backurl)
     kwargs.setdefault('spbill_create_ip',
                       self.config.get('spbill_create_ip', get_ip()))
     kwargs['sign'] = self.sign(**kwargs)
     try:
         res = requests.post(self.PREPAY_URL % self.host,
                             data=json.dumps(kwargs))
         return res.json()
     except Exception, e:
         return dict(errcode=500, msg=str(e))
Esempio n. 14
0
    def prepay(self, **kwargs):
        kwargs.setdefault('appid', self.config.get('appid'))
        kwargs.setdefault('mch_id', self.config.get('mchid'))
        kwargs.setdefault('spbill_create_ip', get_ip())
        kwargs.setdefault('notify_url', url_for('wxpay_callback', _external=True))
        kwargs.setdefault('trade_type', 'JSAPI')
        kwargs.setdefault('body', '微信支付')
        kwargs.setdefault('out_trade_no', 'wxtest')
        kwargs.setdefault('total_fee', 100)
        kwargs.setdefault('nonce_str', randstr(32))
        kwargs.setdefault('sign', self.sign(**kwargs))

        if 'openid' not in kwargs:
            raise ValueError('openid is required.')

        data = dicttoxml(kwargs, custom_root='xml', attr_type=False)
        try:
            xml = requests.post(self.PREPAY_URL, data=data).content
            return self.xml2dict(xml)
        except Exception, e:
            return dict(return_code='ERROR', return_msg=str(e))
Esempio n. 15
0
    def prepay(self, **kwargs):
        kwargs.setdefault('appid', self.config.get('appid'))
        kwargs.setdefault('mch_id', self.config.get('mchid'))
        kwargs.setdefault('spbill_create_ip', get_ip())
        kwargs.setdefault('notify_url', url_for('wxpay_callback', _external=True))
        kwargs.setdefault('trade_type', 'JSAPI')
        kwargs.setdefault('body', '微信支付')
        kwargs.setdefault('out_trade_no', 'wxtest')
        kwargs.setdefault('total_fee', 100)
        kwargs.setdefault('nonce_str', randstr(32))
        kwargs.setdefault('sign', self.sign(**kwargs))

        if 'openid' not in kwargs:
            raise ValueError('openid is required.')

        data = dicttoxml(kwargs, custom_root='xml', attr_type=False)
        try:
            xml = requests.post(self.PREPAY_URL, data=data).content
            return self.xml2dict(xml)
        except Exception, e:
            return dict(return_code='ERROR', return_msg=str(e))
Esempio n. 16
0
    def post(self):
        if not um.allow_phone:
            abort(ACCESS_DENIED)

        action = request.args.get('action')
        args = self.get_args()
        self.validate(action, args)

        PhoneCode = um.models.PhoneCode
        if current_app.is_web and not current_user.is_authenticated() \
                and action not in PhoneCode.PASS_ACTIONS:
            verify_code = request.form.get('verify_code')
            code_len = current_app.config.get('VERIFY_CODE_LEN', 4)
            key = 'users_' + action + '_phone'
            code, times = get_verify_code(key, code_len=code_len)
            if code.lower() != verify_code.lower():
                validate_code(key)
                abort(VERIFY_CODE_ERROR, refresh=True)

        code = PhoneCode.objects(phone=args['phone'], action=action).first()
        if code:
            if code.timelimit:
                abort(PHONE_CODE_TIME_LIMIT)
        else:
            ip = get_ip()
            ua = request.headers.get('User-Agent', '')
            code = PhoneCode(phone=args['phone'], action=action, ip=ip, ua=ua)

        if code.action in PhoneCode.REGISTERED_ACTIONS and code.registered:
            abort(PHONE_REGISTERED)
        elif code.action in PhoneCode.UNREGISTERED_ACTIONS and not code.registered:
            abort(PHONE_UNREGISTERED)

        condom.heart('send_phone_code')

        code.make()
        code.save()
        code.send()

        return success()
Esempio n. 17
0
    def bind(self, args):
        if current_user.is_user():
            if current_user.email:
                abort(BINDED)

            current_user.email = args['email']
            if um.config.required_bind_password:
                current_user.password = args['password']
            current_user.save()
            return current_user

        user = um.models.User.objects(email=args['email']).first()
        if not user:
            user = um.models.User(
                email=args['email'],
                password=args['password'] if um.config.required_bind_password else '',
                channel=get_channel(),
                spm=get_spm(),
                ip=get_ip(),
            )
            user.create()
        elif um.config.required_bind_password and user.password != args['password']:
            abort(PASSWORD_ERROR)
        return user
Esempio n. 18
0
 def log(type, id, device, key='', spm=None, ip=None):
     spm = spm if spm else get_spm()
     ip = ip if ip else get_ip()
     UserLog(user=id, type=type, device=device, key=key, spm=spm, ip=ip).save()
Esempio n. 19
0
 def create_empty():
     return um.models.User(channel=get_channel(), spm=get_spm(), ip=get_ip())
Esempio n. 20
0
 def login(self):
     """ 用户登录 """
     self.logined = datetime.now()
     self.ip = get_ip()
     self.spm = request.args.get('spm', self.spm)
     self.save()
Esempio n. 21
0
 def log(user, type, spm=None, ip=None):
     spm = spm if spm else get_spm()
     ip = ip if ip else get_ip()
     AdminUserLoginLog(user=user, type=type, spm=spm, ip=ip).save()
Esempio n. 22
0
 def create_empty():
     return um.models.User(
         channel=get_channel(), spm=get_spm(), ip=get_ip())
Esempio n. 23
0
 def log(type, id, device, key='', spm=None, ip=None):
     spm = spm if spm else get_spm()
     ip = ip if ip else get_ip()
     UserLog(user=id, type=type, device=device, key=key, spm=spm, ip=ip).save()