ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python 调用支付宝沙箱接口 实现 扫码支付

2020-12-15 11:04:30  阅读:240  来源: 互联网

标签:alipay 扫码 公钥 Python pay 地址 ----- 沙箱


思路剖析
在这里插入图片描述

支付宝开放平台 登录
登陆之后 点击这个 研发服务
在这里插入图片描述
然后下载 一个 支付宝沙箱的 移动端
在这里插入图片描述
点击左侧的沙箱账号,就可以知道 登录沙箱的 账号和 密码了,也可以 往死充钱。他是可以扫 沙箱收款的二维码的。
我们现在需要 生成 RSA密钥
在这里插入图片描述
然后再 点击
在这里插入图片描述
然后下载这个工具
在这里插入图片描述
下载好后 找到我的 文档地址
在这里插入图片描述
往下滑动 可以发现 设置的一些条件 我们记录一下

APPID --> 2016101400681366
支付宝网关 --> https://openapi.alipaydev.com/gateway.do

要用到关键性 的东西了 RSA2 我们先 设置一下它
在这里插入图片描述
然后更改 公钥
在这里插入图片描述
出现下面这个后 我们等待一下啊
在这里插入图片描述
我们 打开刚下 下载的 软件包
在这里插入图片描述
双击打开 静静等待 然后复制公钥
在这里插入图片描述
复制之后 替换 刚才打开的 加签管理中的公钥
在这里插入图片描述
替换后 保存
在这里插入图片描述
然后继续 更改 公钥
点击修改后
在这里插入图片描述

回到 .bat 生成密钥的工具 打开 文件所在的位置,把那两个 text 放到我们的 项目里。
在这里插入图片描述
在这里插入图片描述
这两个文件非常的重要

回到 沙箱 填写这些内容
在这里插入图片描述
回调地址 故名思意 扫码完成后 跳转的到的地址,所以我们要写一个视图函数来 对应这个地址。

# views.py
def pay_result(request):
    pass


12345
123456
1234567
12345678

先简短的这么写 后期再完善它。所以回调地址 就要写 这个名字
在这里插入图片描述
应用网关 设置成 咱们刚才 暂存的那个
在这里插入图片描述
呼~ 配置完了 该到 Python 的了

# 第一次安装 不用执行后面的 upgrade
pip install python-alipay-sdk --upgrade

123
1234
12345
123456

将下面的语句 放到 项目中的 应用公钥里面

在支付宝上下载的公钥是一个字符串,需要在文本的尾部添加标记
-----BEGIN PUBLIC KEY-----
		内容
-----END PUBLIC KEY-----

密钥也是如此

-----BEGIN PRIVATE KEY-----
		内容
-----END PRIVATE KEY-----


123456789101112
12345678910111213
1234567891011121314
123456789101112131415

将 刚才的 两个 公钥密钥文件放入 我们的项目目录里,和 DJango 的父子应用同级
在这里插入图片描述
然后我们 为了 避免 中文 将他们改成了 这个名字。

下载的 引入的 Alipay
源码:
在这里插入图片描述
看 引入的 Alipay 源码可知 它所需要的以下的参数

# views.py

APPID = ################ 你的APPID     
AIPAY = 'https://openapi.alipaydev.com/gateway.do'  # 支付宝网关

from alipay import AliPay
from shiyanlou.settings import BASE_DIR
import os

def alipay():    # 之前是 pay_result
    ap = AliPay(
        appid=APPID,
        app_notify_url='http://127.0.0.1:8000/pay_result/',   # 回调地址
        app_private_key_path=os.path.join(BASE_DIR,'private_key.txt'),  # 私钥地址
        alipay_public_key_path=os.path.join(BASE_DIR,'public_key.txt'),  # 公钥地址
    )
	
	return ap

12345678910111213141516171819
1234567891011121314151617181920
123456789101112131415161718192021
12345678910111213141516171819202122

写到这里想必大家有所猜疑了吧,ID、公钥、密钥、回调地址、这个就是请求支付宝 沙箱 接口的必要参数把,return 返回 就横额说明白这个意思了。没错就是这样的。
然后 作为 收款人的我们 写一个商品,调用 alipay 中的 网页支付 方法,实现 一个页面的支付二维码 和商品进行关联的话 我们 测试一下。更改成类方法:

# views.py
import time

class paytest(APIView):
    def get(self, request):
        ap = alipay()
        order_string = ap.api_alipay_trade_page_pay(
            total_amount=9274700,     # 价格
            subject='Lamborghini Aventador',     # 主题
            out_trade_no=str(time.time()).replace(',','')   # 订单ID
        )
        pay_url = AIPAY + order_string

        return Response({
            'pay_url': pay_url
        })



12345678910111213141516171819
1234567891011121314151617181920
123456789101112131415161718192021
12345678910111213141516171819202122

alipay 也就是 支付宝 在支付的时候 是有两个订单 ID 的 一个订单 ID 对应着 数据(商品),还有一个就是流水,我们需要生成一个订单 ID
假如用户退款的话,alipay 就会通过用户订单 ID 去找,找到之后返回收款人。引入 time 模块 自己生成一个.
pay_url 代表的是 二维码链接的地址、前面的是网关地址 拼接 上 商品信息。
写一个 url 看一下。

# urls.py
path('pay/', views.Paytest.as_view(), name='paytest'),

123
1234
12345
123456

然后用 PostMan 启动看一下
在这里插入图片描述
把 这个 url CV 下来 去 页面看一下
在这里插入图片描述

标签:alipay,扫码,公钥,Python,pay,地址,-----,沙箱
来源: https://blog.csdn.net/weixin_47587864/article/details/111194220

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有