支付宝开发平台登录

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端支付相关推荐

  1. python 支付宝接口_python调用支付宝支付接口流程

    项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11. ...

  2. 支付宝手机网站支付,app支付,PC端支付流程以及服务端php支付下单,回调流程详解

    一.支付宝支付相关文档地址: 支付宝支付相关的文档地址:https://open.alipay.com/api 电脑网站支付:https://opendocs.alipay.com/open/270/ ...

  3. 支付宝——PC端支付

    支付宝--PC端支付 首先登录蚂蚁金服开放平台,入驻选择自由研发的这些就不说了,注册下信息就可以了. 在开发者中心,开放者接入进行创建应用,添加功能等操作 创建完对应的应用后,去应用列表添加电脑网站支 ...

  4. python 网页版支付宝 api_Python接入支付宝进行PC端支付

    1.  支付宝开放平台登录,使用支付宝账号登录 2.选择沙箱模式 [支付宝提供了测试环境] 3.支付宝开发者文档 4.电脑网站支付 5.因为官方并没有提供Python语言的SDK,但是在github上 ...

  5. python支付宝自动支付_python 调用支付宝支付

    支付宝接口集成,本地环境调试支付请求 1.首先登录 蚂蚁金服网站,也就是支付宝开发者平台 登录蚂蚁金服开发者平台后,创建沙箱应用 开发者平台 也就是支付宝给开发者提供的调试环境应用 沙箱测试应用 2. ...

  6. python支付宝支付_python 调用支付宝支付

    支付宝接口集成,本地环境调试支付请求 1.首先登录 蚂蚁金服网站,也就是支付宝开发者平台 登录蚂蚁金服开发者平台后,创建沙箱应用 开发者平台 也就是支付宝给开发者提供的调试环境应用 沙箱测试应用 2. ...

  7. PC端支付——微信支付与支付宝支付

    1.微信支付 在pc端的微信支付功能中,调取微信统一下单接口后端返回的是一个支付链接,需将这个链接转化为二维码,扫码支付, PC端的扫码页面需要自己编写,统一下单之后,需要设置定时器查询订单状态,当订 ...

  8. 开源免费,electron+python制作图形化论文降重PC端工具

    小程序 为了更方便用户使用,也制作了免费"永久论文降重"微信小程序,具备更多的降重功能,欢迎体验. PC端论文降重工具 开源项目地址 https://github.com/imok ...

  9. python如何判断web访问来源是PC端还是手机端

    以下方法为判断web访问来源是PC端还是手机端 def judge_pc_or_mobile(ua):"""判断访问来源是pc端还是手机端:param ua: 访问来源头 ...

  10. python 二维码_Python提取支付宝和微信支付二维码

    本文首发于我的个人博客,更多 Python 和 django 开发教程,请访问 追梦人物的博客. 支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二 ...

最新文章

  1. 组件化的css-module
  2. c语言文件查找函数fread,文件函数fread
  3. 白话Elasticsearch27-深度探秘搜索技术之误拼写时的fuzzy模糊搜索技术
  4. SAP连接外部ORACLE数据库
  5. LINQ to XML .Net 3.5 中的新XML对象
  6. 关于测试url传值的问题
  7. 叠数的加法与字符串 RUNOOB python练习题 18
  8. Redis报错#MISCONF Redis is configured to save RDB snapshots, but is currently not
  9. 林斌宣布好消息!语音识别大佬、Kaldi之父加盟小米
  10. sqlite迁移mysql(导入导出数据)
  11. 云桌面优缺点_云桌面的缺点分析
  12. xfce 安装文泉驿字体
  13. 伪原创工具及伪原创工具的使用技巧
  14. 计算机游戏cpu,2021年11代酷睿cpu游戏电脑配置推荐(可装win7系统)
  15. 【数据分析】销售案例——用户购买频次
  16. 连接计算机和网线之间的设备,网线的制作及双绞线与设备之间的连接方法
  17. pid file /opt/zbox/tmp/apache/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
  18. Times New Roman vs Arial,期刊论文如何选择字体?
  19. mac nginx 非brew安装_Mac 安装 nginx
  20. python简单绘图

热门文章

  1. 量化金融入门笔记(一)
  2. 十、线程(11 章)
  3. 2015-2017互联网产品经理笔试题
  4. python星星闪烁_python实现while循环打印星星的四种形状
  5. DM8 Linux服务注册
  6. 计算机设备中运行速度最慢,决定电脑运行速度快慢的硬件因素
  7. 求求大家!急需一张云栖大会1920的单日票
  8. 用qpython3写一个发送短信的程序
  9. Android锁屏下弹窗的尝试,android开发实战我的云音乐
  10. 使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)