• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

django实现支付宝支付实例讲解

python 搞代码 4年前 (2022-01-08) 17次浏览 已收录 0个评论

在本篇文章里小编给大家整理的是一篇关于django支付宝支付的代码实例内容,需要的朋友们可以学习下。

安装python-alipay-sdk

 pip install python-alipay-sdk --upgrade

配置

视图函数orders/views.py

 # 订单支付 # /order/pay from alipay import AliPay, ISVAliPay import os from django.conf import settings class OrderPayView(View): def post(self, request): '''支付页面''' # 判断用户是否登录 user = request.user if not user.is_authenticated(): return JsonResponse({'res':0, 'errmsg':'用户尚未登录'}) # 接收订单id order_id = request.POST.get('order_id') # 校验订单id if not order_id: return JsonResponse({'res':1, 'errmsg':'无效的订单id'}) # 查询订单信息 try: order = OrderInfo.objects.get(order_id=order_id, user=user, pay_method=3, order_status=1) except OrderInfo.DoesNotExist: return JsonResponse({'res':2, 'errmsg':'订单错<em style="color:transparent">来源gao.dai.ma.com搞@代*码网</em>误'}) # 业务处理 使用python sdk调用支付宝的支付接口 # 支付宝信息  不能放在settings里 会报错 alipay = AliPay( appid="2016101200665304", app_notify_url=None, # 默认回调url 如果为空的话不能用'' 要用None # 个人私钥 app_private_key_string=os.path.join(settings.BASE_DIR, 'apps/orders/app_private_key.pem'), # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, alipay_public_key_string=os.path.join(settings.BASE_DIR, 'apps/orders/alipay_public_key.pem'), # 加密方式 sign_type="RSA2", # RSA 或者 RSA2 # 沙箱是True 正式环境是False debug=True # 默认False ) # 调用支付接口 # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string 实际地址 # 沙箱地址 https://openapi.alipaydev.com/gateway.do? + order_string 沙箱地址在alipay后面加上dev total_price = order.total_price + order.transit_price # Decimal order_string = alipay.api_alipay_trade_page_pay( out_trade_no=order_id, # 订单id total_amount=str(total_price), # 支付总金额 因为Decimal格式不能序列化 所以先转成字符串 subject='天天生鲜%s'%order_id, return_url=None, notify_url=None # 可选, 不填则使用默认notify url ) # 返回应答 pay_url = 'https://openapi.alipaydev.com/gateway.do?' + order_string return JsonResponse({'res':3, 'pay_url':pay_url})

配置路由urls.py

 from django.conf.urls import url from orders.views import OrderPlaceView, OrderCommitView, OrderPayView urlpatterns = [ url(r'^place$', OrderPlaceView.as_view(), name='place'), # 提交订单页面 url(r'^commit$', OrderCommitView.as_view(), name='commit'), # 提交订单处理 url(r'^pay$', OrderPayView.as_view(), name='pay'), # 订单支付 ]

以上就是django实现支付宝支付实例讲解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:django实现支付宝支付实例讲解
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址