1.首先下载所需要的包

pip install python-alipay-sdk

2.在视图函数里面引入所需要的类

from alipay import AliPay

3.利用这个类创建一个实例对象

ali_pay = AliPay(
appid=settings.ALIPAY_APPID,
app_notify_url=None,//使用默认回调的地址
//公钥的路径
app_private_key_path=os.path.join(settings.BASE_DIR,'keys/pri'),
//私钥的路径
alipay_public_key_path=os.path.join(settings.BASE_DIR,'keys/pub'),
//使用的加密方式
sign_type='RSA2',
//默认是False 测试环境配合沙箱环境使用 如果是生产环境 将其改为True
debug=False)

keys是本人建立在本项目目录下的文件夹
那pri和pub的获取需要自己去获取
首先要去蚂蚁金服开放平台,可以用支付宝进登录

点上面箭头所指进入下一级界面


点击上图中的生成方法

下载对应版本的压缩包解压后运行
在对应的文件下会生成两个对应的文件,在这key文件夹下建立两个文件,不设置后缀,一个用来存放公钥,一个用来存放私钥,把生成的公钥和私钥分别粘贴在这两个文件夹下
粘贴的时候在文件的开头和结尾加入下列代码

//私钥
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
//公钥
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----

4.网站端的支付需要跳转到支付界面,进行支付

order_string = ali_pay.api_alipay_trade_page_pay(
//订单编号
out_trade_no=order.o_id,
//订单总额
total_amount=total_price,
//订单描述信息
subject='天天生鲜购物订单-{}'.format(order.o_id),
//回调地址,订单支付成功后回调的地址
return_url='https://www.baidu.com',
)

5.拼接支付地址

url = settings.ALIPAY_URL + '?' +order_string

6.最后就是返回url地址

7.监听订单状态是否支付
是根据订单号检查订单是否被支付的,这个订单号的获取就需要自己想办法传到后台的
当后台获取到订单号时

alipay = AliPay(
appid=settings.ALIPAY_APPID,
app_notify_url=None,
app_private_key_path=os.path.join(settings.BASE_DIR,'keys/pri'), alipay_public_key_path=os.path.join(settings.BASE_DIR,'keys/pub'),
sign_type='RSA2',
//沙箱环境下没有查询订单服务的
debug=True)
while True:
response = alipay.api_alipay_trade_query(o_id)
# code 40004 支付订单未创建
# code 10000 trade_status WAIT_BUYER_PAY 等待支付
# oode 10000 trade_status TRADE_SUCCESS 支付成功
# response 是字典
code = response.get('code')
trade_status =response.get('trade_status')
if code == '10000' and trade_status == 'TRADE_SUCCESS':
# 支付成功
order = OrderInfo.objects.get(id=o_id)
order.o_pay = True
order.save()
# 返回支付结果
return JsonResponse({
'status':1,
'msg':'支付成功'
})
elif (code == '10000' and trade_status =='WAIT_BUYER_PAY') or code == '40004':
# 表示支付暂时没有完成
continue
else:
return JsonResponse({
'status':0,
'msg':'支付失败'
})

Django项目订单接入支付宝的更多相关文章

  1. Django订单接入支付宝

    1.. 去支付宝申请 https://open.alipay.com/platform/home.htm 注:因为创建应用正式接入支付宝需要营业执照,所以我们可以使用沙箱环境来测试. 2. 一次选择管 ...

  2. 接入支付宝出现交易订单处理失败,请稍后再试(ALI64)的错误【转】

    接入第三方平台的时候,有时虽然按照文档来做,但是总是还会有各种各样的问题. 上次在接入支付宝的时候就碰到了交易订单处理失败,请稍后再试(ALI64)这样的错误,后来经过排查和总结,一般来讲这种问题都是 ...

  3. Django项目纪要

    开发流程 公司高层 项目立项 | 市场部门 需求分析-->需求分析说明书, 需求规格说明书 | 产品部门 产品原型-->产品 UI 前端 后端 测试 移动端 | |------------ ...

  4. python-django框架-电商项目-订单模块开发_20191125

    python-django框架-电商项目-订单模块开发 提交订单页面: 在购物车中点击提交订单,就应该到达提交订单页面了, 显示: 1,收获地址, 2,支付方式 3,用户购买的商品信息,数量,小计, ...

  5. TP3.2.3 接入支付宝

    TP3.2.3 接入支付宝 项目接入支付宝支付了,在做这个给我的感觉是,方便 ,毕竟是老马的产品是吧, 话不多说 , 首先我们先找到官方的SDK  ,不想去找的小伙伴复制此链接 https://doc ...

  6. ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇

    这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付接口及同步跳转及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET ...

  7. 【转载】ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇

    转自:http://www.cnblogs.com/essenroc/p/8627775.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付 ...

  8. 前后端分离djangorestframework—— 接入支付宝支付平台

    支付宝 简介 支付宝是什么不用多说了,本次教程适合初学者 前提准备 话不多说,干就完了 1.注册开发者账号,设置公钥私钥 首先进入支付宝开发者平台:传送门 ,有账号直接登录,没账号用你平时用来付款收钱 ...

  9. 【PHP后台】接入支付宝

     我使用PHP主要是为客户端做后台使用,并不会做前端网页.   这两天因为公司项目需要,必须接入支付功能,而支付宝当然首当其冲,考虑迭代版本的需要,首先接入支付宝功能,其他的支付功能以后迭代版本的时候 ...

随机推荐

  1. shell对比两个目录中有哪些文件不同

    参考:https://www.cnblogs.com/liyuchuan/p/10756066.html 目录结构: /data/dir1 subdir/ subfile /data/dir2 sub ...

  2. String 字符串对象

    String是什么 String字符串,是一种引用数据类型,并不是基础数据类型. 对于基础数据类型和引用数据类型的区别: 基础数据类型,在创建时直接将值存放在栈内存中. 引用数据类型,在创建时栈内存中 ...

  3. JS事件 鼠标单击事件( onclick )通常与按钮一起使用。onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件。同时onclick事件调用的程序块就会被执行

    鼠标单击事件( onclick ) onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件.同时onclick事件调用的程序块就会被执行,通常与按钮一起使用. 比如,我们单击按钮时,触发  ...

  4. redis笔记_源码_跳表skiplist

    参照:https://juejin.im/post/57fa935b0e3dd90057c50fbc#comment http://redisbook.com/preview/skiplist/dat ...

  5. leetcode-973-最接近原点的K个点

    题目描述: 可参考:题215 方法一:排序 class Solution: def kClosest(self, points: List[List[int]], K: int) -> List ...

  6. Altera的primary register和secondary register

    在Altera的一些IP文档上,提到IP的资源使用情况时,会有primary logic register和secondary logic register这样的术语. 那么什么是primary/se ...

  7. day23 内置函数,匿名函数,递归

    Python之路,Day11 = Python基础11 内置函数divmod(x, y)   # (商, 模)enumerate(可迭代对象)     # (序号,值)eval(字符串) # 把字符串 ...

  8. thinkphp 空控制器

    空控制器的概念是指当系统找不到请求的控制器名称的时候,系统会尝试定位空控制器(EmptyController),利用这个机制我们可以用来定制错误页面和进行URL的优化. 大理石平台价格表 现在我们把前 ...

  9. 14 win7 sp1下安装vs2015

    0 引言 在win7下安装vs2015的时候遇到了很多问题,看了很多帖子,尝试了很多次,终于成功了.网上也有大量关于win7 sp1下安装vs2015的帖子,我在安装的时候也参考了很多相关经验,这次写 ...

  10. CentOS 7.2部署NTP服务器实现时间同步

    CentOS 7.2部署NTP服务器实现时间同步 [日期:2017-12-18] 来源:Linux社区  作者:梁明远 [字体:大 中 小]   1. 前言 对于容器编排系统,前段时间主要研究kube ...