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中类的定义、继承及使用对象实例详解
Apr 30 Python
python实现中文输出的两种方法
May 09 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
使用python创建生成动态链接库dll的方法
May 09 Python
python 实现超级玛丽游戏
Nov 25 Python
python接口自动化框架实战
Dec 23 Python
浅谈Python numpy创建空数组的问题
May 25 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
smarty的section嵌套循环用法示例
2016/05/28 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
读jQuery之三(构建选择器)
2011/06/11 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
详解Vue之计算属性
2020/06/20 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python中文编码问题小结
2014/09/28 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
详解Python多线程下的list
2020/07/03 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
用python实现学生管理系统
2020/07/24 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
毕业自荐信
2013/12/16 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
法学函授自我鉴定
2014/02/06 职场文书
员工拓展培训方案
2014/02/15 职场文书
利群广告词
2014/03/20 职场文书
运动会班级口号
2014/06/09 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
Mysql 一主多从的部署
2022/05/20 MySQL