python对接支付宝支付_python对接支付宝PC端支付
支付宝开发平台登录
https://open.alipay.com/platform/home.htm
沙箱环境
沙箱环境是支付宝提供给开发者的虚拟环境,与真实环境是分开的
支付宝开发者文档文档主页:https://openhome.alipay.com/developmentDocument.htm产品介绍:https://docs.open.alipay.com/270快速接入:https://docs.open.alipay.com/270/105899/SDK:https://docs.open.alipay.com/270/106291/python对接支付宝SDK:https://github.com/fzlee/alipay/blob/master/README.zh-hans.mdpython对接支付宝SDK安装:pip install python-alipay-sdk --upgradeAPI列表:https://docs.open.alipay.com/270/105900/
接入步骤1.创建应用
2.配置秘钥
3. 调用接口
4.搭建开发环境
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将生成的公钥添加到支付宝中在应用中创建alipay_public_key.pem文件用来添加支付宝公钥并创建app_private_key.pem将私钥添加到app_private_key.pem中
PC网站支付流程 官方文档图片:
1.客户端发起支付请求流程(下单)
1.1首先用户发送请求到商户系统,
1.2 商户系统接收用户请求后向支付宝发请请求获取参数
1.3 支付宝返回参数
1.4 商户拼接好参数之后生成访问支付宝的url返回给用户class PaymentView(APIView):
permission_classes = [IsAuthenticated]
def get(self,request,order_id):
try:
order = OrderInfo.objects.get(order_id=order_id,
user=request.user,
pay_method=OrderInfo.PAY_METHODS_ENUM['ALIPAY'],
status=OrderInfo.ORDER_STATUS_ENUM['UNPAID'],
)
except OrderInfo.DoesNotExist:
return Response({'message': '订单信息有误'}, status=status.HTTP_400_BAD_REQUEST)
# 向支付宝发送请求,获取需要拼接支付网页的数据
alipay_clie = AliPay(
appid=settings.ALIPAY_APPID,
app_notify_url=None, # 默认回调url
app_private_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/app_private_key.pem"),
alipay_public_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)),
"keys/alipay_public_key.pem"), # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
sign_type="RSA2", # RSA 或者 RSA2
debug=settings.ALIPAY_DEBUG # 默认False
)
order_string = alipay_clie.api_alipay_trade_page_pay(
out_trade_no = order_id,
total_amount = str(order.total_amount),
return_url = 'http://www.xiaoxin.site:8080/pay_success.html',
notify_url=None,
subject = '商城订单%s' % order_id, # 支付页面的订单标题
)
# 拼接支付宝支付页面网址url
alipay_url = settings.ALIPAY_URL + "?" + order_string
# 返回
return Response({'alipay_url': alipay_url})
2.用户登录,进行支付。(无需考虑)
3.用户付款之后,支付宝分为三种方式告知商户
3.1 支付宝通过get请求returnURL将用户重定向到商户页面
3.2 支付宝通过post请求notifyUrl,主动告知商户
3.3 商户通信息过alipay.trade.query主动查看交易状态,支付宝返回交易
以下通过第三种方法演示:class PaymentStatusView(APIView):
def put(self,request):
# 获取请求参数
alipay_req_data = request.query_params
if not alipay_req_data:
return Response({'message': "缺少参数"}, status=status.HTTP_400_BAD_REQUEST)
alipay_req_dict = alipay_req_data.dict()
signature = alipay_req_dict.pop('sign')
# 向支付宝发起连接请求
alipay_clie = AliPay(
appid=settings.ALIPAY_APPID,
app_notify_url=None, # 默认回调url
app_private_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/app_private_key.pem"),
alipay_public_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)),
"keys/alipay_public_key.pem"), # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
sign_type="RSA2", # RSA 或者 RSA2
debug=settings.ALIPAY_DEBUG # 默认False
)
# 校验参数
result = alipay_clie.verify(alipay_req_dict,signature)
# 获取订单编号,支付流水号
if result:
# 订单编号
order_id = alipay_req_dict.get('out_trade_no')
# 支付宝支付流水号
trade_id = alipay_req_dict.get('trade_no')
# 保存支付流水号以及订单编号
Payment.objects.create(
order_id=order_id,
trade_id=trade_id
)
# 修改订单状态
OrderInfo.object.filter(order_id=order_id).update(status=OrderInfo.ORDER_STATUS_ENUM['UNSEND'])
return Response({'trade_id': trade_id})
else:
return Response({'message': "请求参数有误"}, status=status.HTTP_400_BAD_REQUEST)
成功页面:
搭建开发环境
python对接支付宝支付_python对接支付宝PC端支付相关推荐
- python 支付宝接口_python调用支付宝支付接口流程
项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11. ...
- 支付宝手机网站支付,app支付,PC端支付流程以及服务端php支付下单,回调流程详解
一.支付宝支付相关文档地址: 支付宝支付相关的文档地址:https://open.alipay.com/api 电脑网站支付:https://opendocs.alipay.com/open/270/ ...
- 支付宝——PC端支付
支付宝--PC端支付 首先登录蚂蚁金服开放平台,入驻选择自由研发的这些就不说了,注册下信息就可以了. 在开发者中心,开放者接入进行创建应用,添加功能等操作 创建完对应的应用后,去应用列表添加电脑网站支 ...
- python 网页版支付宝 api_Python接入支付宝进行PC端支付
1. 支付宝开放平台登录,使用支付宝账号登录 2.选择沙箱模式 [支付宝提供了测试环境] 3.支付宝开发者文档 4.电脑网站支付 5.因为官方并没有提供Python语言的SDK,但是在github上 ...
- python支付宝自动支付_python 调用支付宝支付
支付宝接口集成,本地环境调试支付请求 1.首先登录 蚂蚁金服网站,也就是支付宝开发者平台 登录蚂蚁金服开发者平台后,创建沙箱应用 开发者平台 也就是支付宝给开发者提供的调试环境应用 沙箱测试应用 2. ...
- python支付宝支付_python 调用支付宝支付
支付宝接口集成,本地环境调试支付请求 1.首先登录 蚂蚁金服网站,也就是支付宝开发者平台 登录蚂蚁金服开发者平台后,创建沙箱应用 开发者平台 也就是支付宝给开发者提供的调试环境应用 沙箱测试应用 2. ...
- PC端支付——微信支付与支付宝支付
1.微信支付 在pc端的微信支付功能中,调取微信统一下单接口后端返回的是一个支付链接,需将这个链接转化为二维码,扫码支付, PC端的扫码页面需要自己编写,统一下单之后,需要设置定时器查询订单状态,当订 ...
- 开源免费,electron+python制作图形化论文降重PC端工具
小程序 为了更方便用户使用,也制作了免费"永久论文降重"微信小程序,具备更多的降重功能,欢迎体验. PC端论文降重工具 开源项目地址 https://github.com/imok ...
- python如何判断web访问来源是PC端还是手机端
以下方法为判断web访问来源是PC端还是手机端 def judge_pc_or_mobile(ua):"""判断访问来源是pc端还是手机端:param ua: 访问来源头 ...
- python 二维码_Python提取支付宝和微信支付二维码
本文首发于我的个人博客,更多 Python 和 django 开发教程,请访问 追梦人物的博客. 支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二 ...
最新文章
- 组件化的css-module
- c语言文件查找函数fread,文件函数fread
- 白话Elasticsearch27-深度探秘搜索技术之误拼写时的fuzzy模糊搜索技术
- SAP连接外部ORACLE数据库
- LINQ to XML .Net 3.5 中的新XML对象
- 关于测试url传值的问题
- 叠数的加法与字符串 RUNOOB python练习题 18
- Redis报错#MISCONF Redis is configured to save RDB snapshots, but is currently not
- 林斌宣布好消息!语音识别大佬、Kaldi之父加盟小米
- sqlite迁移mysql(导入导出数据)
- 云桌面优缺点_云桌面的缺点分析
- xfce 安装文泉驿字体
- 伪原创工具及伪原创工具的使用技巧
- 计算机游戏cpu,2021年11代酷睿cpu游戏电脑配置推荐(可装win7系统)
- 【数据分析】销售案例——用户购买频次
- 连接计算机和网线之间的设备,网线的制作及双绞线与设备之间的连接方法
- pid file /opt/zbox/tmp/apache/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
- Times New Roman vs Arial,期刊论文如何选择字体?
- mac nginx 非brew安装_Mac 安装 nginx
- python简单绘图