支付寶程式碼示例結構說明

風靈使發表於2018-09-14
        ╭───────────────────────╮
 ────┤     支付寶程式碼示例結構說明    ├────
        ╰───────────────────────╯ 

介面名稱:支付寶純擔保交易介面(create_partner_trade_by_buyer)
程式碼版本:3.3
開發語言:ASP.NET(c#)
版 權:支付寶(中國)網路技術有限公司
制 作 者:支付寶商戶事業部技術支援組
聯絡方式:商戶服務電話0571-88158090

───────

程式碼檔案結構

───────

create_partner_trade_by_buyer-CSHARP-UTF-8
  │
  ├app_code ┈┈┈┈┈┈┈┈┈┈類資料夾
  │  │
  │  ├AlipayConfig.cs┈┈┈┈┈基礎配置類檔案
  │  │
  │  ├AlipayCore.cs┈┈┈┈┈┈支付寶介面公用函式類檔案
  │  │
  │  ├AlipayNotify.cs┈┈┈┈┈支付寶通知處理類檔案
  │  │
  │  ├AlipaySubmit.cs┈┈┈┈┈支付寶各介面請求提交類檔案
  │  │
  │  └MD5.cs ┈┈┈┈┈┈┈┈┈MD5類庫
  │
  ├log┈┈┈┈┈┈┈┈┈┈┈┈┈日誌資料夾
  │
  ├default.aspx ┈┈┈┈┈┈┈┈支付寶介面入口檔案
  ├default.aspx.cs┈┈┈┈┈┈┈支付寶介面入口檔案
  │
  ├notify_url.aspx┈┈┈┈┈┈┈伺服器非同步通知頁面檔案
  ├notify_url.aspx.cs ┈┈┈┈┈伺服器非同步通知頁面檔案
  │
  ├return_url.aspx┈┈┈┈┈┈┈頁面跳轉同步通知檔案
  ├return_url.aspx.cs ┈┈┈┈┈頁面跳轉同步通知檔案
  │
  ├Web.Config ┈┈┈┈┈┈┈┈┈配置檔案(整合時刪除)
  │
  └readme.txt ┈┈┈┈┈┈┈┈┈使用說明文字

※注意※
需要配置的檔案是:

alipay_config.cs
default.aspx
default.aspx.csreturn_url.aspx
return_url.aspx.cs notify_url.aspx
notify_url.aspx.cs

統一名稱空間為:namespace Com.Alipiay

─────────

類檔案函式結構

─────────

AlipayCore.cs

public static Dictionary<string, string> ParaFilter(SortedDictionary<string, string> dicArrayPre)

功能:除去陣列中的空值和簽名引數並以字母a到z的順序排序
輸入:SortedDictionary<string, string> dicArrayPre 過濾前的引數組
輸出:Dictionary<string, string> 去掉空值與簽名引數後的新簽名引數組

public static string CreateLinkString(Dictionary<string, string> dicArray)

功能:把陣列所有元素,按照“引數=引數值”的模式用“&”字元拼接成字串
輸入:Dictionary<string, string> dicArray 需要拼接的陣列
輸出:string 拼接完成以後的字串

public static string CreateLinkStringUrlencode(Dictionary<string, string> dicArray, Encoding code)

功能:把陣列所有元素,按照“引數=引數值”的模式用“&”字元拼接成字串,並對引數值做urlencode
輸入:Dictionary<string, string> dicArray 需要拼接的陣列
Encoding code 字元編碼
輸出:string 拼接完成以後的字串

public static void log_result(string sPath, string sWord)

功能:寫日誌,方便測試(看網站需求,也可以改成存入資料庫)
輸入:string sPath 日誌的本地絕對路徑
string sWord 要寫入日誌裡的文字內容

public static string GetAbstractToMD5(Stream sFile)

功能:獲取檔案的md5摘要
輸入:Stream sFile 檔案流
輸出:string MD5摘要結果

public static string GetAbstractToMD5(byte[] dataFile)

功能:獲取檔案的md5摘要
輸入:byte[] dataFile 檔案流
輸出:string MD5摘要結果

┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉

MD5.cs

public static string Sign(string prestr, string key, string _input_charset)

功能:簽名字串
輸入:string prestr 需要簽名的字串
string key 金鑰
string _input_charset 編碼格式
輸出:string 簽名結果

public static bool Verify(string prestr, string sign, string key, string _input_charset)

功能:驗證簽名
輸入:string prestr 需要簽名的字串
string sign 簽名結果
string key 金鑰
string _input_charset 編碼格式
輸出:string 驗證結果

┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉

AlipayNotify.cs

public Notify()

功能:建構函式
從配置檔案中初始化變數

public bool Verify(SortedDictionary<string, string> inputPara, string notify_id, string sign)

功能:驗證訊息是否是支付寶發出的合法訊息
輸入:SortedDictionary<string, string> inputPara 通知返回引數陣列
string notify_id 通知驗證ID
string sign 支付寶生成的簽名結果
輸出:bool 驗證結果

private string GetPreSignStr(SortedDictionary<string, string> inputPara)

功能:獲取待簽名字串(除錯用)
輸入:SortedDictionary<string, string> inputPara 通知返回引數陣列
輸出:string 待簽名字串

private bool GetSignVeryfy(SortedDictionary<string, string> inputPara, string sign)

功能:獲取返回回來的待簽名陣列簽名後結果
輸入:SortedDictionary<string, string> inputPara 通知返回引數陣列
string sign 支付寶生成的簽名結果
輸出:bool 簽名驗證結果

private string GetResponseTxt(string notify_id)

功能:獲取是否是支付寶伺服器發來的請求的驗證結果
輸入:string notify_id 通知驗證ID
輸出:string 驗證結果

private string Get_Http(string strUrl, int timeout)

功能:獲取遠端伺服器ATN結果
輸入:string strUrl 指定URL路徑地址
int timeout 超時時間設定
輸出:string 伺服器ATN結果字串

┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉

AlipaySubmit.cs

private static string BuildRequestMysign(Dictionary<string, string> sPara)

功能:生成簽名結果
輸入:Dictionary<string, string> sPara 要簽名的陣列
輸出:string 簽名結果字串

private static Dictionary<string, string> BuildRequestPara(SortedDictionary<string, string> sParaTemp)

功能:生成要請求給支付寶的引數陣列
輸入:SortedDictionary<string, string> sParaTemp 請求前的引數陣列
輸出:Dictionary<string, string> 要請求的引數陣列

private static string BuildRequestParaToString(SortedDictionary<string, string> sParaTemp, Encoding code)

功能:生成要請求給支付寶的引數陣列
輸入:SortedDictionary<string, string> sParaTemp 請求前的引數陣列
Encoding code 字元編碼
輸出:string 要請求的引數陣列字串

public static string BuildRequest(SortedDictionary<string, string> sParaTemp, string strMethod, string strButtonValue)

功能:建立請求,以表單HTML形式構造(預設)
輸入:SortedDictionary<string, string> sParaTemp 請求引數陣列
string strMethod 提交方式。兩個值可選:post、get
string strButtonValue 確認按鈕顯示文字
輸出:string 提交表單HTML文字

public static string BuildRequest(SortedDictionary<string, string> sParaTemp)

功能:建立請求,以模擬遠端HTTP的POST請求方式構造並獲取支付寶的處理結果
輸入:SortedDictionary<string, string> sParaTemp 請求引數陣列
輸出:string 支付寶處理結果

public static string BuildRequest(SortedDictionary<string, string> sParaTemp, string strMethod, string fileName, byte[] data, string contentType, int lengthFile)

功能:建立請求,以模擬遠端HTTPPOST請求方式構造並獲取支付寶的處理結果
輸入:SortedDictionary<string, string> sParaTemp 請求引數陣列
string strMethod 提交方式。兩個值可選:post、get
string fileName 檔案絕對路徑
byte[] data 檔案資料
string contentType 檔案內容型別
int lengthFile 檔案長度
輸出:string 支付寶處理結果

public static string Query_timestamp()

功能:用於防釣魚,呼叫介面query_timestamp來獲取時間戳的處理函式
輸出:string 時間戳字串

──────────
出現問題,求助方法
──────────

如果在整合支付寶介面時,有疑問或出現問題,可使用下面的連結,提交申請。
https://b.alipay.com/support/helperApply.htm?action=supportHome
我們會有專門的技術支援人員為您處理

相關文章