支付宝沙箱

支付宝沙箱
支付宝支付

## 支付宝的沙箱环境

-   [密钥生成文档](https://opendocs.alipay.com/open/291/105971): 公钥(给别人,方便其他人验证某个信息是否为自己发送) 和私钥(需要自己保存,对信息加密,不能泄露)
-   根据文档,生成一对密钥: 公钥和私钥,将 公钥 添加到 支付宝的 [沙箱应用](https://openhome.alipay.com/platform/appDaily.htm)中

支付宝沙箱

支付宝沙箱

支付宝沙箱
-   根据自己的APP公钥,生成的  支付宝公钥,需要 保存本地

> 支付宝接口: 不再自己写接口,而是 使用 python-alipay-sdk工具去请求支付宝接口
>
> pip install pyhton-alipay-sdk

## 支付接口

### django

> 需要将 生成的 私钥 和 根据自己的公钥生成的 支付宝公钥,保存到文件,放到项目中

支付宝公钥(aliapy_pbulic_key.pem

python </code></pre> <p>自己的APP私钥 (<code>app_private_key.pem</code>)</p> <pre><code class="language-python"></code></pre> <h4>支付宝的相关方法</h4> <blockquote> <p>不需要记。以后参考文档</p> </blockquote> <pre><code class="language-python">import os from alipay import AliPay 配置地址, 为了确定 公钥和私钥的 位置 private_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "key/app_private_key.pem") public_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "key/alipay_public_key.pem") 获取公私钥字符串 app_private_key_string = open(private_path).read() alipay_public_key_string = open(public_path).read() def get_alipay(): """生成支付宝的客户端""" alipay = AliPay( appid="2016092400585976", # 收款的商家支付宝的 appid app_notify_url=None, # 默认回调url app_private_key_string=app_private_key_string, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥 alipay_public_key_string=alipay_public_key_string, sign_type="RSA2", # 加密方式 debug=True, # 上线则改为False , 沙箱True ) return alipay def get_alipay_url(order_id, order_amount, subject, return_url): """ 根据订单信息,生成支付地址 """ # 进行alipay初始化 alipay = get_alipay() # 调用支付接口 # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string order_string = alipay.api_alipay_trade_page_pay( out_trade_no=order_id, # 订单id,需要支付的订单id total_amount=str(order_amount), # 订单总金额 subject=subject, # 付款标题信息 return_url=return_url, # 付款成功回调地址(可以为空, 当前项目,应该回调到Vue页面) notify_url=None # 付款成功后异步通知地址(可以为空) ) pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string return pay_url # 将这个url复制到浏览器,就会打开支付宝支付页面 </code></pre> <h4>视图</h4> <ul> <li>获取前端发送的订单id</li> <li>查询订单id对应的订单信息</li> <li>利用第三方包生成一个支付宝客户端</li> <li>传入订单号、支付金额、回调参数、主题,生成一个支付接口</li> <li>将生成的支付接口返回给Vue</li> </ul> <pre><code class="language-python">class PaymentAPIView(APIView): authentication_classes = [JSONWebTokenAuthentication] permission_classes = [IsAuthenticated] def get(self, request, order_id): # 查询要支付的订单 user = request.user try: order = Order.objects.get(id=order_id, user=user) except Exception as e: return Response({'msg': '订单信息错误'}, status=404) alipay_url = get_alipay_url( order_id=order_id, order_amount=order.amount, subject="美多商城%s" % order_id, # 支付成功,跳转到Vue的支付成功页面 return_url='http://127.0.0.1:8080/#/pay_success/' ) return Response({'alipay_url': alipay_url}) </code></pre> <p>Vue</p> <ul> <li>对 支付 按钮,绑定方法</li> <li>在方法中,发送请求,接收响应地址, 也就是支付宝的支付地址</li> <li>跳转到支付宝支付页面</li> <li>等待用户支付成功</li> </ul> <pre><code class="language-vue"> </code></pre> <p>

Original: https://www.cnblogs.com/gaogang/p/14680426.html
Author: 小高、
Title: 支付宝沙箱

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586048/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • vim的使用

    1、概述: Vim 是从 vi 发展出来的一个文本编辑器。具有代码补全、编译及错误跳转等功能 2、vim编辑器的常用命令: 图源:https://vimsky.com/articl…

    Linux 2023年5月27日
    0132
  • MySQL-报错:Error when bootstrapping CMake:

    在进行MySQL的源码安装的时候,系统上找不到合适的C编译器,GCC忘了装,莫慌,直接 yum命令装上gcc,还有gcc-C++没装的话后面也会提示错误,一起装上,,, [root…

    Linux 2023年6月13日
    0108
  • 编译iPhone静态库的Makefile实例(与Shell脚本一起完成)

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/cy568searchx/p/5735419.htmlA…

    Linux 2023年5月28日
    0117
  • 代码上传Github后乱码解决方案

    阅文时长 | 0.23分钟字数统计 | 384字符主要内容 | 1、引言&背景 2、解决方案 3、声明与参考资料『代码上传Github后乱码解决方案』 编写人 | SCsc…

    Linux 2023年6月14日
    0183
  • MANIFEST.MF文件对Import-Package/Export-Package重排列

    众所周知,MANIFEST.MF文件中的空格开头的行是相当于拼接在上一行末尾的。很多又长又乱的Import-Package或者Export-Package,有时候想要搜索某个pac…

    Linux 2023年6月13日
    0115
  • 【转】对于任意的非负整数,统计其二进制展开中数位1的总数

    问题: 对于任意的非负整数,统计其二进制展开中数位1的总数。 解决: 在看这篇之前可以先看看上述这篇,这篇主要讨论其优化问题。 常规解法: O(logn): 无非就是每次取其二进制…

    Linux 2023年6月7日
    090
  • python 对文件操作

    实现对文件的简单操作 #!/usr/bin/env python -*- coding:utf-8 -*- def Find(class_name): class_list = […

    Linux 2023年6月13日
    0133
  • samba服务设置与访问共享文件夹

    samba服务设置与访问共享文件夹 linux设置文件夹共享 windows连接共享文件夹(运行->//IP/route) linux连接共享文件夹 1、基本服务安装与配置 …

    Linux 2023年5月27日
    0110
  • 华为ensp网络拓扑图使用MSTP、OSPF、DHCP、端口聚合以及PPP(CHAP认证)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0105
  • anaconda创建虚拟环境

    anaconda创建虚拟环境 1·查看当前存在的虚拟环境 conda env list 或者 conda info -e 2·创建虚拟环境,环境名重要 conda create -…

    Linux 2023年6月14日
    0101
  • 统计算法_概率基础

    本次有以下函数 1、简单边际概率 2、联合概率 3、条件概率 4、随机变量期望值 5、随机变量方差 6、随机变量协方差 7、联合协方差 8、组合期望回报 9、投资组合风险 说概率前…

    Linux 2023年6月6日
    093
  • Nginx笔记

    实现负载均衡 这里采用的是权重 进入配置文件目录cd /usr/local/nginx/conf/ //实际根据自己的目录来 编辑vim nginx.conf 根据需要在此代码的顶…

    Linux 2023年5月27日
    0103
  • [云原生]Kubernetes-资源管理(第3章)

    一、资源管理介绍 二、YAML语言介绍 三、资源管理方式 3.1 命令式对象管理 3.2 命令式对象配置 3.3 声明式对象配置 参考: Kubernetes(K8S) 入门进阶实…

    Linux 2023年6月13日
    0124
  • JS 模块化- 05 ES Module & 4 大规范总结

    1 ES Module 规范 ES Module 是目前使用较多的模块化规范,在 Vue、React 中大量使用,大家应该非常熟悉。TypeScript 中的模块化与 ES 类似。…

    Linux 2023年6月6日
    0138
  • 软件危机复习

    没有银弹的含义 软件危机:由于软件规模越来越大,软件复杂性越来越高,可靠性问题也越来越突出,传统的个人设计,个人实现的方式不再满足要求,迫切需要改变软件生产方式,提高软件开发效率,…

    Linux 2023年6月8日
    093
  • 使用docker 5分钟搭建一个博客(mysql+WordPress)

    一.系统环境 二.前言 三.搭建博客 3.1 创建wordpress和mysql容器 3.2 在wordpress界面设置个人博客信息 3.3 WordPress容器创建命令的简化…

    Linux 2023年6月7日
    0116
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球