支付宝支付
入门
1)支付宝API:六大接口 https://docs.open.alipay.com/270/105900/ 2)支付宝工作流程(见下图): https://docs.open.alipay.com/270/105898/ 3)支付宝8次异步通知机制(支付宝对我们服务器发送POST请求,索要 success 7个字符) https://docs.open.alipay.com/270/105902/ # 如果用户支付成功的时候服务端宕机了,我们只需要将服务端重新启动即可, # 支付宝有8次异步回调,不会导致订单消失
支付宝工作流程
# 1、在沙箱环境下实名认证:https://openhome.alipay.com/platform/appDaily.htm?tab=info # 2、电脑网站支付API:https://docs.open.alipay.com/270/105900/ # 3、完成RSA密钥生成:https://docs.open.alipay.com/291/105971 # 下载支付宝开放平台开发助手(或者自己生成) # 4、在开发中心的沙箱应用下设置应用公钥:填入生成的公钥文件中的内容 # 5、Python支付宝开源框架:https://github.com/fzlee/alipay # 由于电脑网站支付没有 python sdk ,对着API列表里的找又比较麻烦,我们用第三方的sdk(也是扣着API做的封装,本身也是调用了API) pip install python-alipay-sdk --upgrade # 6、公钥私钥设置 """ # alipay_public_key.pem -----BEGIN PUBLIC KEY----- 支付宝公钥 -----END PUBLIC KEY----- # app_private_key.pem -----BEGIN RSA PRIVATE KEY----- 用户私钥 -----END RSA PRIVATE KEY----- """ # 7、支付宝链接 """ 开发:https://openapi.alipay.com/gateway.do 沙箱:https://openapi.alipaydev.com/gateway.do """
三、支付宝支付测试
https://openhome.alipay.com/platform/appDaily.htm?tab=info
# 沙箱环境 -商户号 -用户号
# 非对称加密 -公钥,私钥: -加密用公钥加密,解密用私钥解密
# 对称加密:加密和解密的密码一样
# 第三方支付宝sdk
生成公钥私钥的两种方式
生成公钥私钥的两种方式: -1.在本地使用命令生成: 打开 openssl ,然后输入如下: genrsa -out app_private_key.pem # 私钥 rsa -in app_privete_key.pem puout -out app_public_key.pem # 公钥 退出 openssl ,在当前位置查看这两个文件
-2.支付网站,软件生成:https://docs.open.alipay.com/291/105971 点链接,然后点web在线加密(如下图) -支付宝支付的话,仅有公钥私钥不行, - 还需要支付宝公钥---》把咱们的公钥填入---》生成支付宝公钥
方式二如下图:
复制上面的公钥,配置在下图,把咱们的公钥填入---》生成支付宝公钥
这样,我们就配置好了沙箱环境。
apliapy测试
pri
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAjjuwX8A2OubG3wBF7UYHoZSYmeOH9mMSXETYDBo6JJG47A70S0fS2E1AvJB+btB8WKgNeyRvT9fkAYuZBZrS8A8ovUsuiX7x+wCVQmth4qeabTTEQjATsml0CLC5dqrRSAG2w6oGpXtQZKP+/wZSD87Gk0iG/q4Z/1yA0z9DzGEQdXv+06fMk2i1mRXOyRIx7sokCmevu7Kc1OJTyA1o2YDv8v6mWjpWRQ3YOgQYZk166vkrfjv/bI46ZdIsZ3IvOCC6/s0BEoIhLxFUawOKnr8JAwULwACSdABbhZbzDzUJRfT0yMhGoREo9c4iqaIikgjJRHooTyalLaNsKkazaQIDAQABAoIBAQCHn+sCoqoTaFNh+US0h/5m2ObadtgC3V14ljzc7XVbwYhvr6LK1eX7U07Tf4TP7gVkFHsmXQu3Osmzn4V+jq9tMUdLmRD7Ew1ypo+tEe/4zJC4aYRrCKT/jwaR8tImkaOV4eyAjvRff0KddLOGQmSlpio77wCqgSFRGsfMp5rimo9Imd7pTbKV5SWF7f+Utg2aqy3zBwjPq1awCgZKGGYudYIzvbDsvpmITLZA0nlixl6N52VTnNER3/OtTpdoFf99xXVStR+NEVS8ycZfW4SZ8leqLAIu/BS1KYr8K+VM7/QFKCx8/0LTK0SCnpG8rgVPBKdYmz0XwPdIYyQLQdvBAoGBAMklm0YVNoB9b/+NrdYibKMwJZdou21W6v/RMHJLBizoDWuGUOQ40aYGC7AUM/JUipEBHg69rcRkeGSJhO5nxyfmpnswcyAEvDKUgWOrJ22xCDGl+x04ykSwLIsHVEw40mvVWlSSlrhXgX3eJJ050B9/MzhmXos+J9zM2uvwrMlNAoGBALUFN9DVuYcPoZavcwaVnWd7DAI1iXjqX/6QPEjeJ26D7YaETtS3/8Z8j9IQtG5HHZKTETCIxL6NQDx7RTXHPrfc74ttXj61L7JosGecDGcrAKdulvL03//cP/ZJ9eSopX/GxxdI3+/4p4tP4vxew2/GUcusEg2xMZVlNsLbgSSNAoGAQdpeC4PGZCqtEC2CTCjZCFQq+nb/ZbyfE0GZatHFI86VFi7TLOStPn2cNflnSF8FPpPvE0RmL3X1NHURYDv5p8aLmqkyB7mFI8oa0lamgfMDi72biOWe0v4alym/H3U67rLa7/VOAuwjKOIhepgC20z5p+1b5ppi0pb+1V/mMcECgYEAr5Q7Gk1jYbRwqGbPLBDMlwWLlUz2ZZj3uUOPpaINHy3JotMMX1mFNrG1EizvxZMnBPevEaNnKeh56PAsJkh29gHPOy6+3hYCCItwp159zUexn7UtpsSLzHGGfM4qOjq2JCTbESO3SdymLgMziFQmPnFe/y2MaUl4bY65ufEM5zUCgYEAgryn1FMXEtJ1EVg0ATMB/Ps87zbgRQpGYtDiBV1/Ax5P+WNJSx94o4GuxmduEuXPXthccTe5MPxcmOLbPcToymSJGdy3eywAyNkII1Nk5JrQphj4Peerc8I7pk6uhRnS9BEiw9AuC2bnG4w0XbfYmS6fmAkc2wfHAH/2VaXDH3E=
-----END RSA PRIVATE KEY-----
pub
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgzibcJkubn2xvjcFd2dZlO3Ig0SgDMIKVSX/G0LOuZx81fCb2PMFfvjKIpQ6WLKfIhFcipcYJn+8AfCcjezvtqRNCCpLGDV2iO14bwVC8k0QSyDos2euYqa5bD5Hay8hD/kc4GEZkENYvU6VcvkQEcuFBGi+qyf5Kd1WzEBoNDVIQhucAUgLFNOJrsrp05uARGfdJsCuM93f4TCdGR5X+Tz2W2DrpIlOxy1g4rHzr5JTV3/wBtsrREPxxinXQv84Pvqq/WBBMKuvazqOUD6FfPFDsa7rqGnzvfoW28pAgdowc2Hl61pmPAxWk0Nd62KKsLxTed42XFER613QJ64q6QIDAQAB -----END PUBLIC KEY-----
alipay_t.py
# alipay_t.py import os # 应用私钥 APP_PRIVATE_KEY_STRING = open('./pri').read() # 支付宝公钥 ALIPAY_PUBLIC_KEY_STRING = open('./pub').read() from alipay import AliPay pay=AliPay( appid=2021000120697524, app_notify_url=None, app_private_key_string=APP_PRIVATE_KEY_STRING , alipay_public_key_string=ALIPAY_PUBLIC_KEY_STRING, sign_type='RSA2', debug=False) res=pay.api_alipay_trade_page_pay( out_trade_no='123456', total_amount=float(99.99), # 只有生成支付宝链接时,不能用Decimal subject='智能电动小马达', return_url='http://127.0.0.1:8080/home', notify_url='http://127.0.0.1:8080/home', ) # print(res) pay_url='https://openapi.alipaydev.com/gateway.do?'+res print(pay_url)
aliapy二次封装
GitHub开源框架
https://github.com/fzlee/alipay
依赖的包
pip install python-alipay-sdk --upgrade # 如果抛ssl相关错误,代表缺失该包 python版本:3.8.10 pip install pyopenssl
包结构
alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
拿应用公钥跟支付宝换来的支付宝公钥
-----END PUBLIC KEY-----
app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
通过支付宝公钥私钥签发软件签发的应用私钥
-----END RSA PRIVATE KEY-----
settings.py
import os # 应用私钥 APP_PRIVATE_KEY_STRING = open(os.path.join(os.path.dirname(__file__),'pem','app_private_key.pem')).read() # 支付宝公钥 ALIPAY_PUBLIC_KEY_STRING = open(os.path.join(os.path.dirname(__file__),'pem','alipay_public_key.pem')).read() # 应用id APPID="2021000120697524", # 加密方式 SIGN_TYPE = "RSA2", # RSA or RSA2 # 是否是支付宝测试环境(沙箱环境),如果采用True是支付宝沙箱环境,默认配置False DEBUG = True, # False by default VERBOSE = False, # useful for debugging # 支付网关 用三元表达式 GATEWAY = 'https://openapi.alipaydev.com/gateway.do' if DEBUG else 'https://openapi.alipayd.com/gateway.do'
pay.py
from alipay import AliPay from . import settings # 支付对象 alipay = AliPay( appid=settings.APP_ID, app_notify_url=None, app_private_key_string=settings.APP_PRIVATE_KEY_STRING, alipay_public_key_string=settings.ALIPAY_PUBLIC_KEY_STRING, sign_type=settings.SIGN, debug=settings.DEBUG ) # 支付网关 gateway = settings.GATEWAY # alipay_url='https://openapi.alipaydev.com/gateway.do?' # order_string = alipay.api_alipay_trade_page_pay ( # out_trade_no="20161112www4334", # total_amount=9999, # subject='电动小马达', # return_url="https://www.luffycity.com/free-course", # notify_url="https://www.luffycity.com/free-course" # )
# print(alipay_url+'?'+order_string)
# 注意,拼接路径的时候要注意alipay_url后面是否带?号,没有要自己加上,否则地址会出错
__init__.py
# 包对外提供的变量 from .pay import gateway, alipay
补充
# 上线后必须换成公网地址 # 后台基URL BASE_URL = 'http://127.0.0.1:8000' # 前台基URL LUFFY_URL = 'http://127.0.0.1:8080' # 支付宝同步异步回调接口配置 # 后台异步回调接口 NOTIFY_URL = BASE_URL + "/order/success/" # 前台同步回调接口,没有 / 结尾 RETURN_URL = LUFFY_URL + "/pay/success"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)