django对接阿里云支付

本文详细介绍了如何在Django项目中接入支付宝支付,包括注册开发者账号、沙箱环境的使用、RSA公私钥的生成与配置,以及正式接入支付宝的步骤。同时,提到了在Django中设置相关配置和视图的实现。
摘要由CSDN通过智能技术生成

第三方支付-支付宝接入相关

1,注册开发者账号

​ 调试支付宝支付需要先 在 支付宝开放平台 进行注册,入驻为 “自助研发者”;链接为 https://open.alipay.com/platform/home.htm

​ 第一次进入需要填写详细信息 - 注意:切换为 自研开发者

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-izzsqltQ-1619270557404)(images\1584197606859.png)]

2,进入沙箱

完善个人信息后,在个人管理后台可看到 “沙箱” 服务

注:沙箱为支付宝提供的调试支付的测试环境,在该环境下,可模拟和调试支付流程

具体位置如下: 开发者中心 - 首页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rbnun72B-1619270557410)(images\1584258109763.png)]

3,查看沙箱

点击 研发服务 - 进入沙箱后, 在沙箱应用选项中可以看到支付宝提供的测试应用

注:当您的网站上线运营时,需要在开放平台申请一个应用;并填写相关信息审核后,方可使用支付功能;沙箱应用为支付宝提供开发者测试用的应用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WQLIHTXt-1619270557412)(images\1584258794452.png)]

4,生成&添加 RSA 公私钥

4-1 生成钥匙

支付过程中涉及到请求和响应的签名校验;

在linux终端中 输入openssl 进入 交互环境

tarena@tedu:~$openssl
OpenSSL> genrsa -out app_private_key.pem 2048   #私钥
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem               #导出公钥
OpenSSL> exit
tarena@tedu:~$ls
    app_private_key.pem   app_public_key.pem

RSA 钥匙用途

公钥加密/私钥解密

私钥签名/公钥验签

4-2 添加公钥

点击 沙箱应用展示信息页中的 RSA2密钥设置/查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pr2YkmTr-1619270557416)(images\1584259358341.png)]

在弹出的对话框中,选择 公钥 模式

并将您刚才生成出的 app_public_key.pem 中的内容 复制到 红色大框体内,并保存复制

注意,生成公钥如下, 只复制 -----BEGIN PUBLIC KEY----- 和 -----END PUBLIC KEY----- 之间的内容即可

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA871I3CXvQWXcbwbcyEJB
r7Prxfhf34z1lzZWEaeBugCiUNjK2llrVKyV5tcHqxv9xTzQXz6Mg4n0jmhqkqtI
B6gCNAo5bYMN9nDRnqZ33ojJmZMmxupWUZCvz+3Svft0P0hd/oKc0OZOTI8MPPNV
y5HsovhABUfVsTgSH/AlMoKEz7sM7Cqtb2LT8nZewSdrnEhLrw7KFkDyNfftO8CF
yls6MbNeI4CHmc0PTcXJ7O8+Fx0WOJrYDKPMHW25OxB1IT3Pdn8PnAbtYeRoiUU1
Yfp/qZMmnedZgF0Qpr+ZIZLPhAZrRwqfMcfSIiNJvmcsUKVGLBal10frAIztHKmW
eQIDAQAB
-----END PUBLIC KEY-----

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rcJQRd0O-1619270557418)(images\1584259487199.png)]

4-3 保存支付宝公钥

提交我方公钥后,弹框会显示 支付宝公钥;该公钥需要复制保存下来;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tNca72GZ-1619270557420)(images\1584260105387.png)]

保存流程如下:

1,用户目录下  
vim alipay_public_key.pem

2,进入vim后手动添加如下两行
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----

3,光标在BEGIN处 点击 键盘o  进入插入模式,此时光标停留在 BEGIN和END的两行之间;粘贴支付宝公钥  最终格式如下

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgVjSs4PrjOsJ/c/m7SDYoPKPIwvEwq3U6p2dzpB0X/wVsYsZEHLrWEeVZfTHi9J0yrvwnxgUPlCGKv4EaJuc8msWuuH3TxEvurTPJxYUCOiBIQYeG5iRTh3fWyCkMlLNm8UXv0v+KRVK9bZ17cWB0vBM7iwrytGbfKg0vhIjsybbOd4VM/m4bWZOFdkXAmJfbO+pfMsa9TzF5zYmSpoHuBAkGu9m7EtzzBlXifthYkhvyEAX/XWG3rgaEe+l8W+NlPZ1uudZ2AIWLvnLl5Jjrcz1yMJqOhsobBrPiWbnwnRsMz1Sn9W9rl/cGITcboPlEMgs988Vcd/o21gHDNwNKQIDAQAB
-----END PUBLIC KEY-----

4,esc退出插入模式, 执行 :wq 退出保存 

5, 安装 python 的 支付宝组件

# 安装python-alipay-sdk
sudo pip3 install python-alipay-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple

#安装成功后执行如下命令 校验安装结果
tarena@tedu:~$ pip3 freeze|grep -i ali
python-alipay-sdk==2.0.1 #输出此结果 则表示安装成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nEVctcu4-1619270557421)(images/支付宝交互时序图.png)]

关于return_url和notify_url的问题

  • return_url 【GET】

    • 如果不给return_url支付宝处理完业务会留在自己的网页不做跳转
    • 重定向时会带上订单编号等参数
  • notify_url 【POST】

    • 支付结果异步通知

    • 对于 PC 网站支付的交易,在用户支付完成之后,支付宝会根据 API 中商户传入的 notify_url,通过 POST 请求的形式将支付结果作为参数通知到商户系统。

    • 详见(https://docs.open.alipay.com/270/105902/)

代码演示


6, 正式接入支付宝

当您在沙箱环境测试完毕后,且您的网站基础功能均已开发完毕,需要在支付宝开放平台 申请应用 方可 正式接入到支付宝

6-1 创建应用

开放平台首页- 创建应用 - 网页&移动应用 - 支付接入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wPzsRu8-1619270557422)(images\1584262028920.png)]

6-2 填写应用信息

填写应用相关信息后 点击 - 确认创建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hiUerKiE-1619270557423)(images\1584262225057.png)]

6-3 签约 快捷即时到账 功能

快捷即时到账 即为 支付宝的 网页支付功能,该功能需要 在应用显示页面手动添加才可支持

步骤1 点击 添加能力

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JGYn0TX2-1619270557424)(images\1584262610212.png)]

步骤2 选择 快捷即时到账

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3UMhQIHO-1619270557425)(images\1584262807310.png)]

6-4 添加公钥 - 同 沙箱流程

在当前应用信息显示页下方,设置 接口加签方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmmPfZeH-1619270557426)(images\1584262861802.png)]在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

########################################################################

#代码

安装 python -django和 支付宝组件

# 安装python-alipay-sdk
pip3 install django
sudo pip3 install python-alipay-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install alipay 

创建django项目及应用

django-admin startproject alipay_test
cd alipay_test
python3 manage.py startapp payment
mkdir -p templates  static/js static/key_file 
cd ~
cp  -r app_private_key.pem   app_public_key.pem alipay_public_key.pem /opt/alipay_test/static/key_file

alipay_test/settings.py

vim alipay_test/settings.py

"""
Django settings for alipay_test project.

Generated by 'django-admin startproject' using Django 2.2.12.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用阿里云短信服务在Django中发送短信,需要先注册阿里云账号并开通短信服务。然后按照以下步骤进行操作: 1. 安装阿里云Python SDK。 2. 在Django项目的settings.py文件中添加以下配置: ``` ALIYUN_ACCESS_KEY_ID = '<AccessKeyId>' ALIYUN_ACCESS_KEY_SECRET = '<AccessKeySecret>' ALIYUN_SMS_SIGN_NAME = '<短信签名>' ALIYUN_SMS_TEMPLATE_CODE = '<短信模板编号>' ``` 其中,<AccessKeyId>和<AccessKeySecret>是阿里云提供的访问密钥,<短信签名>和<短信模板编号>是需要提前创建的。 3. 创建一个发送短信的函数,如下所示: ```python from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest def send_sms(phone_numbers, template_param): client = AcsClient(ALIYUN_ACCESS_KEY_ID, ALIYUN_ACCESS_KEY_SECRET, 'cn-hangzhou') request = CommonRequest() request.set_method('POST') request.set_domain('dysmsapi.aliyuncs.com') request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('PhoneNumbers', phone_numbers) request.add_query_param('SignName', ALIYUN_SMS_SIGN_NAME) request.add_query_param('TemplateCode', ALIYUN_SMS_TEMPLATE_CODE) request.add_query_param('TemplateParam', template_param) response = client.do_action(request) return response ``` 其中,phone_numbers是接收短信的手机号码,template_param是短信模板中需要替换的参数。 4. 在需要发送短信的地方调用send_sms函数即可。 注意:使用阿里云短信服务需要按照相关规定使用,不能发送垃圾短信或违法信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值