文章目录

  • 前言
  • 一、回调逻辑处理
    • 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-订单支付功能实现(支付宝)相关推荐

  1. 【愚公系列】2022年01月 Django商城项目13-登录界面-QQ登录功能实现

    文章目录 前言 1.QQ互联开发者申请 2.QQ互联应用申请 3.网站对接QQ登录 一.django实际对接流程 1.创建抽象模型类 2.创建QQ用户模型类 3.注册应用 4.配置QQ登录信息 5.登 ...

  2. 【愚公系列】2022年01月 Django商城项目 24-商品列表页功能实现

    文章目录 一.商品列表页功能实现 1.后台查询代码 二.面包屑信息展示 1.前台html代码 2.实际效果 三.列表页信息展示 1.前台html代码 2.实际效果 一.商品列表页功能实现 1.后台查询 ...

  3. 【愚公系列】2022年01月 华为鸿蒙OS-03-四种模式开发实操

    文章目录 前言 一.使用JS语言开发(传统代码方式) 1.index页面源码 2.details页面源码 二.使用JS语言开发(低代码方式) 1.新建工程:注意选择 2.选择低代码新建页面 3.页面分 ...

  4. 滚动测试报告 2022年02月

    SpeechIO的所有历史文章可在语音之家网站的[声浪]-[SpeechIO专区]查看,评测结果数据可在语音之家(PC端)的[评测]页面查看. 官网地址:http://www.speechhome.c ...

  5. 【愚公系列】2022年10月 微信小程序-电商项目-微信支付后端功能实现(node版)

    文章目录 前言 一.微信支付后端功能实现(node版) 1.相关文档 2.项目配置 前言 微信支付是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全.便捷.专业的在线支付服务.以"微 ...

  6. 【愚公系列】回顾2022年技术博客的总结与展望

    文章目录 前言 一.回顾2022年的活动和成就 1.2022年所做的事 2.2022年收获和成就 二.分析2022年的表现 1.过去一年优缺点分析 2.过去一年表现认同度 三.展望2023年的计划 1 ...

  7. 【愚公系列】(HDC.Cloud)华为开发者大会游记

    文章目录 前言 一.(HDC.Cloud)华为开发者大会游记 1.受邀参加 2.开发者大会首页 3.第一天 4.第二天 5.第三天 总结 前言 HDC.Cloud华为开发者大会是由华为举办的一年一度的 ...

  8. 【愚公系列】华为产品测评官-开发者之声(CodeArts产品流程体验)

    文章目录 前言 一.华为云CodeArts产品体验 1.软件开发生产线使用流程 1.1 配置项目 1.2 配置代码仓库 1.3 配置流水线 2.使用软件开发生产线快速搭建项目(ECS篇) 2.1 前提 ...

  9. 【shopify 1】调研出海项目,发现shopify没有java的相关SDK接口,但是找到一个最新2022年6月的Java项目分享了相关代码,使用docker进行环境搭建、编译,并成功启动

    目录 前言 1,关于shopify java调研 2,发现一个新的关于shopify的JavaSDK开源项目是2022年6月发布的 3,使用OAuth2 进行授权的逻辑 4,解决相关问题,解决配置依赖 ...

最新文章

  1. linux系统层次(转)
  2. 长方体重力异常正演matlab,骆遥 (2007) 两种新的长方体重力异常正演公式及其理论推导. 中国科学院地质与地球物理研究所, 北京....
  3. GPT v.s. 中国象棋:写过文章解过题,要不再来下盘棋?
  4. MySQL应用安装_mysql安装和应用
  5. 高德地图看各省分界线_深度解读|高德宣布高精地图“百元时代”背后的商业逻辑是什么...
  6. shell调用python权限不足_使用权限从python运行shell脚本
  7. magento 在产品页添加评论 Add Review Form in Magento Product View Page
  8. Mac CAD2018 安装完成后,打开注册机时出现 应用程序“02_注册机”不能打开。
  9. HTML+JS 实现 input 框回车事件
  10. Mysql索引结构全维度比较
  11. Rockchip | Rockchip U-Boot的获取与构建
  12. matlab中zeta函数,黎曼zeta函数是什么,具体点
  13. 十年之前..., 十年之后...
  14. 【kuangbin】简单搜索 - 13.非常可乐【BFS】
  15. 如何在win10中安装jdk
  16. 100以内所有质数的输出。
  17. 大数据血缘分析系统设计(三)
  18. 64位系统上运行32位程序的内存限制
  19. 很好很强大的FXTZ
  20. PS基础教程[7]如何为照片瘦身

热门文章

  1. 信息系统综合测试与管理
  2. 三角形的平移、旋转,在VC上实现(矩阵的应用)
  3. 点云处理--点云平移和旋转
  4. 深度学习 - 记忆网络
  5. Github优秀作品
  6. 什么是服务器托管?服务器托管和虚拟主机的区别
  7. mysql无法退出命令行
  8. [06][03][01] MySQL架构与SQL执行流程
  9. postgresql 安装使用修改密码psql登录
  10. 微信小程序样式 WXSS