一. 在

如果想要得到 支付宝的公钥 就需要获取 应用的公钥,具体获取方式 :

应用私钥和支付宝公钥 获取 和 配置 过程:

1. 下载后打开文件夹  点击  RSA签名验签工具.bat   然后生成密钥 , 然后退出就行了

2. 找到 RSA密钥 的文件夹 , 将里面的 应用公钥 复制一下 , 然后在 沙箱应用 中点击 -> 查看应用公钥,

-> 点击修改, 将刚才的 应用公钥 粘贴上去,然后保存,此刻你会多一个支付宝公钥 ( 注: 当你修改应用公钥后,支付宝公钥会自动生成 )

3. 准备两个文本文件名为( 文件名随意,注意规范 ) :

alipay_public_2048.txt (存放支付宝公钥) 和app_private_2048.txt (存放应用私钥)

这里注意两点 :

1. 应用私钥指的是 刚刚 RSA密钥 文件夹中 的应用私钥 ,而 公钥指的是 刚刚上传 应用公钥后给你自动生成的 应用公钥

2. 将应用私钥和支付宝公钥保存在 文本中的时候 要添加 一个标识 ( 必须加 ):

- 打开alipay_public_2048.txt(存放支付宝公钥) 这个空文本 格式是这样的:

-----BEGIN PUBLIC KEY-----

中间放入你的支付宝公钥

-----END PUBLIC KEY-----

- 打开 app_private_2048.txt (存放应用私钥)这个空文本 格式是这样的:

-----BEGIN RSA PRIVATE KEY-----

中间放你的应用私钥

-----END RSA PRIVATE KEY-----

下载工作

pip install python-alipay-sdk --upgrade

2. 导入加密模块

pip install Crypto

二:示例代码

- Url

urlpatterns=[

url(r"^index/$",views.index), #商品页面 API

url(r"^back_url/$",views.back_url), #支付成功后的重定向 API

url(r"^update_order/$",views.back_url), #支付成功后的异步POST请求 API

]

- Views

from django.shortcuts importrender,HttpResponse,redirectfrom django.views.decorators.csrf import csrf_exempt #取消 csrf组件

importtimedefAlipay():

alipay=AliPay(

appid='2016092800613180',  #appid (详细在你的沙箱应用中的 APPID)

app_notify_url='http://127.0.0.1:8045/update_order/', #异步回调url(回调地址需是服务器地址,否则接收不到回调结果)

app_private_key_path='app_test/app_private_2048.txt', #应用私钥

alipay_public_key_path='app_test/alipay_public_2048.txt', #支付宝公钥

sign_type="RSA2", #RSA 或者 RSA2 -- 这里注意一点:2018年1月5日后创建的应用只支持RSA2的格式;

debug=True, #默认False -- 设置为True则是测试模式,正式上线的话改为 False就行了

)returnalipaydefindex(request):"""# 这里发起POST的支付请求"""

if request.method == 'GET':return render(request,'index.html')

alipay=Alipay()

out_trade_no= "x2" +str(time.time())

order_string=alipay.api_alipay_trade_page_pay(

out_trade_no=out_trade_no, #订单号 - 注 : 每次的订单号不能一致

total_amount=0.01, #商品价格

subject='shop_name', #商品名称

return_url = 'http://127.0.0.1:8045/back_url/', #支付成功后 - 重定向自己的网站

notify_url='http://127.0.0.1:8045/update_order/' #支付成功后 - 异步发送支付结果到回调地址(地址需是服务器地址,否则无法接收到回调结果)

)

pay_url= "https://openapi.alipaydev.com/gateway.do?{}".format(order_string)#注 :这里结尾不能加 /

returnredirect(pay_url)defback_url(request):"""# 支付成功后的回调函数 -- 重定向自己的网站

# 同时在重定向之前会校验此次支付信息是否正确

:param request:

:return:"""params=request.GET.dict()

sign= params.pop('sign', None)print(params)

alipay=Alipay()

status= alipay.verify(params, sign) #返回 True or False

ifstatus:return HttpResponse('支付成功')return HttpResponse('支付失败')

@csrf_exemptdefupdate_order(request):"""支付成功后,支付宝向该地址发送的POST请求(用于修改订单状态)

:param request:

:return:"""

if request.method == 'POST':from urllib.parse importparse_qs

body_str= request.body.decode('utf-8')

post_data=parse_qs(body_str)

post_dict={}for k, v inpost_data.items():

post_dict[k]=v[0]

alipay=Alipay()

sign= post_dict.pop('sign', None)

status=alipay.verify(post_dict, sign)ifstatus:#1. 获取订单号(获取的订单号是你上面的参数: out_trade_no)

out_trade_no = post_dict.get('out_trade_no')print(out_trade_no)#2. 根据订单号将数据库中的数据进行更新(修改订单状态)

return HttpResponse('success')# 3. 最终需要返回 "success" 字符给支付宝,否则支付宝将一直请求该地址并发送回调结果(具体看官方文档)return HttpResponse('success')

- AliPay 中的加密配置(本身就是配置好的,但是如果验证出问题了,看看这里对不对):

from datetime importdatetimefrom Crypto.PublicKey importRSAfrom Crypto.Signature importPKCS1_v1_5from Crypto.Hash importSHA256from urllib.parse importquote_plusfrom urllib.parse importurlparse, parse_qsfrom base64 importdecodebytes, encodebytesimport json

三:最后总结一点容易出现的错误 和 一些方法的说明

-return_url :支付成功后 - 重定向自己的网站

- notify_url :支付成功后 - 发送的POST订单验证消息(异步)

- out_trade_no :这个是订单号 -- 注意一点,千万不要测试的时候每次使用一个同一个订单号,否则会出现支付页面无法打开的问题

- debug = True / False :如果等于 True 的话就是测试环境的支付,如果是 False 就是正式环境的支付

- app_private_key_path :后面写 应用的私钥 路径位置

- alipay_public_key_path : 后面写 支付宝的公钥 路径位置

- sign_type = "RSA2" :可以使用  RSA 或者 RSA2 ,

这里注意下 :2018年1月5日后创建的应用只支持RSA2的格式;

-"https://openapi.alipaydev.com/gateway.do?{}".format(order_string)  --  结尾不要加 / (反斜杠)

注:带 dev 则是测试用的接口,但是不带 dev 就是真正的支付接口

- 最后说一点规范:

1. 建议把 AliPay 下面的 appid 什么的信息 写在 settings 中,

然后导入 settings 在通过 settings.APPID 拿到信息

2. 将存放 应用密钥 和 支付宝公钥 的 txt 文件放到单独一个文件夹中

python sdk怎么用_python - alipay sdk 使用 及 注意点相关推荐

  1. 如何开发python sdk调用数据_Python SDK调用示例

    开发者可以通过Python SDK,调用物联网数据分析中生成的API. 步骤一:安装SDK 登录Python官方网站下载2.6.5及以上版本的Python,并按说明完成安装. (可选)安装Python ...

  2. Xamarin只言片语3——Xamarin.Android下支付宝(Alipay SDK)使用

    开发环境Visual Studio 2015,Xamarin 3.11.1537,Xamarin Android5.1.7.12 下载支付宝移动支付的SDK(http://doc.open.alipa ...

  3. python如何使用sdk_如何使用SDK开发一个博客

    一.开发环境搭建 1.安装python 请在python官网下载根据机器选择下载python2.7.14.参考链接https://www.python.org/downloads/release/py ...

  4. python如何使用sdk_Python实现海康威视SDK二次开发-1

    此贴能起到的作用 通过这个帖子,能了解到如何用Python调用海康SDK,实现业务逻辑需要结合哪些资料,这些接口的参数是怎么样的,如何翻译成Python,如何传参,参数中的一些变量,常量可以怎样查找. ...

  5. 提升普适性,阿里云官方SDK发布支持Go语言SDK

    摘要: 日前,阿里云官方SDK发布支持新语言--Go 语言SDK,意味着90%以上产品可以随时生成并发布Go SDK,给Go语言的开发者使用. 此次阿里云发布支持Go SDK的新功能,可以让Go语言开 ...

  6. python输出去空格_python不空格

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 退格(backspace) e 转义 000 空 n 换行 v 纵向制表符 t ...

  7. python国内下载地址_python下载链接

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 1.需要的python库requests2.代码(复制可用)#引用 reques ...

  8. iSpring SDK 10 Crack!iSpring SDK NEW @ 2022定格!

    iSpring SDK-------5.7.0到  10.0版本 iSpring SDK(软件开发工具包)是一种高性能解决方案,可为网站和在线应用程序提供自动 PowerPoint 到 HTML 5 ...

  9. python怎么求整数_python求整数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 求解方法:1.整数求余2.重复进行,整数除2再求余,直到除数为03.拼接余数4. ...

  10. python 语音播报库_python 语音库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我需要自动分离两位发言者的声音. 我刚开始学习语音识别,我看了python的wa ...

最新文章

  1. 核弹级漏洞!我把log4j扒给你看!
  2. 一个颠覆性答案,登上《科学》封面:是什么弄破了这些泡泡? | 科学GIF
  3. termux pythonlxml安装_将安卓手机打造成你的python全栈开发利器
  4. 「 每日一练,快乐水题 」693. 交替位二进制数
  5. SAP UI5 xml view content parse
  6. C#并行编程(2):.NET线程池
  7. 个人学习机器学习笔记--
  8. [转载] Python开发系列课程(16) - 进程和线程
  9. 【转贴】 java 调用SAP RFC函数 报错信息搜集
  10. Tomcat------如何配置域名和80端口
  11. android 5.1 内核版本号,最新的安卓5.1.1 ROOT教程(不需要刷第三方内核)
  12. ext.js解决html乱码,extjs 中文乱码
  13. 湖南交通学院校友会小程序云开发解决方案
  14. android学习日记——高级组件3(PopupWindow,Notifcation,Style,Theme,自定义组件)
  15. minecraft刷怪笼java_Minecraft怪物经验top9!刷怪箱位列第4,杀玩家第2出乎意料
  16. RDkit二:利用RDkit筛选进行化学小分子2D药效团筛选
  17. 做人要低调,绝对经典的低调
  18. RabbitMQ教程_2 RabbitMQ 安装
  19. itextpdf convert html string to Pdf
  20. 学习笔记-三维超声相关知识

热门文章

  1. 我的凸优化学习之路(转)
  2. C++--第17课 - 继承与多态 - 上
  3. vue.js 父子组件间 props 数据同步处理
  4. XDebug On Ubuntu
  5. DreamWeaver CS3中的SPRY的自定义验证
  6. JAVA Thread的中断机制(interrupt)
  7. 开发工具 之 PowerDesigner
  8. Tomcat and solr 环境配置
  9. 谁能再一次接受“南京大×××”不存在?
  10. linux下configure命令详细介绍[转]