支付寶第三方支付

  • 2020 年 3 月 13 日
  • 筆記

1、使用python對接支付寶

   使用第三方SDK(python-alipay-sdk):  https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

  1、登錄開發者中心,熟悉”電腦網站支付”整體流程

# 訪問"支付寶開發平台"登錄,可以訪問開發者中心  https://open.alipay.com/platform/home.htm  # 可以參考"電腦網站支付" 熟悉電腦支付整體流程  https://docs.open.alipay.com/270/105899/

  2、第一步:創建應用(這裡使用沙箱環境測試)

    1)沙箱環境說明

        1. 線上環境需要創建應用,因為我們不是企業,沒有資質,所以只能申請沙箱環境

        2. 簡單來講沙箱環境就是給開發者使用的測試環境

        3. 沙箱環境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

       

  2、按照官方要求生成秘鑰

       生成秘鑰參考官網:https://docs.open.alipay.com/291/105971 

      

   3、把生成的app公鑰粘貼到沙箱環境的app中

       沙箱環境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

      1)粘貼app公鑰到沙箱環境中

       

       2)支付寶公鑰一會再程序中要使用

      

2、使用 python-alipay-sdk 支付&查詢支付結果

  說明

      1. 阿里官方沒有提供python對接支付的sdk,但是python庫中有非官方的sdk包可以使用

      2. python-alipay-adk : https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

      3. 使用起來非常簡單,只要傳入幾個必要的參數就可以完成

      4. 由於支付對安全要求很高,所以要理解對接支付寶安全的流程:公鑰加密、私鑰解密  這八個字

   1.alipay_test.py

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(          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="201611124",  # 訂單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"  }  '''  

  2.alipay_public_key.pem 支付寶公鑰

-----BEGIN PUBLIC KEY-----  MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DI
pIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB -----END PUBLIC KEY-----

  3.app_private_key.pem 支付寶私鑰

-----BEGIN RSA PRIVATE KEY-----  MIICXAIBAAKBgQCqHFHARYve67Nt/xADRjFsRVTuwOaUiE6GBoQD6JnDOeD07TF1L7cqL4c4zxqEWlcb5p7ZO5Czyw7mpQ7W1jtI9smBxEPEC0ZvlsOuh8zAiVng4gj54eDHarLhfkMk+
/pzq44AT/B1CQgtUJRGZrppTO/4SEQZYMO5RcesnPO32QIDAQABAoGAZXlbMuzJkQLdGAKM1McseD+reHjNk1D0NnLwkTxRbOm7zZ8oX5VFF/8eFL9GPCl/yP77Ru6HVRkOHHvdrD5DQj
kJ4VipmDQ8xfZlpMmdc2HLtezqR9GG3xso/cAdpCCRjR+vHfr/BTltEiZD3OJapGojyURo/QG5qe7r5lPGBJkCQQD0iZy2+xTfgS58vlD8wtYOXVYkQ4aGtejKx0wgvyws3ahLmv5t9lB
B6YfKCVuOHv1ZvwAngWpTsoh4vxeLT8sbAkEAshWaaRyER9SJaeMIBuRf24Bmlyk6piDLTpOOE4lduvjR6j+IgJjY5/N4QTwy9G1vMVwWVzOX/wyinrY48wSkGwJBALcncudiO4oDuYvZ
B9OpIqZzphdXNCUljoyCpTRJu46HHowyNKqruAUGIpxiUd6qu1tCwZzVQ4wYxjqZ9cp0I00CQEJJ7ldQCSFfyOLEYrmGCvR/ADEmZLFwJZ2TKWC2UlCFzEWg7qPHwX3d0BagXOtFTQ2Xl
K1TBDIpNuNTOzGiuZ8CQAY/vcaxPm3VyjfevHpFmmwqHuNmRTyKdc3bd8NXTj/MJk7en/gK86PUHdixvudojGTbQOdSSWM/QQoVu8d+DFk= -----END RSA PRIVATE KEY-----

  

    

 

       

  支付寶支付流程