def get_ailpay_url(self, obj): """ 系列化ailpay_url,返回ailpay_url(数据)给前端 :param obj: 当前函数对象 :return: 支付页面 """ # AliPay对象 alipay = AliPay( appid="2016092700609030", # 沙箱的APPID # 异步url:支付宝获取商家传递的notify_url,通过POST进行判断,通知商家是否支付成功, # 另外的用途:用户扫码(没有进行支付),支付宝会生成订单url,用户可以通过此url进行支付或者修改订单 app_notify_url=notify_url, app_private_key_path=private_key_path, # 自己生成的私钥 alipay_public_key_path=ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # debug为true时使用沙箱的url。如果不是用正式环境的url # 同步url:电脑支付页面成功,回跳的url;(支付宝获取商家的return_url,通过GET请求返回部分支付信息) return_url=return_url ) # 请求参数 url = alipay.direct_pay( subject=obj.order_sn, # 订单标题 out_trade_no=obj.order_sn, # 我们商户自行生成的订单号 total_amount=obj.order_mount, # 订单金额 return_url=return_url ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format(data=url) return re_url
def get_alipay_url(self, obj): from MxShop.settings import private_key_path, ali_key_path alipay = AliPay( # 沙箱里面的appid值 appid="2016092800616929", # notify_url是异步的url app_notify_url="http://113.16.255.12:11032/alipay/return/", # 我们自己商户的密钥 app_private_key_path=private_key_path, # 支付宝的公钥 alipay_public_key_path=ali_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, # debug为true时使用沙箱的url。如果不是用正式环境的url debug=True, # 默认False, return_url="http://113.16.255.12:11032/alipay/return/") # 直接支付:生成请求的字符串。 url = alipay.direct_pay( # 订单标题 subject=obj.order_sn, # 我们商户自行生成的订单号 out_trade_no=obj.order_sn, # 订单金额 total_amount=obj.order_mount, ) # 将生成的请求字符串拿到我们的url中进行拼接 re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def retrieve(self, request, *args, **kwargs): """ 重写 获取某个订单的方法 因为 用户在支付的过程中 可能直接关闭支付 那这个时候这个订单即为未支付状态,也需要把支付链接返回 :param request: :param args: :param kwargs: :return: """ instance = self.get_object() # 获取到某个订单实例 alipay = AliPay( appid=app_id, app_notify_url="http://47.105.33.27:8000/alipay_return/", app_private_key_path=private_key, alipay_public_key_path=ali_key, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://47.105.33.27:8000/alipay_return/") url = alipay.direct_pay(subject=instance.order_sn, out_trade_no=instance.order_sn, total_amount=instance.order_mount) # 沙箱环境 re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) serializer = self.get_serializer(instance) ret = serializer.data ret['alipay_url'] = re_url return Response(ret)
def get_alipay_url(self, obj): """ 动态返回alipay_url的值 :param obj: :return: """ alipay = AliPay( appid="2016082100304253", app_notify_url="http://123.206.229.93:8000/alipay/return/", app_private_key_path=alipay_private_key, alipay_public_key_path= alipay_pub_key, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url= "http://123.206.229.93:8000/alipay/return/" # 支付宝付款完成后返回的url ) # 生成支付url url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, # return_url="http://123.206.229.93:8000/" # 返回链接 ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( # 沙箱里面的appid值 appid=ali_appid, # notify_url是异步的url app_notify_url="http://39.107.94.185:8000/alipay/return/", # 我们自己商户的密钥 app_private_key_path=private_key_path, # 支付宝的公钥 alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, # debug为true时使用沙箱的url。如果不是用正式环境的url debug=True, # 默认False, return_url="http://39.107.94.185:8000/alipay/return/") url = alipay.direct_pay( # 订单标题 subject=obj.order_sn, # 我们商户自行生成的订单号 out_trade_no=obj.order_sn, # 订单金额 total_amount=obj.order_mount, # 成功付款后跳转到的页面,return_url同步的url # return_url="http://39.107.94.185:8000/alipay/return/" ) # 将生成的请求字符串拿到我们的url中进行拼接 re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def pay(request): '''封装后''' # 拿出数据校验 conn = get_redis_connection() key = 'payment_{}'.format(request.saas.user.phone) context_string = conn.get(key) if not context_string: return redirect('price') context = json.loads(context_string.decode('utf-8')) # 1.数据库生成交易记录(待支付), order_id = uid(request.saas.user.phone) # 根据手机号生成随机字符串 total_price = context['total_price'] Transaction.objects.create(status=1, order=order_id, user=request.saas.user, price_policy_id=context['policy_id'], count=context['number'], price=total_price) # 生成支付宝链接 ali_pay = AliPay(appid=settings.ALI_APPID, app_notify_url=settings.ALI_NOTIFY_URL, return_url=settings.ALI_RETURN_URL, app_private_key_path=settings.ALI_PRI_KEY_PATH, alipay_public_key_path=settings.ALI_PUB_KEY_PATH) query_params = ali_pay.direct_pay( subject="Saas 系统会员", # 商品简单描述 out_trade_no=order_id, # 商户订单号 total_amount=total_price) pay_url = "{}?{}".format(settings.ALI_GATEWAY, query_params) return redirect(pay_url)
def get_alipay_url(self, obj): alipay = AliPay( # 自己沙箱应用的APPID appid="2016091100484002", # 如果用户没有再浏览器生成的支付订单中支付,而是通过支付宝app进行了订单支付,此时需要指定一个跳转地址。 # app_notify_url:只要用户通过支付宝支付成功,支付宝就会回调这个notify_url app_notify_url="http://114.116.83.180:8000/trades/alipay/redirect/", app_private_key_path=settings.app_private_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是自己生成的应用公钥 alipay_public_key_path=settings.alipay_public_key_path, debug=True, # 默认False, # 如果用户是在浏览器上的支付宝订单页面进行的支付操作,支付完成之后会自动跳转到网站的指定页面return_url。如果用户没有在浏览器上支付,return_url就失效了。 return_url="http://114.116.83.180:8000/trades/alipay/redirect/" # app_notify_url和return_url,只有在支付成功的前提下,支付宝才会回调。 # app_notify_url: 相当于是支付宝给后台发送的一个通知,告诉后台用户已经支付完成了,当后台接收到这个通知之后,必须给支付宝返回一个success结果,告诉支付宝后台已经接收到这个支付结果通知了。 # return_url:就是一个简单的支付宝回调,支付宝只负责回调这个url地址,至于这个url地址做了什么事情,与支付宝就无关了,支付宝也不会关心这个url的返回值。 ) url = alipay.direct_pay(subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount) # 这个re_url就是支付宝提供的一个扫码支付页面的Url re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def pay(request): conn = get_redis_connection() key = 'payment_{}'.format(request.tracer.user.mobile_phone) context_string = conn.get(key) if not context_string: return redirect('price') context = json.loads(context_string.decode('utf-8')) # 1. 数据库中生成交易记录(待支付) # 等支付成功之后,我们需要把订单的状态更新为已支付、开始&结束时间 order_id = uid(request.tracer.user.mobile_phone) total_price = context['total_price'] models.Transaction.objects.create(status=1, order=order_id, user=request.tracer.user, price_policy_id=context['policy_id'], count=context['number'], price=total_price) # 生成支付链接 ali_pay = AliPay(appid=settings.ALI_APPID, app_notify_url=settings.ALI_NOTIFY_URL, return_url=settings.ALI_RETURN_URL, app_private_key_path=settings.ALI_PRI_KEY_PATH, alipay_public_key_path=settings.ALI_PUB_KEY_PATH) query_params = ali_pay.direct_pay( subject="trace rpayment", # 商品简单描述 out_trade_no=order_id, # 商户订单号 total_amount=total_price) pay_url = "{}?{}".format(settings.ALI_GATEWAY, query_params) return redirect(pay_url)
def get_alipay_url(self, obj): ''' :param obj: 为serializer.data :return: ''' alipay = AliPay( # 沙箱的appid appid="2016101200669671", # 这里一定要改为线上服务器的地址 app_notify_url="http://线上服务器地址:8000/alipay/return", # 使用静态文件路径 app_private_key_path=private_key_path, # 使用静态文件路径 alipay_public_key_path= ali_public_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥 # debug为True,适用沙箱接口 debug=True, # 默认False, # 这里一定要改为线上服务器的地址 return_url="http://线上服务器地址:8000/alipay/return") url = alipay.direct_pay(subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay(appid=alipay_appid, app_private_key_path=app_private_key_path, alipay_public_key_path=alipay_public_key_path, app_notify_url=app_notify_url, return_url=return_url, debug=pay_debug_mode) url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = alipay_gateway + "?{data}".format(data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay(appid='2016101200666997', app_notify_url='http://127.0.0.1:8000/alipay/return', app_private_key_path=private_key_path, alipay_public_key_path=ali_pub_key_path, return_url='http://127.0.0.1:8000/alipay/return', debug=True) url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = 'https://openapi.alipaydev.com/gateway.do?{data}'.format( data=url) return re_url
def get_alipayUrl(order_no, pay_mount): alipay = AliPay( appid="2016091100490098", app_notify_url="test.tuobaba.cn:5020/pay/notyfile_return/", app_private_key_path=private_key_path, alipay_public_key_path=ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="test.tuobaba.cn:5020/pay/alipay_return/") url = alipay.direct_pay( subject="测试订单2", out_trade_no=order_no, total_amount=pay_mount, return_url="test.tuobaba.cn:5020/pay/alipay_return/") re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format(data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2016091700530193", app_notify_url="http://neverqaz.cn/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://neverqaz.cn/alipay/return/") url = alipay.direct_pay(subject="跑腿网", out_trade_no=obj.out_trade_no, total_amount=obj.amount) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid=APP_ID, app_notify_url=APP_NOTIFY_URL, app_private_key_path=PRIVATE_KEY_PATH, alipay_public_key_path=ALIPAY_KEY_PATH, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url=RETURN_URL ) url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format(data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2016101000652864", app_notify_url="http://projectsedus.com/", app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://47.92.87.172:8000/alipay/return") url = alipay.direct_pay(subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2021002128633531", app_notify_url="https://api.a2008q.cn/alipay/return/", app_private_key_path=private_key, alipay_public_key_path= ali_public_key, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=False, # 默认False, return_url="https://api.a2008q.cn/alipay/return/") url = alipay.direct_pay(subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount) re_url = "https://openapi.alipay.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2016102300742531", app_notify_url="http://34.87.131.11:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path=alipay_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://34.87.131.11:8000/alipay/return/" ) url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format(data=url) return re_url
def get_alipay_url(self, obj): # SerializerMethodField 字段 以get开头的函数,会自己来查找 alipay = AliPay( appid='2016091000481624', app_notify_url="http://118.24.154.138:8001/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path=ali_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://118.24.154.138:8001/alipay/return/") url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2016091000480234", app_notify_url="http://47.95.213.200:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://47.95.213.200:8000/alipay/return/") url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = "https://openapi.alipaydev.com/gateway.do?{}".format(url) return re_url
def get_alipay_url(self, object): alipay = AliPay( appid="2016091000482340", app_notify_url="http://111.231.88.94:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path=ali_pub_key_path, debug=True, # 默认FALSE return_url="http://111.231.88.94:8000/alipay/return/", ) url = alipay.direct_pay( subject=object.order_sn, out_trade_no=object.order_sn, total_amount=object.order_mount, ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj):#名字其对应了alipay_url--->get_alipay_url alipay = AliPay( appid="2016091700530193", app_notify_url="http://123.206.43.75:8080/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path=ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://123.206.43.75:8080/alipay/return/" ) url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format(data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid=ALI_PAY_APPID, app_notify_url="http://39.106.22.205:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://39.106.22.205:8000/alipay/return/") url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, # "2017020212223", total_amount=obj.order_mount, return_url="http://39.106.22.205:8000/alipay/return/") re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2016101100663368", # 设置签约的appid app_notify_url=ali_return_url, # 异步支付通知url app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug= True, # 默认False, # 设置是否是沙箱环境,True是沙箱环境 return_url=ali_return_url, # 同步支付通知url ) url = alipay.direct_pay(subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(order_sn, order_mount): alipay = AliPay( appid=settings.ALIPAY_APPID, app_notify_url=settings.APP_NOTIFY_URL, app_private_key_path=settings.APP_PRIVATE_KEY_PATH, alipay_public_key_path=settings.ALIPAY_PUBLIC_KEY_PATH, debug=settings.ALIPAY_DEBUG, return_url=settings.RETURN_URL ) url = alipay.direct_pay( subject=order_sn, out_trade_no=order_sn, total_amount=order_mount, ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format(data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="", app_notify_url="http://127.0.0.1:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path=ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False,上线的时候需要更改 return_url="http://127.0.0.1:8000/alipay/return/" ) url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = "https://openapi.alipaydev.com/ .do?{data}".format(data=url) #返回给页面 就可以去支付了 return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2016092700607906", app_notify_url="http://127.0.0.1:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path=ali_pub_key_path, debug=True, # 默认False, return_url="http://127.0.0.1:8000/alipay/return/") url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2016092300579459", app_notify_url="http://127.0.0.1:8000/alipay/retrun", app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://127.0.0.1:8000/alipay/retrun") url = alipay.direct_pay( subject=obj.order_sn, #订单名字 out_trade_no=obj.order_sn, #订单号 total_amount=obj.order_mount, #订单金额 ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): # 此函数将生成支付宝支付页面的url alipay = AliPay( appid="2016093000631244", app_notify_url="http://120.78.170.188:8001/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://120.78.170.188:8001/alipay/return/") url = alipay.direct_pay( subject=obj.order_sn, # 支付对象 out_trade_no=obj.order_sn, # 订单号 total_amount=obj.order_mount, # 总金额 ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2018060160303504", app_notify_url="http://vueshop.mtianyan.cn/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, # debug=True, # 默认False, return_url="http://vueshop.mtianyan.cn/alipay/return/") url = alipay.direct_pay( subject=obj.order_sn, out_trade_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = "https://openapi.alipay.com/gateway.do?{data}".format( data=url) return re_url
def get_alipay_url(self, obj): alipay = AliPay( appid="2016091200490210", app_notify_url="http://115.159.122.64:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path= ali_pub_key_path, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, debug=True, # 默认False, return_url="http://115.159.122.64:8000/alipay/return/") url = alipay.direct_pay( subject=obj.order_sn, out_orders_no=obj.order_sn, total_amount=obj.order_mount, ) re_url = "https://openapi.alipaydev.com/gateway.do?{data}".format( data=url) return re_url