Пример #1
0
    def get(self, order_id):

        # 构建支付的科幻  AlipayClient
        alipay_client = AliPay(
            appid=ALIPAY_APPID,
            app_notify_url=None,  # 默认回调url
            app_private_key_string=APP_PRIVATE_KEY,
            alipay_public_key_string=ALIPAY_PUBLIC_KEY,  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            sign_type="RSA",  # RSA 或者 RSA2
            debug=False  # 默认False
        )
        # 使用Alipay进行支付请求的发起

        subject = "i9 20核系列 RTX2080"

        # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
        # order_string = alipay_client.api_alipay_trade_page_pay(
        #     out_trade_no="1100000",
        #     total_amount=10000,
        #     subject=subject,
        #     return_url="http://www.1000phone.com",
        #     notify_url="http://www.1000phone.com"  # 可选, 不填则使用默认notify url
        # )

        # 手机网站支付
        order_string = alipay_client.api_alipay_trade_wap_pay(
            out_trade_no="1100001",
            total_amount=100000,
            subject=subject,
            return_url="http://www.1000phone.com",
            notify_url="http://www.1000phone.com"  # 可选, 不填则使用默认notify url
        )

        # 客户端操作

        pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string

        data = {
            "msg": "ok",
            "status": HTTP_OK,
            "data": {
                "pay_url": pay_url,
                "order_id": order_id
            }
        }

        #

        return data
Пример #2
0
def generate_order_payment(order_id):
    """生成支付宝的支付信息"""
    # 获取用户id
    user_id = g.user_id
    # 校验参数,判断订单是否存在
    try:
        order = Order.query.filter(Order.id == order_id, Order.user_id == user_id,
                                   Order.status == 'WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='订单查询错误')
    # 判断订单是否存在
    if order is None:
        return jsonify(errno=RET.NODATA, errmsg='订单不存在')

    # 构造支付宝工具对象   __file__ 当前路径
    alipay = AliPay(
        appid=current_app.config.get('ALIPAY_APPID'),
        app_notify_url=None,  # 默认回调url
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          current_app.config.get('APP_PRIVATE_KEY_PATH')),
        alipay_public_key_path=os.path.join(os.path.dirname(__file__),
                                            current_app.config.get('ALIPAY_PUBLIC_KEY_PATH')),
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,(先配置自己的公钥后,获取支付宝公钥)
        sign_type='RSA',  # RSA 或者 RSA2
        debug=False  # 默认False ,沙箱模式debug=True
    )

    # 支付完成后跳转回的页面路径
    return_url = 'http://' + current_app.config.get('HOST') + ':' \
                 + str(current_app.config.get('PORT')) + '/' + \
                 current_app.config.get('RETURN_URL')
    # 向支付宝发起手机网站支付的请求
    # 手机网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order_id,  # 我们自己的订单编号
        total_amount=str(order.amount / 100.0),  # 订单总金额
        subject='宜居人家租房--%s' % order_id,  # 展示给用户的订单信息
        # return_url='http://127.0.0.1:5000/payComplete.html',  # 支付完成后跳转回的页面路径
        return_url=return_url,  # 支付完成后跳转回的页面路径
        notify_url=None,  # 可选, 不填则使用默认notify url
    )

    # 用户访问的支付宝链接地址
    alipay_url = current_app.config.get('ALIPAY_URL') + '?' + order_string

    # 返回数据
    return jsonify(errno=RET.OK, errmsg='OK', data={'alipay_url': alipay_url})
Пример #3
0
def order_pay(order_id):
    user_id = g.user_id
    #查看订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == 'WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库异常')

    if order_id is None:
        return jsonify(errno=RET.NODATA, errmsg='订单数据有误')

    #构造请求

    app_id = '2016092200568136'
    # post请求,用于最后的检查
    notify_url = 'http://127.0.0.1:8000/pay_result/'
    # get请求,用于页面的跳转展示
    return_url = 'http://127.0.0.1:8000/pay_result/'
    merchant_private_key_path = os.path.join(os.path.dirname(__file__),
                                             'keys/app_private_2048.txt')
    alipay_public_key_path = os.path.join(os.path.dirname(__file__),
                                          'keys/alipay_public_2048.txt')

    alipay_client = AliPay(
        appid=app_id,
        app_notify_url=notify_url,  #支付成功支付宝向这个url发送post请求(校验是否交易完成)
        #return_url=return_url,    #支付成功,跳回来的网站地址
        app_private_key_path=merchant_private_key_path,  #应用的私钥
        alipay_public_key_path=alipay_public_key_path,  #支付宝公钥,验证支付宝回传消息使用
        sign_type='RSA',
        debug=True)

    #发起支付
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  #订单编号
        total_amount=str(order.amount / 100.0),  #总金额
        subject='啦啦啦jizishuo啦啦啦',  #订单标题
        return_url='',  #返回的链接地址
        notify_url=None,  #上边有了
    )

    #拼接支付地址
    pay_url = 'https://openapi.alipaydev.com/gateway.do?{}' + order_string

    return jsonify(errno=RET.OK, errmsg='OK', data={'pay_url': pay_url})
Пример #4
0
def order_pay(order_id):
    """
    发起支付宝支付
    :param order_id:
    :return:
    """

    user_id = g.user_id
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == 'WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单数据有误")

    with open("ihome/api_1_0/key/app_private_key.pem") as f:
        app_private_key_string = f.read()
    with open("ihome/api_1_0/key/alipay_public_key.pem") as f:
        alipay_public_key_string = f.read()

    # 请求定义
    alipay = AliPay(
        appid="2016092500596325",
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",  # RSA2
        debug=True  # 默认False
    )

    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string进行支付
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order_id,  # 订单号
        total_amount=str(order.amount / 100),  # 金额
        subject="租房款项{}".format(order_id),  # 标题
        return_url=
        "http://127.0.0.1:5000/paycomplete.html",  # 支付完成后用户跳转的页面:添加一个过渡页面
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    pay_url = current_app.config["ALIPAY_URL_PREFIX"] + order_string

    return jsonify(errno=RET.OK, errmsg="OK", data={'pay_url': pay_url})
Пример #5
0
def pay(request):
    """
    发起支付
    """
    # 接收参数
    order_sn = request.GET.get("order_sn")
    if order_sn is None:
        return redirect('goods:index')
    user_id = request.session.get("id")
    try:
        # 获取订单信息
        order = Order.objects.get(order_sn=order_sn, user_id=user_id, status=0)
    except Order.DoesNotExist:
        return redirect('cart:index')
    # 得到订单总金额
    money = order.order_money
    # 订单描述
    brief = "新华超市支付"
    # 开始发起支付
    app_private_key_string = open(
        os.path.join(settings.BASE_DIR, "apps/order/private_key.txt")).read()
    alipay_public_key_string = open(
        os.path.join(settings.BASE_DIR,
                     "apps/order/ali_public_key.txt")).read()
    # 创建对象
    alipay = AliPay(
        appid="2016092300577273",
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False
    )

    # 发起支付
    # 手机网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.order_sn,  # 订单号
        total_amount=str(money),  # 总金额
        subject=brief,
        return_url="http://127.0.0.1:8005/order/success/",
        notify_url=None  # 可选, 不填则使用默认notify url
    )
    # 成功就跳转到支付链接
    return redirect(
        "https://openapi.alipaydev.com/gateway.do?{}".format(order_string))
Пример #6
0
def order_pay(order_id):
    """发起支付宝支付"""
    user_id = g.user_id
    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单信息有误")
    path = os.path.join(os.path.dirname(__file__), "keys",
                        "app_private_key.pem")

    print(open(path).read())
    # 创建支付宝sdk的工具对象
    alipay_client = AliPay(
        appid="2021000117601245",
        app_notify_url=None,  # the default notify path
        app_private_key_string=open(
            os.path.join(os.path.dirname(__file__), "keys",
                         "app_private_key.pem")).read(),
        # alipay public key, do not use your own public key!
        alipay_public_key_string=open(
            os.path.join(os.path.dirname(__file__), "keys",
                         "alipay_public_key.pem")).read(),
        sign_type="RSA2",  # RSA or RSA2
        debug=True,  # False by default
        # config=AliPayConfig(timeout=15)  # optional, request timeout
    )

    # Pay via WAP, open this url in your browser: https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,
        total_amount=str(order.amount / 100.0),
        subject=f"爱家租房{order.id}",
        return_url="http://127.0.0.1:5000/payComplete.html",
        notify_url=None  # this is optional
    )

    # 构建让用户跳转的支付宝链接地址
    pay_url = constants.ALIPAY_URL_PREFIX + order_string
    print("order_string", order_string)
    return jsonify(errno=RET.OK, errmsg="OK", data={"pay_url": pay_url})
Пример #7
0
def order_pay(order_id):
    """发起支付宝支付"""
    user_id = g.user_id

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单数据有误")

    private_path = os.path.join(os.path.dirname(__file__),
                                "keys/app_private_2048.txt")
    public_path = os.path.join(os.path.dirname(__file__),
                               "keys/alipay_public_2048.txt")

    app_private_key_string = open(private_path).read()
    alipay_public_key_string = open(public_path).read()

    # 创建支付宝sdk的工具对象
    alipay_client = AliPay(
        appid="2016101600703693",
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,  # 私钥
        alipay_public_key_string=
        alipay_public_key_string,  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        sign_type="RSA2",
        debug=True  # 默认False
    )

    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额
        subject=u"爱家租房 %s" % order.id,  # 订单标题
        return_url="http://127.0.0.1:5000/payComplete.html",  # 返回的连接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建让用户跳转的支付连接地址
    pay_url = str(constants.ALIPAY_URL_PREFIX + order_string)
    return jsonify(errno=RET.OK, errmsg="OK", data={"pay_url": pay_url})
Пример #8
0
def pay(request):
    # 验证用户是否登录
    if not request.session.get("user_id"):
        return redirect('com:首页')

    # 获取用户id
    user_id = request.session.get("user_id")
    # 查询订单总金额,筛选该用户当前未支付的指定订单号的商品表
    try:
        orderNum = request.GET.get("orderNum")
    except:
        return redirect('com:首页')
    # print(orderNum)
    order = OrderInformation.objects.get(orderNum=orderNum,
                                         UserKey=user_id,
                                         orderState=0)
    money = order.money
    order.save()
    # 初始化 唯一密钥
    app_private_key_string = open(
        os.path.join(settings.BASE_DIR,
                     'apps/orderForm/public_key.text')).read()
    # 公开密钥
    alipay_public_key_string = open(
        os.path.join(settings.BASE_DIR,
                     'apps/orderForm/ali_public_key.text')).read()

    alipay = AliPay(
        appid="2016092300577288",
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True,  # 默认False
    )

    # 发起支付
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=orderNum,
        total_amount=str(money),
        subject="订单描述内容",
        return_url="http://127.0.0.1:8088/add/pay_all/?",  # 返回地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )
    return redirect(
        "https://openapi.alipaydev.com/gateway.do?{}".format(order_string))
Пример #9
0
def pay(request):
    # 接收请求中order_sn
    order_id = request.GET.get("order_id")
    if order_id is None:
        return redirect("cart:cart")

    brief = "sam超市支付"
    user_id = request.session.get("id")
    # 查询订单信息
    try:
        order = OrderInfo.objects.get(order_id=order_id,
                                      user_id=user_id,
                                      order_status=0)
    except OrderInfo.DoesNotExist:
        return redirect("goods:index")

    app_private_key_string = open(
        os.path.join(settings.BASE_DIR, "apps/order/private_key.txt")).read()
    alipay_public_key_string = open(
        os.path.join(settings.BASE_DIR,
                     "apps/order/ali_public_key.txt")).read()

    # 创建对象
    alipay = AliPay(
        appid="2016092300576142",
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False
    )
    # 发起支付
    # 手机网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.order_id,  # 订单号
        total_amount=str(order.payfor),  # 总金额
        subject=brief,
        return_url="http://127.0.0.1:8001/order/success/",
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 跳转到支付链接
    # return HttpResponse("https://openapi.alipaydev.com/gateway.do?{}".format(order_string))
    return redirect(
        "https://openapi.alipaydev.com/gateway.do?{}".format(order_string))
Пример #10
0
def order_pay(order_id):

    user_id = g.user_id

    # 判断订单号,用户是否是当前用户,及订单的状态是否是处于待支付状态
    try:
        order = Order.query.filter(Order.id == order_id, Order.user_id == user_id, Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="order pay Order db error")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="order pay nodata")

    with open(os.path.join(os.path.dirname(__file__), "keys/app_private_key.pem")) as f:
        app_private_key_string = f.read()

    print('path:', os.path.join(os.path.dirname(__file__), "keys/alipay_public_key.pem"))
    with open(os.path.join(os.path.dirname(__file__), "keys/alipay_public_key.pem")) as f:
        alipay_public_key_string = f.read()

    # 创建支付宝sdk的工具对象
    alipay_client = AliPay(
        appid="2021001127677101",
        app_notify_url=None,  # 默认回调url
        # 可以适应不同的操作系统
        app_private_key_string=app_private_key_string,  # 私钥
        alipay_public_key_string=alipay_public_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False
)

    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额
        subject=u"爱家租房订单编号: %s" % order.id,  # 订单标题
        return_url="http://127.0.0.1:5000/payComplete.html",  # 返回的连接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建让用户跳转的支付连接地址
    pay_url = constants.ALIPAY_URL_PREFIX + order_string
    return jsonify(errno=RET.OK, errmsg="OK", data={"pay_url": pay_url})
Пример #11
0
def ali_order_pay(order_id):
    user_id = g.user_id
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == 'WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg=u'订单查询异常')

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg=u'无效的订单号')

    # 初始化
    app_private_key_path = os.path.join(os.path.dirname(__file__),
                                        'keys/app_private_key.pem')
    alipay_public_key_path = os.path.join(os.path.dirname(__file__),
                                          'keys/alipay_public_key.pem')

    try:
        alipay_client = AliPay(
            appid='2016092000556267',
            app_notify_url='http://127.0.0.1',  # 默认回调url
            app_private_key_path=app_private_key_path,
            # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            alipay_public_key_path=alipay_public_key_path,
            sign_type='RSA2',  # RSA 或者 RSA2
            debug=True  # 默认False
        )

        # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
        order_string = alipay_client.api_alipay_trade_wap_pay(
            out_trade_no=order.id,
            total_amount=str(order.amount / 100.0),
            subject=u'爱家租房_%d' % order.id,
            return_url='http://127.0.0.1:5000/pay_complete.html',
            # app_notify_url=''  # 可选, 不填则使用默认notify url
        )
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg=u'第三方支付异常')

    pay_url = constants.ALIPAY_PATH_PREFIX + order_string

    return jsonify(errno=RET.OK, errmsg='OK', pay_url=pay_url)
Пример #12
0
def order_pay(order_id):
    """
    发起支付宝支付
    :param order_id:
    :return:
    """
    user_id = g.user_id

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == 'WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库异常')

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg='订单数据有误')

    # 创建支付宝sdk的工具对象
    alipay_client = AliPay(
        appid='2016092300580591',
        app_notify_url=None,  # 默认回调url
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          'keys/app_private_key.pem'),  # 私钥
        alipay_public_key_path=os.path.join(
            os.path.dirname(__file__),
            'keys/alipay_public_key.pem'),  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        sign_type='RSA2',  # RSA 或者 RSA2
        debug=True  # 默认False
    )

    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额
        subject=u'爱家租房 %s' % order.id,  # 订单标题
        return_url='http://127.0.0.1:5000/payComplete.html',  # 返回的连接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建让用户跳转的支付连接地址
    pay_url = constants.ALIPAY_URL_PREFIX + order_string
    return jsonify(errno=RET.OK, errmsg='OK', data={'pay_url': pay_url})
Пример #13
0
def generate_order_payment(order_id):
    """生成支付宝的支付信息"""
    user_id = g.user_id
    # 校验参数
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(error_code=RET.DBERR, errmsg="获取订单信息有误")

    if order is None:
        return jsonify(error_code=RET.NODATA, errmsg="订单状态有误")

    # 构造支付宝的工具对象
    alipay_client = AliPay(
        appid=current_app.config.get("ALIPAY_APPID"),
        app_notify_url=None,  # 默认支付宝通知url
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          "keys/app_private_key.pem"),
        alipay_public_key_path=os.path.join(
            os.path.dirname(__file__),
            "keys/alipay_public_key.pem"),  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False, 如果是沙箱模式,debug=True
    )

    # 向支付宝发起手机网站支付的请求
    # 手机网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string

    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order_id,  # 我们自己的订单编号
        total_amount=str(order.amount / 100.0),  # 订单总金额
        subject=u"爱家租房-%s" % order_id,  # 展示给用户的订单信息
        return_url="http://127.0.0.1:5000/payComplete.html",  # 支付完成后跳转回的页面路径
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 用户要访问的支付宝链接地址
    alipay_url = current_app.config.get("ALIPAY_URL") + "?" + order_string

    return jsonify(error_code=RET.OK,
                   errmsg="OK",
                   data={"alipay_url": alipay_url})
Пример #14
0
def pay_to(order_id):
    """支付行为"""
    user_id = g.user_id
    # 在数据库中根据订单号查询订单状态为等待支付状态的订单
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()

    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="无法获取订单数据")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单数据有误")
    # 支付宝 初始化
    app_private_key_string = open(
        os.path.join(os.path.dirname(__file__),
                     "keys/app_private_key.pem")).read()
    alipay_public_key_string = open(
        os.path.join(os.path.dirname(__file__),
                     "keys/alipay_public_key.pem")).read()

    # 创建支付宝SDK工具对象
    alipay = AliPay(
        appid="2016101100661322",
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True,  # 默认False
    )
    # 手机网站支付 沙乡王之:https://openapi.alipaydev.com/gateway.do + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 订单金额
        subject=u"爱家租房 %s" % order.id,  # 订单标题
        return_url="http://192.168.72.147:5000/paycomplete.html",
        notify_url=None  # 可选, 不填则使用默认notify url
    )
    # 构建让用户条状的支付连接地质
    pay_url = constants.ALIPAY_URL_PREFIX + order_string
    return jsonify(errno=RET.OK, errmsg="ok", data={"pay_url": pay_url})
Пример #15
0
def order_pay(order_id):
    """发起支付宝支付"""
    user_id = g.user_id

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == 'WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logget.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg='数据库异常')

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg='订单数据有误')

    # 创建支付宝sdk的工具对象
    alipay_client = AliPay(
        appid="2016092600601590",
        app_notify_url=None,  # 默认回调url
        #                                         获取当前文件的目录
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          'keys/app_private_key.pem'),  # 私钥
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_path=os.path.join(os.path.dirname(__file__),
                                            'keys/alipay_public_key.pem'),
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True,  # 默认False
    )

    # 手机网站支付(生产环境),需要跳转到https://openapi.alipay.com/gateway.do? + order_string
    # 手机网站支付(沙箱环境),需要跳转到https://openapi.alipaydev.com/gateway.do + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额,单位:元
        subject=u"客舍民宿: %s" % order.id,  # 订单标题
        return_url="http:127.0.0.1:5000/payComplete.html",  # 支付成功,返回连接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建让用户跳转的支付宝地址
    pay_url = constants.ALIPAY_URL_PREFIX + order_string

    return jsonify(errno=RET.OK, errmdg='OK', data={"pay_url": pay_url})
Пример #16
0
def order_pay():
    user_id = g.user_id

    req_json = request.get_json()
    if not req_json:
        return jsonify(errno=RET.PARAMERR, errmsg='没有传参')

    order_id = req_json.get('order_id')
    if not all([order_id]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不全')

    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == 'WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库异常')

    if not order:
        return jsonify(errno=RET.DBERR, errmsg='订单无效')


#     利用第三方sdk构造支付链接
    alipay_client = AliPay(
        appid='2016092500592996',
        app_notify_url=None,
        app_private_key_path=os.path.join(
            os.path.dirname(__file__) + '/keys/app_private_key.pem'),
        alipay_public_key_path=os.path.join(
            os.path.dirname(__file__) + '/keys/alipay_public_key.pem'),
        sign_type='RSA2',
        debug=True)

    pay_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order_id,
        total_amount=str(order.amount / 100.0),
        subject='用车订单:%s' % order_id,
        return_url='http://192.168.199.197:5000/payresult.html',
        notify_url=None)

    pay_url = ALIPAY_DEV_URL + pay_string

    return jsonify(errno=RET.OK, errmsg='构造支付url成功', data={'pay_url': pay_url})
Пример #17
0
def order_pay(order_id):
    '''发起支付宝支付'''
    # 获取参数
    user_id = g.user_id

    # 校验订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == 'WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")

    if not order:
        return jsonify(errno=RET.NODATA, errmsg='订单信息有误')

    # 处理支付接口
    alipay = AliPay(
        appid='2016092900620771',  # 应用ID
        app_notify_url=None,  # 默认回调url
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          'keys/app_private_key.pem'),  #应用私钥
        alipay_public_key_path=os.path.join(
            os.path.dirname(__file__), 'keys/alipay_public_key.pem'),  #支付宝公钥
        sign_type="RSA2",  # RSA 或者 RSA2 -- 这里注意一点:2018年1月5日后创建的应用只支持RSA2的格式;
        debug=True)  # 默认False -- 设置为True则是测试模式

    # 手机网站支付
    total_amount = str(order.amount / 100.0)
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order_id,  # 订单编号
        total_amount=total_amount,  # 总金额,以元为单位的字符串
        subject='爱家租房_{}'.format(order_id),  # 订单标题
        return_url="http://127.0.0.1:5000/orders.html",  # 返回的链接地址
        notify_url=None)  # 可选, 不填则使用默认notify url
    # 合成跳转地址
    pay_url = constants.API_PAY_ADDRESS + order_string

    return jsonify(errno=RET.OK, errmsg='OK', data={'pay_url': pay_url})


# 此处应有支付宝的回调处理,即根据支付结果修改订单支付状态
Пример #18
0
def order_pay(order_id):
    user_id = g.user_id

    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg=error_map[RET.DBERR])

    if not order:
        return jsonify(errno=RET.PARAMERR, errmsg="订单信息错误")

    app_private_key_path = os.path.join(os.path.dirname(__file__),
                                        "keys/app_private_key.pem")
    with open(app_private_key_path) as fp:
        app_private_key = fp.read()

    alipay_public_key_path = os.path.join(os.path.dirname(__file__),
                                          "keys/alipay_public_key.pem")
    with open(app_private_key_path) as fp:
        app_public_key = fp.read()
    alipay_client = AliPay(appid="2016101800719355",
                           app_notify_url=None,
                           app_private_key_string=app_private_key,
                           alipay_public_key_string=app_public_key,
                           sign_type="RSA2",
                           debug=True)
    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额
        subject=u"爱家租房 %s" % order.id,  # 订单标题
        return_url="http://127.0.0.1:5000/paycomplete.html",  # 返回的连接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建让用户跳转的支付连接地址
    pay_url = ALIPAY_URL_PREFIX + order_string
    return jsonify(errno=RET.OK,
                   errmsg=error_map[RET.OK],
                   data={"pay_url": pay_url})
Пример #19
0
def order_pay(order_id):
    '''订单支付(支付宝)'''
    user_id = g.user_id

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")
    if not order:
        return jsonify(errno=RET.NODATA, errmsg="订单错误")

    # 业务处理:使用python sdk调用支付宝的支付接口
    # 创建支付宝工具对象
    alipay = AliPay(
        appid="2016102200736882",  # 应用id
        app_notify_url=None,  # 默认回调url
        app_private_key_string=open(
            os.path.join(os.path.dirname(__file__),
                         'keys/rsa_private_key.pem')).read(),
        alipay_public_key_string=open(
            os.path.join(os.path.dirname(__file__),
                         'keys/alipay_public_key.pem')).read(),
        sign_type="RSA2",  # RSA 或 RSA2
        debug=True  # 默认false
    )

    # 调用支付接口
    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单id
        total_amount=str(order.amount / 100.0),  # 支付总金额
        subject=u'爱家租%s' % order_id,  # 标题
        return_url="http://127.0.0.1:5000/payComplete.html",
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 返回应答
    pay_url = 'https://openapi.alipaydev.com/gateway.do?' + order_string
    return jsonify(errno=RET.OK, errmsg="ok", data={"pay_url": pay_url})
Пример #20
0
def order_pay(order_id):
    """发起支付宝支付"""
    user_id = g.user_id

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单数据有误")

    app_private_key_string = open(
        os.path.join(os.path.dirname(__file__), 'keys',
                     'app_private_key.pem')).read()
    alipay_public_key_string = open(
        os.path.join(os.path.dirname(__file__), 'keys',
                     'alipay_public_key.pem')).read()

    alipay_client = AliPay(
        appid=constants.ALIPAY_APPID,
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True,  # 默认False
    )
    # 手机网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100),  # 总金额
        subject="爱家租房 %s" % order.id,  # 订单标题
        return_url=constants.ALIPAY_RETURN_URL,  # 返回的链接地址
        # notify_url="https://example.com/notify"  # 可选, 不填则使用默认notify url
    )
    # 构建让用户跳转的支付连接地址
    pay_url = constants.ALIPAY_URL_PREFIX + order_string
    return jsonify(errno=RET.OK, errmsg="OK", data={"pay_url": pay_url})
Пример #21
0
def order_pay(order_id):
    '''
    发起支付宝支付
    :param order_id: 传入的订单id
    :return: 返回支付宝的链接地址
    '''
    user_id = g.user_id
    # 判断订单状态
    try:
        order = Order.query.filter(Order.order_id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单数据有误")

    # todo:创建支付宝sdk的工具对象
    alipay = AliPay(
        appid=constants.ALIPAY_APPID,
        app_notify_url=None,  # 默认回调url
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          "keys/app_private_key.pem"),  # 私钥
        alipay_public_key_path=os.path.join(os.path.dirname(__file__),
                                            "keys/alipay_public_key.pem"),
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=constants.ALIPAY_DEBUG  # 默认False
    )
    # todo:手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.order_id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额
        subject=u"爱家租房 %s" % order.order_id,  # 订单标题
        return_url=constants.ALIPAY_RETURN_URL,  # 返回的连接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建让用户跳转的支付连接地址
    pay_url = constants.ALIPAY_PAY_URL + order_string
    return jsonify(errno=RET.OK, errmsg="OK", data={"pay_url": pay_url})
Пример #22
0
def order_pay(order_id):
    """发起支付宝支付"""
    user_id = g.user_id

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单数据有误")

    # 创建支付宝sdk的工具对象
    alipay_client = AliPay(
        appid="2016102600767752",
        app_notify_url=None,  # 默认回调url
        app_private_key_string="""-----BEGIN RSA PRIVATE KEY-----
        MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDuSCQb0S02RaZFYPs1TytTkYNamgD3Uqf0udxTKigR0GRabb4ovI3Nwjs/i8b4PqC5wFq7LzADmwRoaquve418uaAzFfrNva/a6hzEWtSw31R+fYpTStEvHfnJxtU7EhfpkoU1+C68tMfW4QEIQG/IjlZmdNggkpAC6I4Aeqbk2jooQZnIL3UsJ2sZ2UeBg/XgJJU4qVeTXMyS5mvdfPECWDjfCY7J/FLNnSPfZH4NE1+IllIdiAEQ1U3Hlyau6tVWUik9HMFJJldLD44iA08fvliShAOnzpHIitthMdFFCtnCcvhbCbpe5eN/9n4DocvRu660n3YfU/5Jp3Ci4CBAgMBAAECggEBAIREWnZhS3wv7O6dNJ9bZ3rzF7I/Q3XBGYoynAfcN2TBYtUjLOyQKcIYpiaKjEl527GU7UdWHyRnWq77ov4eCppYwV8vOQcTCONJnPfOQMoYpFs+4hT9Oo1kFF+Y9QaJ+0rwdMXrMcsFCJn7XZbwu15wgXNE2i0xP35SnljdKq/hWwTMZI5y9uL0pVVlKxxT+7clUg170dS3qRvZv60wvhFBHkySog5xsD2a+4ayLLr8q9dR9bjJGVlGn45CfoAgDt8v80a6HxFANb9C6BkuI9dgdUwPIdn2zCiIuwf1Mc7u7Ylavcsu2bkGToUzTp9sfRfwfQ2fjOd2FuICOSYcrbECgYEA4vjeKTTleIY9TMmzXp4TSFganGbt5v1KNKbCHyJzWVLI7pMd66aHHtY0hEAkADscn0s0SZYbkHFQ3JPzzNkZdkfnwjQGlwp3NKlofv4/+EZ27p2V7phXAgUWwtL3sjj9gOoMQlB9th45bJacuMwb/9KgsfYYZEu9TlFxT+jeC/UCgYEA3MEooORi51rzMh99qNcPu22FFgLG8H2GDTa4DXp+ZBLdkp8Q7SX6oBejcWbBdd8MiAs1nUdeZ2Y7R6Ikkxr2sN595d5bnvp6rAcAcuBUFlbsZygHRKDZgrSLpqf4saBzbJYWIxnGOO9H1cfGzf15SqBvtm+C8p08OKi5lJ8Ptt0CgYAbXByLoxC2QphJFVdF5JA2fEhY6h9rZMT5K9Dip+h3r/8Ao0NMELrhALk75+9vB7EfkpUu+aVA+CfjLwKIgvMKywgo5NSWiHBuLK2oAUX8y6GyidR0+nAikjJ4Ma4iEbSdQZlQtRsyRNpvOIiTzibh46XzTdMK5AZh1nduRofdsQKBgBCp1/pFIx4ZpG/tJpwfF8XrH3eo4AF5SCwpLD2AOJgvQGB391wfWMrK3gCKZCIUoyqFxhdIMt0VP3ZJy/76sxJoyRIX9cyLVcU0hhkly9Mf3ppu0BWjGqgeHsiGt2QZG31f2u3tXSQhE8gUW3JjJsu2Tphz1Guh6NDSE6gfVZ1VAoGAHgB20ihtMr1JKah2AQFyQQQimLpF0nAt8ATTm/qz66NYla5kTJlJ8BgCMlg3vidhZrivTjPDjpEuGf7XorH2MpIqng0ml91BOBR4St3P2GNLF809WWJzjZF3L0F2xFWzRRE7/a4YTHiUirq1EJgaTMo/AQB1p/CgIEpOoHsNRhY=
        -----END RSA PRIVATE KEY-----""",  # 私钥
        alipay_public_key_string="""-----BEGIN PUBLIC KEY-----
        MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiP+d4l/WHrnKvF38gwRxnmLNdDTuUskj2qQvLcY2z4hqo4ltfYPJh+OpHNztq5ygdclu2b80EnFykfJUEW+VYbPGrTQKkFE7CNadoXkRz8bxm8EavTWyO/PzhhseGe84L2UL4S3fuOYos7E1Ht++DLIzb+cTSqO/ckLzvD4wawoRN7wMiA8rbP6rhfGY+oqSALxvsghM5iXzsbaqJRfQ3MztG7LRoebiktu0wySRotiX1izyawz6WByTfxGnOJn4Y18bQ+O69vF/17j0U8sfw0HhzZySV3M+wza0/5Ugc9QVtNCXPKN8esfu+lPsgdEX/yZNYCksaMdaVKGlNW3quQIDAQAB
        -----END PUBLIC KEY-----""",
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False
    )

    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额
        subject=u"爱家租房 %s" % order.id,  # 订单标题
        return_url="http://127.0.0.1:7777/payComplete.html",  # 返回的连接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建让用户跳转的支付连接地址
    pay_url = constants.ALIPAY_URL_PREFIX + order_string
    return jsonify(errno=RET.OK, errmsg="OK", data={"pay_url": pay_url})
Пример #23
0
def order_pay(order_id):
    """
    发起支付宝支付

    :param order_id: 订单编号
    :return:
    """
    user_id = g.user_id

    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(re_code=RET.DBERR, msg='数据库异常')

    if order is None:
        return jsonify(re_code=RET.NODATA, msg='订单数据有误')

    # 创建支付宝sdk对象
    alipay = AliPay(
        appid="2016091500517596",
        app_notify_url=ALIPAY_RETURN_URL + "api/1.0/order/complete",  # 默认回调url
        app_private_key_path=PRIVATE_KEY_PATH,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_path=PUBLIC_KEY_PATH,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False
    )

    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.id,
        total_amount=str(order.amount / 100.0),
        subject="爱家租房 {} ".format(order.id),
        return_url=ALIPAY_RETURN_URL + "payComplete.html",
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建支付宝付款链接
    pay_url = constants.ALIPAY_URL_PREFIX + order_string
    return jsonify(re_code=RET.OK, msg='OK', data={"pay_url": pay_url})
Пример #24
0
def order_pay(order_id):
    """支付宝订单支付
    @param order_id: 订单编号
    """
    user_id = g.user_id

    # 创建支付宝对象
    alipay = AliPay(
        appid="2016101700707698",
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          'keys/app_private_key.pem'),
        alipay_public_key_path=os.path.join(os.path.dirname(__file__),
                                            'keys/alipay_public_key.pem'),
        sign_type="RSA2",
        app_notify_url=None,
        debug=True)

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库异常')

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg='订单不存在')

    # 手机网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.id,
        total_amount=str(order.amount / 100.0),
        subject=f'爱家租房-{order.id}',
        timeout_express='15m',
        return_url="http://127.0.0.1:5000/payComplete.html",
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建支付宝支付链接, 发送给用户
    pay_url = constants.ALIPAY_URL_PREFIX + order_string

    return jsonify(errno=RET.OK, errmsg='OK', data={'pay_url': pay_url})
    def get_payment_params(self, payment_params):
        alipay = AliPay(
            debug=settings.DEBUG,
            appid=resources.get_alipay_app_id(),
            app_notify_url=urlmapper.get_url('ALIPAY_CALLBACK_URL'),
            app_private_key_path=resources.get_viastelle_pri_key(),
            alipay_public_key_path=resources.get_viastelle_pub_key(),
        )

        mobile_payment_params = alipay.api_alipay_trade_wap_pay('Viastelle products',
                                                                payment_params['order_id'],
                                                                payment_params['total_price'],
                                                                resources.get_callback_url())
        self.logger_info.info(mobile_payment_params)

        mweb_payment_params = payment_util.get_payment_alipay_mweb(mobile_payment_params)
        param_result = {'mobile_web_payment_params': mweb_payment_params}

        return param_result
Пример #26
0
def order_pay(request):
    """发起支付宝支付"""
    data = json.loads(request.body.decode())
    order_id = data['order_id']
    # 判断订单状态
    try:
        order = Order.objects.filter(id=order_id).first()
    except Exception as e:
        return JsonResponse({"err": "数据库异常"})

    if order is None:
        return JsonResponse({"err": "订单数据有误"})

    # 创建支付宝sdk的工具对象
    app_private_key_string = open(
        os.path.join(os.path.dirname(__file__),
                     "key\\app_private_key.pem")).read()
    alipay_public_key_string = open(
        os.path.join(os.path.dirname(__file__),
                     "key\\alipay_public_key.pem")).read()
    alipay_client = AliPay(
        appid="2016092500594174",
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False
    )

    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额
        subject=u"爱家租房 %s" % order.id,  # 订单标题
        return_url="https://www.baidu.com",  # 返回的链接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 构建让用户跳转的支付连接地址
    pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string
    return JsonResponse({"data": {"pay_url": pay_url}})
Пример #27
0
def order_pay():
    """订单支付页面(给用户返回支付宝的支付链接)"""
    user_id = g.user_id
    # 获取订单id
    order_id = request.get_json().get('order_id','')
    if not order_id:
        return jsonify(errno=RET.DATAERR, errmsg=u'无效订单id')

    try:
        order = Order.query.filter_by(id=order_id,user_id=user_id,status='WAIT_PAYMENT').first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR,errmsg=u'查询数据异常')

    if not order:
        return jsonify(errno=RET.DATAERR, errmsg=u'订单异常')

    # 构造支付宝链接

    alipay = AliPay(
        appid="2016091800536571",  # 应用id
        app_notify_url="http://ihome.ygege.com.cn/api/v1.0/order/pay/result",  # 默认回调url
        app_private_key_path=os.path.join(os.path.dirname(__file__), 'keys/app_private_key.pem'),
        alipay_public_key_path=os.path.join(os.path.dirname(__file__), 'keys/alipay_public_key.pem'),
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False
    )

    # 调用支付接口
    # 手机网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单id
        total_amount=str(order.amount/100),  # 支付总金额
        subject=u'爱家订单支付-%s'.encode('utf8')  %order_id,
        return_url=None,
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 返回应答
    pay_url = 'https://openapi.alipaydev.com/gateway.do?' + order_string
    return jsonify(errno=RET.OK, data={'pay_url':pay_url})
Пример #28
0
def to_alipay(order_id):
    """发起支付宝支付"""
    # 获取用户id
    user_id = g.user_id
    # 校验订单
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单不存在")

    # 创建支付宝支付对象
    alipay = AliPay(
        appid="2016101300676658",
        app_notify_url=None,  # 默认回调url
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          "keys/app_private_key.pem"),
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_path=os.path.join(os.path.dirname(__file__),
                                            "keys/alipay_public_key.pem"),
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True  # 默认False
    )

    # 手机网站支付,需要跳转到
    # https://openapi.alipaydev.com/gateway.do? + order_string
    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单id
        total_amount=str(order.amount / 100.0),  # 订单金额
        subject=u"爱家租房 %s " % order.id,  # 订单标题
        return_url="https://127.0.0.1:5000/orders.html",  # 返回的url地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )

    # 拼接支付宝网址
    alipay_url = constants.ALIPAY_URL + order_string
    return jsonify(errno=RET.OK, errmsg="ok", data={"pay_url": alipay_url})
Пример #29
0
def order_pay(order_id):
    """发起支付宝支付"""
    user_id = g.user_id
    # user_id = 7
    # app_private_key_string = open("./keys\keysapp_private_key").read()
    # alipay_public_key_string = open("./keys/alipay_public_key").read()

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单数据有误")

    # 创建支付宝sdk的工具对象
    alipay = AliPay(
        appid="2016110400791021",
        app_notify_url=None,  # 默认回调url
        app_private_key_string=app_private_key_string,
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",  # RSA 或者 RSA2
        debug=True,  # 默认False
        config=AliPayConfig(timeout=15)  # 可选, 请求超时时间
    )

    order_string = alipay.api_alipay_trade_wap_pay(
        out_trade_no=1111,  # 订单编号
        total_amount=str(8000000 / 100.0),  # 总金额
        subject=u"爱家租房 %s" % 1111,  # 订单标题
        return_url="http://www.baidu.com",  # 返回的连接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )
    pay_url = 'https://openapi.alipaydev.com/gateway.do?' + order_string
    print(pay_url)
    # 构建让用户跳转的支付连接地址
    return jsonify(errno=RET.OK, errmsg="OK", data={"pay_url": pay_url})
Пример #30
0
def order_pay(order_id):
    '''发送支付宝支付'''
    user_id = g.user_id

    # 判断订单状态
    try:
        order = Order.query.filter(Order.id == order_id,
                                   Order.user_id == user_id,
                                   Order.status == "WAIT_PAYMENT").first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if order is None:
        return jsonify(errno=RET.NODATA, errmsg="订单数据有误")

    # 创建支付宝sdk的工具对象
    alipay_client = AliPay(
        appid="2016092700604478",
        app_notify_url=None,
        # 拼接路径
        app_private_key_path=os.path.join(os.path.dirname(__file__),
                                          "keys/app_private_key.pem"),
        alipay_public_key_path=os.path.join(
            os.path.dirname(__file__),
            "keys/alipay_public_key.pem"),  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥
        sign_type="RSA2",  # RSA 或者 RSA2
        # 沙箱环境
        debug=True  # 默认False
    )

    # 手机网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
    order_string = alipay_client.api_alipay_trade_wap_pay(
        out_trade_no=order.id,  # 订单编号
        total_amount=str(order.amount / 100.0),  # 总金额
        subject=u"爱家租房 %s" % order.id,  # 订单标题
        return_url="http://192.168.0.112:8000/payComplete.html",  # 返回的链接地址
        notify_url=None  # 可选, 不填则使用默认notify url
    )
    # 构建让用户跳转的支付链接地址
    pay_url = constants.ALIPAY_URL_PREFIX + order_string
    return jsonify(errno=RET.OK, errmsg="OK", data={"pay_url": pay_url})