1. 首先在支付宝开放平台(https://open.alipay.com/platform/home.htm)扫码注册信息

选择开发者中心选择研发服务

配置沙盒应用密钥

使用密钥生成工具生成公钥与私钥。我使用的“支付宝开放平台开发助手”,如下图,点击生成密钥

将生成的公钥粘贴到如下图:

配置授权回调地址:(Django项目启动ip+自定义回调地址)

支付宝开放平台配置完成,然后配置自己写的项目:

使用python manage.py startapp third  命令创建一个应用:

激活应用:在项目setting.py文件里添加应用,如图:

配置路由:在项目主路由urls.py中加入路由:

url('^third/', include('third.urls')),

接着在项目虚拟环境下安装:alipay-sdk-python

pip install alipay-sdk-python

或者使用pycharm工具安装,不再说明

安装alipay-sdk-python可能会出现问题,安装不了,需要安装 Microsoft Visual C++ Build Tools 解决(# Django- VC++报错问题)
1. 安装 Microsoft Visual C++ Build Tools.exe (比较耗时)(下载地址:https://download.csdn.net/download/yixinluobo/12058773)
2. 打开 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include 目录
3. 复制 stdint.h
4. 打开 C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
5. 将 stdint.h 粘贴到该目录
6. 找到 inttypes.h, 用记事本工具打开,找到第13行
 #include <stdint.h>  改成 #include "stdint.h"

安装alipay-sdk-python,如果成功接着进行。

在新建app third目录下编写一个zfb_conf.py文件封装常用变量和方法:

支付宝开放平台沙盒应用中的内容

授权登录URL拼接:

在third应用中,视图views.py中编写登录授权函数

重定向到支付宝授权界面,可参考支付宝开放平台开发者文档:https://docs.alipay.com/isv/10467/xldcyq

然后编写third应用urls.py模块,加入路由:

path('zfb', views.zfb_login, name="zfb-login"),

至此,在前台请求该路由,示例:<a href="/third/zfb" class="zfb"><span>支付宝</span></a> 便可以访问支付宝授权页面

使用沙盒测试买家账号登录,该账号只作为测试用。 (尽可以账号密码方式登录),登陆后跳转如下界面,则成功。

此步成功之后,完成接口回调,(为自己系统获得接口参数)

需求步骤如下:

需要提供一个 支付宝环境配置的对象
- 需要提供一个支付宝接口调用的客户端,客户端需要使用 环境配置对象 
- 需要创建一个模型对象,用来接收 支付宝接口需要的参数
- 需要创建一个请求对象,并把模型对象传给请求对象
- 通过客户端 执行 请求对象,并获取响应的结果
- 需要创建一个响应对象,用来处理响应的结果

在zfb_conf.py模块中编写支付宝接口客户端的获取函数:

def get_alipay_client():alipay_client_config = AlipayClientConfig()alipay_client_config.server_url = GETWATalipay_client_config.app_id = APPIDalipay_client_config.app_private_key = PRIVATE_KEYalipay_client_config.alipay_public_key = PUBLIC_KEY# 使用授权码换取令牌alipay_client = DefaultAlipayClient(alipay_client_config)return alipay_client

编写视图函数获取支付宝接口客户端数据:

def zfb_callback(request):# 获取支付宝授权码app_auth_code = request.GET.get("app_auth_code")# 直接获取客户端对象alipay_client = zfb_conf.get_alipay_client()# 创建一个模型对象,用来接收接口参数biz_model = AlipayOpenAuthTokenAppModel()biz_model.grant_type = "authorization_code"biz_model.code = app_auth_code# 创建一个接口对应的请求对象alipay_request = AlipayOpenAuthTokenAppRequest(biz_model=biz_model)# 调用接口response_content = alipay_client.execute(alipay_request)# 创建一个响应对象,用来处理接口返回的内容alipay_response = AlipayOpenAuthTokenAppResponse()# 处理结果alipay_response.parse_response_content(response_content)print(alipay_response)# 获取支付宝用户idif alipay_response.is_success():alipay_user_id = alipay_response.user_id# 根据支付宝用户id 查询该用户是否和本网站账号进行了绑定sql = "select * from t_user where alipay_user_id = %s"user = db.query_one(sql, args=(alipay_user_id,))if user is None:# 未绑定,绑定账号return render(request, 'bind.html', {"alipay_user_id": alipay_user_id})# 如果绑定,直接登录if user.get("status") == 1:return render(request, "next_base.html", {"user_id": user.id})if user.get("status") == 3:return render(request, "index.html", {"msg": "您的账户已被冻结,请联系管理员"})request.session["LOGIN_LOCAL_FLAG"] = userreturn redirect(to="/")request.session["msg"] = '支付宝登录失败'return redirect(to="/")

后续支付宝绑定账号业务操作根据自己系统而定。

第一次写第三方登录,记录下流程。

获取系统源码:关注公众号:“一起玩转Python”获取源码:

扫码关注

Django项目中使用第三方登录——支付宝登录相关推荐

  1. SpringBoot项目中集成第三方登录功能

    SpringBoot项目中集成第三方登录功能 引言 1 环境准备 2 代码实现 3 第三方平台认证申请 4 打包和部署项目 5 第三方平台登录认证测试 6 参考文章 引言 最近想把自己在公众号上介绍过 ...

  2. 83.Django项目中使用验证码

    1. 概述 ​ 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apar ...

  3. Android Studio 在项目中引用第三方jar包

    在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets {main {j ...

  4. 关于如何正确地在android项目中添加第三方jar包

                  在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...

  5. 在maven项目中解决第三方jar包依赖的问题

    在maven项目中解决第三方jar包依赖的问题 参考文章: (1)在maven项目中解决第三方jar包依赖的问题 (2)https://www.cnblogs.com/nuccch/p/6122938 ...

  6. Django项目中集成富文本编辑器的通用方法,适合KindEditor,xhEditor,NicEditor,wymeditor等 .

    首先,请参考我以前写的一篇博客:如何把nicEditor集成到django中使用 http://blog.csdn.net/huyoo/article/details/4382317 这篇文章中的做法 ...

  7. django项目中使用crontab定时任务

    django项目中使用crontab定时任务 django-crontab 在ubuntu-18.04.2上的使用 需求:django项目中需添加定时任务,定时执行某个函数或者自定义的命令等) 使用步 ...

  8. 在 Nuxt.js 和 Vue.js 项目中引入第三方字体或艺术字

    一.需求分析 在我们写前端页面的时候,大部分时候是不需要用到第三方字体的,但如果是面向C端的页面,比如宣传页,就有可能会引入第三方字体,主要还是看UI设计师咋想了,此时我们可以通过让UI将特殊字体切成 ...

  9. 在vue项目中使用第三方的字体图标库

    如何在vue项目中使用第三方的字体图标库 以在vue项目中导入阿里字体图标库为例 1.打开阿里字体图标库的官方网址 https://www.iconfont.cn/?spm=a313x.7781069 ...

最新文章

  1. Java中Date及Timestamp时间相关内容【转】
  2. MapReduce Java API-多输入路径方式
  3. Boost:基于Boost的优先调度器程序
  4. 一个中年程序员遇到突发情况的一些胡言乱语
  5. IOS启程06—iOS设置圆角图片
  6. word敲空格文字不后退_你还在敲“空格”对齐Word?快瞧瞧效率达人是怎么做的吧!...
  7. linux入门 适合初学者_【推荐】适合初学者临摹的国画|国画基础入门教学视频教程!...
  8. c语言找最长串指针改错,2013年计算机二级C语言上机试题及解析35
  9. OA并发用户数(转)
  10. C语言atoi()函数:将字符串转换成int(整数)
  11. ArcGIS TIN地表面与栅格地表面的生成与互相转换
  12. 初识小熊派——小熊派功能简介
  13. MySQL中information_schema详解
  14. 软件测试实习生面试归来
  15. Python中字符串的反转,及sord、 sorted、reverse、reversed的区别
  16. vue实现未登录不能访问某些页面
  17. 树莓派3b安装python3.6_树莓派编译安装Python3.6
  18. Python3.8安装Pytorch
  19. 激光计算机基本原理,技巧:三分钟了解激光雕刻机的工作原理
  20. 藏在今日头条、喜马拉雅背后的神秘天使:龚挺 | 捕捉隐秘猎手

热门文章

  1. Maven中的LastUpdated文件生成原因
  2. 关于GIS的一些感悟·思考
  3. 斐讯音箱控制扫地机器人_斐讯扫地机器人app
  4. 关于linux的进程中的各个线程cpu占用情况的分析和查看
  5. 无法访问其它家庭组计算机,Win7电脑同一个家庭组或者工作组,电脑无法相互访问...
  6. 毕业设计说明书(论文)结构-系统设计方面
  7. 2022-2027年(新版)中国伺服电机行业发展前景及趋势预测分析报告
  8. 【字体转换】快速实现繁简字体相互转换
  9. 服务器4块固态硬盘做raid5,RAID 5与RAID 10、硬盘和固态硬盘
  10. 【电子电路】变送器信号 4~20mA 恒流源电路设计