支付寶支付流程


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 查看沙箱環境賬號和密碼

# 買家信息
買家賬號foqhub3270@sandbox.com
登錄密碼111111
支付密碼111111

# 商家賬號uqqgmd6602@sandbox.com
商戶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 : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
  • 使用起來非常簡單,只要傳入幾個必要的參數就可以完成
  • 由於支付對安全要求很高,所以要理解對接支付寶安全的流程: 公鑰加密、私鑰解密 這八個字

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
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM