【愚公系列】2022年02月 Django商城项目 34-订单支付功能实现(支付宝)
文章目录
- 前言
- 一、回调逻辑处理
- 1.安装SDK
- 2.生成私钥公钥
- 3.setting中支付宝配置信息
- 4.生成支付URL
- 5.接收支付成功信息
前言
具体支付宝支付流程可参考这篇文章:https://www.cnblogs.com/xiaolu915/p/10528155.html
一、回调逻辑处理
1.安装SDK
pip install python-alipay-sdk --upgrade
2.生成私钥公钥
openssl
OpenSSL> genrsa -out app_private_key.pem 2048 # 私钥RSA2
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem # 导出公钥
OpenSSL> exit
在支付宝中下载的私钥文件格式需要修改成正确格式
3.setting中支付宝配置信息
ALIPAY_APPID = '2016091600523030'
ALIPAY_DEBUG = True
ALIPAY_URL = 'https://openapi.alipaydev.com/gateway.do'
ALIPAY_RETURN_URL = 'http://localhost:8000/payment/status/'
APP_PRIVATE_KEY_PATH = os.path.join(BASE_DIR, 'app/pay/keys/app_private_key.pem')
ALIPAY_PUBLIC_KEY_PATH = os.path.join(BASE_DIR, 'app/pay/keys/alipay_public_key.pem')
4.生成支付URL
class PaymentView(LoginRequiredJSONMixin,View):def get(self,request,order_id):# 0.接收验证订单try:# 传一个订单id是没有问题的# 为了让查询的更准确, 我们是应该查询 未支付的order = OrderInfo.objects.get(order_id=order_id,user=request.user,status=OrderInfo.ORDER_STATUS_ENUM['UNPAID'])except OrderInfo.DoesNotExist:return http.JsonResponse({'code':RETCODE.PARAMERR,'errmsg':'暂无此订单'})# 1.创建alipay实例对象app_private_key_string = open(settings.APP_PRIVATE_KEY_PATH).read()alipay_public_key_string = open(settings.ALIPAY_PUBLIC_KEY_PATH).read()alipay = AliPay(appid=settings.ALIPAY_APPID,app_notify_url=None, # 默认回调urlapp_private_key_string=app_private_key_string,# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,alipay_public_key_string=alipay_public_key_string,sign_type="RSA2", # RSA 或者 RSA2debug = True # 默认False)# 2.生成order_string# 如果你是 Python 3的用户,使用默认的字符串即可subject = "测试订单"# 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string# 正式环境的 https://openapi.alipay.com/gateway.do? + order_string# 沙箱环境的 https://openapi.alipaydev.com/gateway.doorder_string = alipay.api_alipay_trade_page_pay(out_trade_no=order_id,total_amount=str(order.total_amount),subject=subject,return_url=settings.ALIPAY_RETURN_URL,)# 3.拼接调转的urlpay_url = settings.ALIPAY_URL + '?' + order_string# 4.返回return http.JsonResponse({'code':RETCODE.OK,'pay_url':pay_url})
一直点击下一步支付成功后回跳转到回调地址
5.接收支付成功信息
class PayStatusView(View):def get(self,request):"""将订单id和支付宝id保存起来1.创建支付宝实例2.获取验证数据3.根据状态保存数据"""## 1.创建支付宝实例app_private_key_string = open(settings.APP_PRIVATE_KEY_PATH).read()alipay_public_key_string = open(settings.ALIPAY_PUBLIC_KEY_PATH).read()alipay = AliPay(appid=settings.ALIPAY_APPID,app_notify_url=None, # 默认回调urlapp_private_key_string=app_private_key_string,# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,alipay_public_key_string=alipay_public_key_string,sign_type="RSA2", # RSA 或者 RSA2debug=True # 默认False)# 2.获取验证数据data = request.GET.dict()# sign 不能参与签名验证signature = data.pop("sign")# verifysuccess = alipay.verify(data, signature)if success:# 3.根据状态保存数据"""trade_no String 必填 64 支付宝交易号 2013112011001004330000121536out_trade_no String 必填 64 商户订单号 6823789339978248"""trade_no = data.get('trade_no')out_trade_no=data.get('out_trade_no')Payment.objects.create(order_id=out_trade_no,trade_id=trade_no)return render(request,'pay_success.html',context={'trade_no':trade_no})
【愚公系列】2022年02月 Django商城项目 34-订单支付功能实现(支付宝)相关推荐
- 【愚公系列】2022年01月 Django商城项目13-登录界面-QQ登录功能实现
文章目录 前言 1.QQ互联开发者申请 2.QQ互联应用申请 3.网站对接QQ登录 一.django实际对接流程 1.创建抽象模型类 2.创建QQ用户模型类 3.注册应用 4.配置QQ登录信息 5.登 ...
- 【愚公系列】2022年01月 Django商城项目 24-商品列表页功能实现
文章目录 一.商品列表页功能实现 1.后台查询代码 二.面包屑信息展示 1.前台html代码 2.实际效果 三.列表页信息展示 1.前台html代码 2.实际效果 一.商品列表页功能实现 1.后台查询 ...
- 【愚公系列】2022年01月 华为鸿蒙OS-03-四种模式开发实操
文章目录 前言 一.使用JS语言开发(传统代码方式) 1.index页面源码 2.details页面源码 二.使用JS语言开发(低代码方式) 1.新建工程:注意选择 2.选择低代码新建页面 3.页面分 ...
- 滚动测试报告 2022年02月
SpeechIO的所有历史文章可在语音之家网站的[声浪]-[SpeechIO专区]查看,评测结果数据可在语音之家(PC端)的[评测]页面查看. 官网地址:http://www.speechhome.c ...
- 【愚公系列】2022年10月 微信小程序-电商项目-微信支付后端功能实现(node版)
文章目录 前言 一.微信支付后端功能实现(node版) 1.相关文档 2.项目配置 前言 微信支付是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全.便捷.专业的在线支付服务.以"微 ...
- 【愚公系列】回顾2022年技术博客的总结与展望
文章目录 前言 一.回顾2022年的活动和成就 1.2022年所做的事 2.2022年收获和成就 二.分析2022年的表现 1.过去一年优缺点分析 2.过去一年表现认同度 三.展望2023年的计划 1 ...
- 【愚公系列】(HDC.Cloud)华为开发者大会游记
文章目录 前言 一.(HDC.Cloud)华为开发者大会游记 1.受邀参加 2.开发者大会首页 3.第一天 4.第二天 5.第三天 总结 前言 HDC.Cloud华为开发者大会是由华为举办的一年一度的 ...
- 【愚公系列】华为产品测评官-开发者之声(CodeArts产品流程体验)
文章目录 前言 一.华为云CodeArts产品体验 1.软件开发生产线使用流程 1.1 配置项目 1.2 配置代码仓库 1.3 配置流水线 2.使用软件开发生产线快速搭建项目(ECS篇) 2.1 前提 ...
- 【shopify 1】调研出海项目,发现shopify没有java的相关SDK接口,但是找到一个最新2022年6月的Java项目分享了相关代码,使用docker进行环境搭建、编译,并成功启动
目录 前言 1,关于shopify java调研 2,发现一个新的关于shopify的JavaSDK开源项目是2022年6月发布的 3,使用OAuth2 进行授权的逻辑 4,解决相关问题,解决配置依赖 ...
最新文章
- linux系统层次(转)
- 长方体重力异常正演matlab,骆遥 (2007) 两种新的长方体重力异常正演公式及其理论推导. 中国科学院地质与地球物理研究所, 北京....
- GPT v.s. 中国象棋:写过文章解过题,要不再来下盘棋?
- MySQL应用安装_mysql安装和应用
- 高德地图看各省分界线_深度解读|高德宣布高精地图“百元时代”背后的商业逻辑是什么...
- shell调用python权限不足_使用权限从python运行shell脚本
- magento 在产品页添加评论 Add Review Form in Magento Product View Page
- Mac CAD2018 安装完成后,打开注册机时出现 应用程序“02_注册机”不能打开。
- HTML+JS 实现 input 框回车事件
- Mysql索引结构全维度比较
- Rockchip | Rockchip U-Boot的获取与构建
- matlab中zeta函数,黎曼zeta函数是什么,具体点
- 十年之前..., 十年之后...
- 【kuangbin】简单搜索 - 13.非常可乐【BFS】
- 如何在win10中安装jdk
- 100以内所有质数的输出。
- 大数据血缘分析系统设计(三)
- 64位系统上运行32位程序的内存限制
- 很好很强大的FXTZ
- PS基础教程[7]如何为照片瘦身