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. gerp 用法

    1. 提取/etc/ansible/hosts 文件中包括star的行,且包含数字,不以[为开头的行 grep 'star' /etc/ansible/hosts | grep  '[[:digit: ...

  2. nginx 知识

    nginx如何实现高并发? 启动nginx服务器后,输入 ps -ef |grep nginx,会发现nginx有一个master进程 和若干个worker进程, 这些worker进程是平等的,都是被 ...

  3. css---8 过渡属性刨析

    1.       transition-property 默认值为 all,表示所有可被动画的属性都表现出过渡动 可以指定多个 property 属性值: none 没有过渡动画. all 所有可被动 ...

  4. 93. 复原IP地址

    题目描述: 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135&q ...

  5. EF 如何更新多对多关系的实体

    ctx.Entry(user).Collection(t => t.UserPrivileges).Load(); Come form:https://www.thereformedprogra ...

  6. Activity详解三 启动activity并返回结果 转载 https://www.cnblogs.com/androidWuYou/p/5886991.html

    首先看演示: 1 简介 .如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int ...

  7. PAT甲级——A1108 Finding Average【20】

    The basic task is simple: given N real numbers, you are supposed to calculate their average. But wha ...

  8. Google Chrome浏览器安装xpath helper插件

    1. 图中桌面的两个2.0.2_0文件就是xpath helper插件. --------------------------------------------------------------- ...

  9. Django框架中session存储到redis中的配置

    本文链接:https://blog.csdn.net/linqunbin/article/details/94786313————————————————版权声明:本文为CSDN博主「linqunbi ...

  10. jQuery链式编程时修复断开的链

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...