示例#1
0
文件: views.py 项目: webee/pay
def login():
    next_url = request.args.get('next')
    channel_name = request.args.get(
        'channel', request.cookies.get('channel', config.DEFAULT_CHANNEL))
    if current_user.is_authenticated(
    ) and current_user.channel_name == channel_name:
        next_url = next_url or url_for('main.index')
        return redirect(next_url)

    @after_this_request
    def remember_channel_name(response):
        response.set_cookie('channel', channel_name)
        return response

    if channel_name == config.LvyePaySitePayClientConfig.CHANNEL_NAME:
        # 绿野用户中心
        next_url = next_url or url_for('main.index')
        auth_url = build_url(config.HOST_URL + url_for('auth.auth'),
                             next=next_url)
        login_url = build_url(config.UserCenter.PASSPORT_LOGIN_URL,
                              refererUrl=auth_url)
        return redirect(login_url)
    elif channel_name == config.LvyeCorpPaySitePayClientConfig.CHANNEL_NAME:
        user_domain_name = 'lvye_corp'
        # 绿野公司
        form = LvyeCorpLoginForm()
        if form.validate_on_submit():
            username = form.username.data
            password = form.password.data
            domain_user = DomainUser.query.filter_by(
                user_domain_name=user_domain_name, username=username).first()
            if domain_user is not None and domain_user.verify_password(
                    password):
                # login user.
                is_leader = True
                user = User(domain_user.id, domain_user.username,
                            domain_user.username, is_leader, domain_user.phone,
                            channel_name)
                do_login_user(user)
                domain_user.ping()
                next_url = next_url or url_for('main.index')
                return redirect(next_url)
            flash('用户名或密码错误', category='error')
        return render_template('auth/lvye_corp_login.html',
                               channel=channel_name,
                               form=form,
                               next=next_url)
    return render_template('info.html', msg="错误的登录")
示例#2
0
def do_refund(refund_no,
              trade_no,
              refund_fee,
              notify_url,
              dback_notify_url,
              info=None):
    dt = datetime.now()

    info = info if info else "程序退款"
    detail_data = '%s^%s^%s' % (trade_no, refund_fee, info)

    batch_record = dba.getupdate_or_create_alipay_batch_refund_record(
        trade_no, refund_no)
    batch_no = batch_record.batch_no

    params = {
        'service': config.Service.REFUND_NOPWD_URL,
        'partner': config.PID,
        '_input_charset': config.INPUT_CHARSET,
        'sign_type': SignType.MD5,
        'notify_url': notify_url,
        'dback_notify_url': dback_notify_url,
        'batch_no': batch_no,
        'refund_date': dt.strftime('%Y-%m-%d %H:%M:%S'),
        'batch_num': '1',
        'detail_data': detail_data,
    }

    url = build_url(config.GATEWAY_URL, _input_charset=config.INPUT_CHARSET)

    return request(url, params)
示例#3
0
def query_trade(out_trade_no, trade_no=''):
    params = {
        'service': ali_pay.Service.SINGLE_TRADE_QUERY,
        'partner': ali_pay.PID,
        '_input_charset': ali_pay.INPUT_CHARSET,
        'sign_type': SignType.MD5,
        'out_trade_no': out_trade_no,
        'trade_no': trade_no
    }
    url = build_url(ali_pay.GATEWAY_URL, _input_charset=ali_pay.INPUT_CHARSET)

    return request(url, params)
示例#4
0
def do_pay(sn, vas_name, payment_scene, extra_params=None, client_type=None):
    from .constant import WeixinPayType

    result = pay_client.get_payment_param(sn, payment_scene, vas_name, extra_params)
    if not pay_client.is_success_result(result):
        return payment_failed(result, client_type=client_type)

    # echo back vas_name, and payment_type.
    vas_name = result.data['vas_name']
    payment_type = result.data['payment_type']
    params = result.data['params']
    if vas_name == 'ALI_PAY':
        if client_type == RequestClientType.WEIXIN:
            return render_template(get_template("checkout/info", client_type), go_back=True, msg="请在浏览器或支付宝中打开使用支付宝支付。")
        url = params['_url']
        return Response(generate_submit_form(url, params, keep_all=True, excludes={'_url'}))
    elif vas_name == 'WEIXIN_PAY':
        if payment_type == WeixinPayType.NATIVE:
            code_url = params['code_url']
            info = params['_info']
            return render_template("checkout/wx_pay_native.html", code_url=code_url, info=info, sn=sn)
        elif payment_type == WeixinPayType.JSAPI:
            if client_type != RequestClientType.WEIXIN:
                return render_template(get_template("checkout/info", client_type), go_back=True, msg="请在微信中打开使用微信支付。")
            if '_url' in params:
                import urllib
                url = params['_url']
                # FIXME: sn, vas_name exchange
                dest_url = config.HOST_URL + url_for('checkout_entry.pay', sn=vas_name, vas_name=sn, x='')
                redirect_uri = urls.build_url(config.Checkout.WEIXIN_AUTH_REDIRECT_URI, dest_url=dest_url)
                url = url % (urllib.urlencode({'x': redirect_uri})[2:],)
                return redirect(url)
            return render_template("checkout/wx_pay_jsapi.html", params=params, sn=sn)
    elif vas_name == 'LIANLIAN_PAY':
        url = params['_url']
        return Response(generate_submit_form(url, params))
    elif vas_name == 'TEST_PAY':
        url = params['_url']
        return Response(generate_submit_form(url, params))
    elif vas_name == 'ZYT':
        # 自游通余额支付
        url = params['_url']
        params['_sn'] = sn
        return Response(generate_submit_form(url, params, keep_all=True))
    return render_template(get_template("checkout/info", client_type), go_back=True, msg="支付方式错误")
示例#5
0
文件: commons.py 项目: webee/pay
def notify_verify(notify_id):
    if notify_id is None:
        return True
    params = {
        'service': ali_pay.Service.NOTIFY_VERIFY,
        'partner': ali_pay.PID,
        'notify_id': notify_id
    }
    url = build_url(ali_pay.GATEWAY_URL, **params)
    try:
        req = requests.get(url)
        res = req.text
        ok = res == 'true'
        if not ok:
            logger.warn('notify verify: [{0}]'.format(res))
        return ok
    except Exception as e:
        logger.warn(e.message)
    return False
示例#6
0
def pay_param(out_trade_no, subject, body, total_fee, notify_url, return_url):
    params = _get_common_params(out_trade_no, subject, body, total_fee,
                                notify_url)
    params.update({
        'service': ali_pay.Service.DIRECT_PAY_BY_USER,
        'return_url': return_url,
        # 'qr_pay_mode': '2',
        'paymethod': ali_pay.PayMethod.DIRECT_PAY,
        'enable_paymethod':
        'directPay^bankPay^creditCardExpress^debitCardExpress',
        'sign_type': SignType.MD5,
    })

    params['sign'] = signer.sign(params, params['sign_type'])
    params['_url'] = build_url(ali_pay.GATEWAY_URL,
                               _input_charset=ali_pay.INPUT_CHARSET)
    logger.info("request ali pay WEB: {0}".format(params))

    return params