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


Posted in Python onOctober 17, 2019

安装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'), # 订单支付

]

以上就是本次介绍的相关知识点以及实例代码,更多内容可以参考三水点靠木相关栏目。

Python 相关文章推荐
在漏洞利用Python代码真的很爽
Aug 26 Python
详细解读Python中的__init__()方法
May 02 Python
python中的错误处理
Apr 10 Python
解决python3爬虫无法显示中文的问题
Apr 12 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
Python求均值,方差,标准差的实例
Jun 29 Python
jenkins配置python脚本定时任务过程图解
Oct 29 Python
pytorch加载自己的图像数据集实例
Jul 07 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
如何利用python实现Simhash算法
Jun 28 Python
python通过实例讲解反射机制
Oct 17 #Python
python集合常见运算案例解析
Oct 17 #Python
Pandas聚合运算和分组运算的实现示例
Oct 17 #Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 #Python
python numpy中cumsum的用法详解
Oct 17 #Python
python hashlib加密实现代码
Oct 17 #Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 #Python
You might like
用穿越火线快速入门php面向对象
2012/02/22 PHP
php读取mysql的简单实例
2014/01/15 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
angular.element方法汇总
2015/01/07 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
vue v-model的用法解析
2020/10/19 Javascript
python检查指定文件是否存在的方法
2015/07/06 Python
python实现学生信息管理系统
2020/04/05 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
python中字符串的操作方法大全
2018/06/03 Python
python3 unicode列表转换为中文的实例
2018/10/26 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
解决c++调用python中文乱码问题
2020/07/29 Python
详解python内置模块urllib
2020/09/09 Python
如何利用cmp命令比较文件
2016/04/11 面试题
外贸业务员岗位职责
2013/11/24 职场文书
大客户销售经理职责
2013/12/04 职场文书
党校培训思想汇报
2014/01/03 职场文书
顶撞老师检讨书
2014/02/07 职场文书
岗位说明书标准范本
2014/07/30 职场文书
泰山导游词
2015/02/02 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
环卫工人慰问信
2015/02/15 职场文书
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL