思路剖析
支付宝开放平台 登录
登陆之后 点击这个 研发服务
然后下载 一个 支付宝沙箱的 移动端
点击左侧的沙箱账号,就可以知道 登录沙箱的 账号和 密码了,也可以 往死充钱。他是可以扫 沙箱收款的二维码的。
我们现在需要 生成 RSA密钥
然后再 点击
然后下载这个工具
下载好后 找到我的 文档地址
往下滑动 可以发现 设置的一些条件 我们记录一下
APPID --> 101400681366
支付宝网关 --> /gateway.do
要用到关键性 的东西了 RSA2 我们先 设置一下它
然后更改 公钥
出现下面这个后 我们等待一下啊
我们 打开刚下 下载的 软件包
双击打开 静静等待 然后复制公钥
复制之后 替换 刚才打开的 加签管理中的公钥
替换后 保存
然后继续 更改 公钥
点击修改后
回到 .bat 生成密钥的工具 打开 文件所在的位置,把那两个 text 放到我们的 项目里。
这两个文件非常的重要
回到 沙箱 填写这些内容
回调地址 故名思意 扫码完成后 跳转的到的地址,所以我们要写一个视图函数来 对应这个地址。
# views.pydef pay_result(request):pass
先简短的这么写 后期再完善它。所以回调地址 就要写 这个名字
应用网关 设置成 咱们刚才 暂存的那个
呼~ 配置完了 该到 Python 的了
# 第一次安装 不用执行后面的 upgradepip install python-alipay-sdk --upgrade
将下面的语句 放到 项目中的 应用公钥里面
在支付宝上下载的公钥是一个字符串,需要在文本的尾部添加标记-----BEGIN PUBLIC KEY-----内容-----END PUBLIC KEY-----密钥也是如此-----BEGIN PRIVATE KEY-----内容-----END PRIVATE KEY-----
将 刚才的 两个 公钥密钥文件放入 我们的项目目录里,和 DJango 的父子应用同级
然后我们 为了 避免 中文 将他们改成了 这个名字。
下载的 引入的Alipay
源码:
看 引入的Alipay源码可知 它所需要的以下的参数
# views.pyAPPID = ################ 你的APPIDAIPAY = '/gateway.do' # 支付宝网关from alipay import AliPayfrom shiyanlou.settings import BASE_DIRimport osdef alipay(): # 之前是 pay_resultap = 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
写到这里想必大家有所猜疑了吧,ID、公钥、密钥、回调地址、这个就是请求支付宝 沙箱 接口的必要参数把,return返回 就横额说明白这个意思了。没错就是这样的。
然后 作为 收款人的我们 写一个商品,调用alipay中的网页支付方法,实现 一个页面的支付二维码 和商品进行关联的话 我们 测试一下。更改成类方法:
# views.pyimport timeclass 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_stringreturn Response({'pay_url': pay_url})
alipay也就是支付宝在支付的时候 是有两个订单ID的 一个订单ID对应着 数据(商品),还有一个就是流水,我们需要生成一个订单ID。
假如用户退款的话,alipay就会通过用户订单ID去找,找到之后返回收款人。引入 time 模块 自己生成一个.
pay_url代表的是 二维码链接的地址、前面的是网关地址 拼接 上 商品信息。
写一个 url 看一下。
# urls.pypath('pay/', views.Paytest.as_view(), name='paytest'),
然后用 PostMan 启动看一下
把 这个 url CV 下来 去 页面看一下
我的 兰博基尼-艾文塔多 终于出来了。。。
我就不扫了 ok