支付宝支付流程
目录
1. 支付宝支付流程
2. 新建支付宝应用
2.1 第一步: 创建应用 (这里使用沙箱环境测试)
2.2 按照官方要求生成秘钥
2.3 把生成的 App 公钥粘贴到沙箱环境的 App 中
2.4 查看沙箱环境账号和密码
3. 测试支付宝获取支付宝扫码链接
3.1 支付宝开发网址
3.2 说明
3.3 app_private_key.pem App 私钥
3.4 alipay_public_key.pem 支付宝公钥
3.5 测试生成支付链接
蓝桥实验楼网址 : https://www.lanqiao.cn/vip
1. 支付宝支付流程
支付宝支付流程交互关系
2. 新建支付宝应用
- # 访问 "支付宝开发平台" 登录, 可以访问开发者中心
- https://open.alipay.com/platform/home.htm
- # 可以参考 "电脑网站支付" 熟悉电脑支付整体流程
- https://docs.open.alipay.com/270/105899/
2.1 第一步: 创建应用 (这里使用沙箱环境测试)
沙箱环境说明
线上环境需要创建应用, 因为我们不是企业, 没有资质, 所以只能申请沙箱环境
简单 -- 来讲沙箱环境就是给开发者使用的测试环境
沙箱环境地址:
过程配图
公钥加密, 私钥解密
2.2 按照官方要求生成秘钥
生成秘钥参考官网: https://docs.open.alipay.com/291/105971
一定要存储两个东西
支付宝公钥: 我发送信息给支付宝, 使用支付宝公钥进行加密
App 私钥 (我自己生成的): 支付宝给我发送的信息是用我刚刚上传的 App 公钥加密, 只有我 自己的私钥可以解密
2.3 把生成的 App 公钥粘贴到沙箱环境的 App 中
沙箱环境地址: https://openhome.alipay.com/platform/appDaily.htm?tab=info
2.4 查看沙箱环境账号和密码
# 买家信息
买家账号 [email protected]
登录密码 111111
支付密码 111111
# 商家账号 [email protected]
商户 UID2088102180143385
登录密码 111111
3. 测试支付宝获取支付宝扫码链接
3.1 支付宝开发网址
支付宝开放平台: https://open.alipay.com/platform/home.htm
支付宝沙箱环境: https://openhome.alipay.com/platform/appDaily.htm?tab=info
支付宝开发者文档: https://openhome.alipay.com/developmentDocument.htm
电脑网站支付流程: https://docs.open.alipay.com/270
生成签名: https://docs.open.alipay.com/291/106103/
python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
3.2 说明
阿里官方没有提供 python 对接支付的 sdk, 但是 python 库中有非官方的 sdk 包可以使用
python-alipay-adk :
使用起来非常简单, 只要传入几个必要的参数就可以完成
由于支付对安全要求很高, 所以要理解对接支付宝安全的流程:
公钥加密, 私钥解密
这八个字
3.3 app_private_key.pem App 私钥
- -----BEGIN RSA PRIVATE KEY-----
- MIIEpAIBAAKCAQEAxXRdL+ALzW4AW6ndW5/ZD44ppPsfm9If/oc3pc1gmqjT7z73swlUhotEPZnLsk8hqdEoR9fg/+0XijuJQqnU+CU3pptdXgkIcyq/fyvpRgkX2OA9G7CHEveZ97leaOG2RI1i2JvgUiM+O2LiDAAbTWtk8Chx+j2Z+R5s22zgI/y+45bcMht/YDxAbmgDFkBq32PyHlu3gTjoB7SqBZ8ecU8AKBxSjUPB3t5ls4T2P3Xy/ER2/PFcnh0vZGQsZRbHQ6wS1Jsql/3Wu1+tvHvIiKKXPGUcZe7czfqfwcIwVPrntEdPYC2JUSzC94vFwcMNAlai/aiWDCc4jDt1W7oetwIDAQABAoIBAQDBNBESjUk/I0laZ6Vex9PeMp5w/f95umrv5GMA6yqBanyldplsJ877Lz4AgIId4Ovxe+TMF2HjSZxk98hg4Eiw3cnMTe1X28LW3Zcu2kqQ6sjYvuFMPLiOSJPxHwJP4bs07Jsxk6Q0+qMj/KduUpRkdpb3nruXvbrxVWHyel//FM6jqCvxxFWBhCikDjNPZEgPJa+at1viN/u1eOoEO5/SBkVYePF6O3Nx8rR20nG2KfvvLkfWfBvVnIWdmkUmqMX2EIXF+af66FlcgWTszvkxpIS3KnHGK5rHe2+uTuJp57MY0WnJq5v6vKwhOADvNiwLg2dwLDSq9SRJzWnsm+RBAoGBAP0wA92l9IlaggLD8WCFeVICiNWGlA2jSYfindMXX9rf6xo8hSr/YWfyxu6guBqvo7b/onG7DwyrDOvlq7X/kQNbtxkis/oYBeWssF6ab10CtFuF1wUP5jXoaAMUIy2xrXcmO5bJsvTE6O9VZophlSo0uvXxBJRSgqfEo0wEET6HAoGBAMel3KitQQArxiD8SHDE6q1hb5elIDTyYiJI65EagWO41xcBMduu0tjZyoTbL6MWKHCxxXuOsWpQjtuF8FVesDMBBpC9VLO4IvnQDZb7lKXWgEnMc4gckL+KNzgkIzYNs1jW6IYfcY82iP22AoH3xbnaYI56sH2lARUZcUNe/3pRAoGBAPWvYSD1SEz8yco7L4A1JRwCn5tsA0EUoWa97d6IARkYTkBgV+z4ciH3gTjQNraWl2wdthlcpmbpmRlT/gMWozY6CnvWpATcyOQtZdv3SndcB34EazlbS04mXsAWC2js0GIddJeG1CQW695K5b0EokWZc47yuTngsy5vbvJ1w/IDAoGAW5jpaCo1DFMJD9Evmy19ThbKEBUedaxPAdPa4DP88Te410EhEt1et0cU92dor7ZWz32AUXPiShizslv9K+3JgV0TGg0Dc4Ej6uFdmsvKI1wKd9FpoCUa9AYB16wcy4v1oOjYvdBnVYF70ItVEzQOb3qVmkkH+F1f5cJKiNJo/EECgYA1OZn4LqvFsK/WG23FFcW6wvGOKjHgAfwENILiHBHNESYBtwnRaV0Vgikz3tfC5qehmuJT+N+bjsqsqaM3ZR50/xqWx6qGenA5KbGyMkWMu4LFAuqGKz1ocH
- 2kjM+jc0eNRzABj7A9ATx+1nfiKD0ehc6lrXIp71rItEuKxyO8w==
- -----END RSA PRIVATE KEY-----
- 3.4
- alipay_public_key.pem
支付宝公钥
- -----BEGIN PUBLIC KEY-----
- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB
- -----END PUBLIC KEY-----
3.5 测试生成支付链接
- # -*- coding: utf-8 -*-
- from alipay import AliPay
- # 沙箱环境中 App 私钥
- app_private_key_string = open('app_private_key.pem').read()
- # 支付宝公钥
- alipay_public_key_string = open( 'alipay_public_key.pem').read()
- def get_alipay_url():
- # 实例化一个 alipay 对象
- alipay = AliPay(
- appid="2016101800716047", # 沙箱 appid
- app_notify_url=None, # 默认回调 url
- app_private_key_string=app_private_key_string,
- # 支付宝的公钥, 验证支付宝回传消息使用, 不是你自己的公钥,
- alipay_public_key_string=alipay_public_key_string,
- sign_type="RSA", # RSA 或者 RSA2
- debug=True, # 默认 False, 我们是沙箱, 所以改成 True(让访问沙箱环境支付宝地址)
- )
- # 调用支付接口, 生成支付链接
- # 电脑网站支付, 需要跳转到 https://openapi.alipay.com/gateway.do? + order_string
- order_string = alipay.api_alipay_trade_page_pay(
- out_trade_no="201612226", # 订单 id, 应该从前端获取
- total_amount=str(0.01), # 订单总金额
- subject="测试阿里云付款", # 付款标题信息
- return_url=None, # 付款成功回调地址 (可以为空)
- notify_url=None # 付款成功后异步通知地址 (可以为空)
- )
- pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string
- print(pay_url) # 将这个 url 复制到浏览器, 就会打开支付宝支付页面
- def query_pay():
- alipay = AliPay(
- appid="2016101800716047", # 沙箱 appid
- app_notify_url=None, # 默认回调 url
- app_private_key_string=app_private_key_string,
- # 支付宝的公钥, 验证支付宝回传消息使用, 不是你自己的公钥
- alipay_public_key_string=alipay_public_key_string,
- sign_type="RSA", # RSA 或者 RSA2
- debug=True, # 默认 False, 我们是沙箱, 所以改成 True(让访问沙箱环境支付宝地址)
- )
- trade_query = alipay.api_alipay_trade_query(
- out_trade_no=20161112, # 上面生成支付码页面时传入的商品订单号
- trade_no=None
- )
- print(trade_query)
- if __name__ == '__main__':
- get_alipay_url()
- query_pay()
- '''
- trade_query 查询用户付款信息
- 返回信息详情请看官方: https://docs.open.alipay.com/api_1/alipay.trade.query
- {
- "code": "10000", # code=10000 代表支付成功
- "msg": "Success",
- "buyer_logon_id": "foq***@sandbox.com",
- "buyer_pay_amount": "0.00",
- "buyer_user_id": "2088102180228981",
- "buyer_user_type": "PRIVATE",
- "invoice_amount": "0.00",
- "out_trade_no": "20161112",
- "point_amount": "0.00",
- "receipt_amount": "0.00",
- "send_pay_date": "2020-02-20 21:20:48",
- "total_amount": "0.01",
- "trade_no": "2020022022001428981000087565",
- "trade_status": "TRADE_SUCCESS"
- }
- '''
生成链接地址如下
- https://excashier.alipaydev.com/standard/auth.htm?
- payOrderId=79d3a024f4904f58af434843b945132f.00
来源: http://www.bubuko.com/infodetail-3683187.html