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
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})
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})
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})
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))
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})
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})
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))
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))
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})
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)
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})
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})
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})
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})
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})
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}) # 此处应有支付宝的回调处理,即根据支付结果修改订单支付状态
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})
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})
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})
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})
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})
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})
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
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}})
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})
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})
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})
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})