网络编程
位置:首页>> 网络编程>> Python编程>> django实现支付宝支付实例讲解

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

作者:BZ易风  发布时间:2023-08-27 04:45:44 

标签:django,支付宝支付

安装python-alipay-sdk

pip install python-alipay-sdk --upgrade

配置

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

视图函数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':'订单错误'})
# 业务处理 使用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'), # 订单支付
]

来源:https://www.cnblogs.com/yifengs/p/11691423.html

0
投稿

猜你喜欢

  • 这片文章大体概括了一些设计网页中的大问题。希望能给你做下一个网页时给予一些儿启发。1、记住:你能掌控的时间是有限的我仅仅用4秒钟就能浏览完平
  • 在许多用SQL Server实现的新的企业系统设计中,系统设计师需要在给数据结构和管理应用程序逻辑的定位上做出具有关键性意义的决定。SQL
  • ALTER TABLE将表更改为当前字符集。如果在执行ALTER TABLE操作期间遇到重复键错误,原因在于新的字符集将2个键映射到了相同值
  • 早就想用一个系列的文章来写AJAX,让自己头到尾理一遍,更好的掌握基础知识(昨天的面试受打击了,基础知识很重要).要是写的好,也许也可以帮助
  • 数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取
  • 最近一个小项目需要一个星级评分的效果,所以去淘宝偷了一个,但是还得加载YUI很不爽,还是自己动手写一个吧~HTML: <!-
  • FSO中除了可以对驱动器、文件夹的操作以外,功能最强大的就是对文件的操作了。它可以用来记数、内容管理、搜索还可生成动态HTML页面等等。一、
  • 字体的处理在网页设计中无论怎么强调也不为过, 毕竟网页使用来传递信息的, 而最经典最直接的信息传递方式就是文字,&nbs
  • 一个更易读的网站意味着网站使用性的改良以及提供愉悦的阅读体验。我们希望浏览者们能或者这些好处不是吗?这篇文章我们将介绍5个简单的方法让你能提
  • 1.--区分大小写select * from a where a=&rsquo;AbCdE&rsquo; collate C
  • 因此为了节省服务器资源,应该尽可能关闭连接以释放连接所占有的资源,这种关闭记录集的连接而不关闭记录集的技术叫做断开记录集,这个记录集本身则称
  • 最近基于selenium写了一个python小工具,记录下学习记录,自己运行的环境是Ubuntu 14.04.4, Python 2.7,C
  • 一、判断大型网站的标准1、pv(page views)网页的浏览量概念 一个网站所有的页面,在24小时内被访问的总的次数。千万级别,百万级别
  • 第一题:ASP中,VBScript的唯一的数据类型是什么?第二题:在ASP中,VBScript有多种控制程序流程语句,如If…Then, S
  • 当然是可以的,而且非常简单,今天就教大家在ASP中不用模板生成HTML静态页的方法。这里假设有一个htmer.asp动态页面,你想把它生成为
  • 摘要:Oracle和微软都是数据库方面的大厂商,采用两家的产品的企业也不少。今天这篇文章为大家对比Oracle和SQLServer的镜像。标
  • 前言前段时间我有个朋友看到一些小姐姐的照片,想全部下载下来,叫我帮个忙。于是花费了半天给他全部下载了下来。引入库import timeimp
  •  写这个文章绝对是偶然的偶然的机会,前年等一回的 元旦节,和 老婆上街 溜达,猛然想起买上一张福利彩票,结果屁都没有中上,开春第一
  • python修改大数据文件时,如果全加载到内存中,可能会导致内存溢出。因此可借用如下方法,将分件分段读取修改。with open('
  • 从 Google 的一个细节说起:整个虚线框都是“Next”的可点击区域。看似不经意,却直接提升了细节的可用性。其它页码也巧妙地和上面的字母
手机版 网络编程 asp之家 www.aspxhome.com