Django项目中使用第三方登录——支付宝登录
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项目中使用第三方登录——支付宝登录相关推荐
- SpringBoot项目中集成第三方登录功能
SpringBoot项目中集成第三方登录功能 引言 1 环境准备 2 代码实现 3 第三方平台认证申请 4 打包和部署项目 5 第三方平台登录认证测试 6 参考文章 引言 最近想把自己在公众号上介绍过 ...
- 83.Django项目中使用验证码
1. 概述 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apar ...
- Android Studio 在项目中引用第三方jar包
在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets {main {j ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...
- 在maven项目中解决第三方jar包依赖的问题
在maven项目中解决第三方jar包依赖的问题 参考文章: (1)在maven项目中解决第三方jar包依赖的问题 (2)https://www.cnblogs.com/nuccch/p/6122938 ...
- Django项目中集成富文本编辑器的通用方法,适合KindEditor,xhEditor,NicEditor,wymeditor等 .
首先,请参考我以前写的一篇博客:如何把nicEditor集成到django中使用 http://blog.csdn.net/huyoo/article/details/4382317 这篇文章中的做法 ...
- django项目中使用crontab定时任务
django项目中使用crontab定时任务 django-crontab 在ubuntu-18.04.2上的使用 需求:django项目中需添加定时任务,定时执行某个函数或者自定义的命令等) 使用步 ...
- 在 Nuxt.js 和 Vue.js 项目中引入第三方字体或艺术字
一.需求分析 在我们写前端页面的时候,大部分时候是不需要用到第三方字体的,但如果是面向C端的页面,比如宣传页,就有可能会引入第三方字体,主要还是看UI设计师咋想了,此时我们可以通过让UI将特殊字体切成 ...
- 在vue项目中使用第三方的字体图标库
如何在vue项目中使用第三方的字体图标库 以在vue项目中导入阿里字体图标库为例 1.打开阿里字体图标库的官方网址 https://www.iconfont.cn/?spm=a313x.7781069 ...
最新文章
- Java中Date及Timestamp时间相关内容【转】
- MapReduce Java API-多输入路径方式
- Boost:基于Boost的优先调度器程序
- 一个中年程序员遇到突发情况的一些胡言乱语
- IOS启程06—iOS设置圆角图片
- word敲空格文字不后退_你还在敲“空格”对齐Word?快瞧瞧效率达人是怎么做的吧!...
- linux入门 适合初学者_【推荐】适合初学者临摹的国画|国画基础入门教学视频教程!...
- c语言找最长串指针改错,2013年计算机二级C语言上机试题及解析35
- OA并发用户数(转)
- C语言atoi()函数:将字符串转换成int(整数)
- ArcGIS TIN地表面与栅格地表面的生成与互相转换
- 初识小熊派——小熊派功能简介
- MySQL中information_schema详解
- 软件测试实习生面试归来
- Python中字符串的反转,及sord、 sorted、reverse、reversed的区别
- vue实现未登录不能访问某些页面
- 树莓派3b安装python3.6_树莓派编译安装Python3.6
- Python3.8安装Pytorch
- 激光计算机基本原理,技巧:三分钟了解激光雕刻机的工作原理
- 藏在今日头条、喜马拉雅背后的神秘天使:龚挺 | 捕捉隐秘猎手
热门文章
- Maven中的LastUpdated文件生成原因
- 关于GIS的一些感悟·思考
- 斐讯音箱控制扫地机器人_斐讯扫地机器人app
- 关于linux的进程中的各个线程cpu占用情况的分析和查看
- 无法访问其它家庭组计算机,Win7电脑同一个家庭组或者工作组,电脑无法相互访问...
- 毕业设计说明书(论文)结构-系统设计方面
- 2022-2027年(新版)中国伺服电机行业发展前景及趋势预测分析报告
- 【字体转换】快速实现繁简字体相互转换
- 服务器4块固态硬盘做raid5,RAID 5与RAID 10、硬盘和固态硬盘
- 【电子电路】变送器信号 4~20mA 恒流源电路设计