天天看點

移動支付demo接入流程指南(Android版)

一、下載下傳DEMO和SDK。打開連接配接 https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.YGttW9&treeId=54&articleId=104509&docType=1

移動支付demo接入流程指南(Android版)
解壓DEMO檔案。 WS_MOBILE_PAY_SDK_BASE\支付寶錢包支付接口開發包2.0标準版(201501215)\DEMO\用戶端demo目錄下有2個壓縮檔案。 IOS和Android 二、 配置DEMO。1. 導入Import
移動支付demo接入流程指南(Android版)
選擇Andorid程式。
移動支付demo接入流程指南(Android版)
移動支付demo接入流程指南(Android版)
2. 配置參數 找到 src/com.alipay.sdk.demo/PayDemoActivity.java檔案打開。 需要配置 PARTNER:合作身份者ID,以2088開頭由16位純數字組成的字元串。即簽約賬号。請參考“PID和密鑰管理”。 SELLER:一般情況下收款賬号就是簽約賬号。 RSA_PUBLIC:支付寶RSA公鑰。請參考  檢視支付寶公鑰 。” RSA_PRIVATE:商戶方RSA私鑰。請參考  PID和密鑰管理  複制上去的私鑰字元串請使用pkcs8格式私鑰,導入私鑰路徑請使用原始的私鑰pem檔案。
移動支付demo接入流程指南(Android版)
配置完成後,已經可以正常運作且支付成功。運作接口代碼示例: 
移動支付demo接入流程指南(Android版)
點選支付:
移動支付demo接入流程指南(Android版)
3. 配置業務參數 找到src/com.alipay.sdk.demo/PayDemoActivity.java檔案打開 裡面有一個  pay 方法。如下圖,這就是DEMO運作中點選支付所觸發的方法。 在這裡我們可以看到訂單的資訊來自于getOrderInfo這個方法。 
移動支付demo接入流程指南(Android版)
在這裡就可以把你所需要的參數添加到響應字元串中,根據文檔參數規範添加。 
移動支付demo接入流程指南(Android版)
拼接成的待請求參數如下:
移動支付demo接入流程指南(Android版)
使用alipay.pay方法接收支付結果。
移動支付demo接入流程指南(Android版)
同步傳回:

resultStatus={9000};memo={處理成功};result={partner="2088501624560335"&seller_id="***"&out_trade_no="1229010038-1111"&subject="測試的商品"&body="該測試商品的較長的描述"&total_fee="0.01"?ify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&success="true"&sign_type="RSA"&sign="SqxvaqGNpkfGqbyNUlc8a9CCFwQvEN9KUc+rU0Pf6wV5c6K5IRN3SKsOBReDzhNvM4SAPOeiKjiLs0LqJDUYVMadxrasawKcM70fm9OsqbqYXoLaESI/8WPtkcd/uz03b9DpR1pGneVmrEUfUnothAgoKvWnbq4cxA0/irl7cMM="}      

此時用resultStatus做業務邏輯如圖

移動支付demo接入流程指南(Android版)

三、運作邏輯詳解1、拼接訂單資訊orderInfo(按指定格式把所需參數拼接起來) 

移動支付demo接入流程指南(Android版)

2、對訂單資訊orderInfo 進行RSA簽名,使用SignUtils.java中的sign方法。得到的sign需要URL編碼。 

移動支付demo接入流程指南(Android版)

3、拼接成完整的支付寶請求參數。

移動支付demo接入流程指南(Android版)

   4、調用SDK支付接口,且擷取支付同步傳回資訊。

移動支付demo接入流程指南(Android版)

四、異步通知1. .NET開發異步通知邏輯

(1)打開“notify_url.aspx.cs”檔案(notify_url.aspx需保證無任何HTML代碼)。在注釋指定位置“//請根據您的業務邏輯來編寫程式”寫入商戶的業務邏輯代碼。請參考“業務邏輯處理”。 

(2)用POST方式獲得這些通知傳回資料。對這些資料做簽名驗證、是否是支付寶發來的請求的驗證。得到組做空值過濾、參數名首字母升序的排序、待簽名數組轉變成待簽名字元串。對該字元串做RSA簽名驗證(這一系列動作為調用app_code/AlipayNotify.cs檔案中的GetSignVeryfy函數完成),得到布爾類型的驗證結果。 

移動支付demo接入流程指南(Android版)

(3)根據獲得的參數notify_id,來驗證是否是支付寶發來的請求(調用app_code/AlipayNotify.cs檔案中的GetResponseTxt函數)。先拼接完整的驗證請求連結,

https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg          
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg

(4)再用遠端模拟HTTP請求的方式請求到支付寶,此時支付寶傳回的資訊是純HTML文本“true”,頁面上再也無其他任何字元。具體請參見“驗證是否是支付寶發來的通知”。 

(5) 根據簽名驗證結果、是否是支付寶發來的通知的驗證結果,二者全部為true的情況下,則驗證通過(調用app_code/AlipayNotify.cs檔案中的Verify函數)。此時商戶可做些簡單的業務邏輯,但請務必不要在目前頁面做資金相關變動的業務邏輯處理。 

(6) 驗證通過後,方可執行對資金相關的業務邏輯代碼。需要注意的是:已經對同一筆 交易做過業務處理後,不要再做重複處理,避免資損。

(7) 商戶的業務代碼正常且成功執行後,需在notify_url的目前頁面中輸出純文字“success”,讓支付寶通知伺服器知曉已執行完畢。 

2. JAVA開發異步通知邏輯

(1)打開“notify_url.jsp”檔案(notify_url.jsp需保證無任何HTML代碼)。在注釋指定位置“//請根據您的業務邏輯來編寫程式”寫入商戶的業務邏輯代碼。請參考“業務邏輯處理”。

(2)用POST方式獲得這些通知傳回資料。對這些資料做簽名驗證、是否是支付寶發來的請求的驗證。得到組做空值過濾、參數名首字母升序的排序、待簽名數組轉變成待簽名字元串。對該字元串做RSA簽名驗證(這一系列動作為調用AlipayNotify.java檔案中的getRSASignVerify函數完成),得到布爾類型的驗證結果。

移動支付demo接入流程指南(Android版)

(3)根據獲得的參數notify_id,來驗證是否是支付寶發來的請求(調用AlipayNotify.java檔案中的verifyResponse函數)。先拼接完整的驗證請求連結,

https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg          
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg

(4)再用遠端模拟HTTP請求的方式請求到支付寶,此時支付寶傳回的資訊是純HTML文本“true”,頁面上再也無其他任何字元。具體請參見“驗證是否是支付寶發來的通知”。

(5) 根據簽名驗證結果、是否是支付寶發來的通知的驗證結果,二者全部為true的情況下,則驗證通過(調用AlipayNotify.java檔案中的Verify函數)。此時商戶可做些簡單的業務邏輯,但請務必不要在目前頁面做資金相關變動的業務邏輯處理。 (6) 驗證通過後,方可執行對資金相關的業務邏輯代碼。需要注意的是:已經對同一筆交易做過業務處理後,不要再做重複處理,避免資損。

 (7)商戶的業務代碼正常且成功執行後,需在notify_url的目前頁面中輸出純文字“success”,讓支付寶通知伺服器知曉已執行完畢。  

3. PHP 開發異步通知

(1) 打開“notify_url.php”檔案(notify_url.php需保證無任何HTML代碼)。在注釋指定位置“//請根據您的業務邏輯來編寫程式”寫入商戶的業務邏輯代碼。請參考“業務邏輯處理”。

(2)用POST方式獲得這些通知傳回資料。對這些資料做簽名驗證、是否是支付寶發來的請求的驗證。空值過濾、參數名首字母升序的排序、待簽名數組轉變成待簽名字元串。對該字元串做RSA簽名驗證(這一系列動作為調用lib/alipay_notify.class.php檔案中的rsaVerify函數完成),得到布爾類型的驗證結果。 

移動支付demo接入流程指南(Android版)

(3)根據獲得的參數notify_id,來驗證是否是支付寶發來的請求(調用lib/alipay_notify.class.php檔案中的getResponse函數)。先拼接完整的驗證請求連結,

https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg          
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg

(5)根據簽名驗證結果、是否是支付寶發來的通知的驗證結果,二者全部為true的情況下,則驗證通過(調用lib/alipay_notify.class.php檔案中的verifyNotify方法)。此時商戶可做些簡單的業務邏輯,但請務必不要在目前頁面做資金相關變動的業務邏輯處理。

(6)驗證通過後,方可執行對資金相關的業務邏輯代碼。需要注意的是:已經對同一筆交易做過業務處理後,不要再做重複處理,避免資損。 

(7)商戶的業務代碼正常且成功執行後,需在notify_url的目前頁面中輸出純文字“success”,讓支付寶通知伺服器知曉已執行完畢。    

五、商戶開發。商戶根據自己的業務需求做相應的業務邏輯。

注:請将簽名放在服務端。

繼續閱讀