- 翻譯公司資訊
-
世聯(lián)翻譯公司如何電子系統(tǒng)“網(wǎng)頁支付接入與使用規(guī)則 ”中文翻譯
發(fā)布時間:2019-08-28 16:09 點擊:
世聯(lián)翻譯公司如何電子系統(tǒng)“網(wǎng)頁支付接入與使用規(guī)則 ”中文翻譯
手機網(wǎng)頁支付接入與使用規(guī)則手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)附錄文檔版本號:1.0Alipay (China) Internet Technology Ltd. All right reserved手機網(wǎng)頁即時到賬接口附錄文檔1 Document Description1.1 Document Description本文檔是《手機網(wǎng)頁即時到賬接口》附錄文檔,它詳細解釋了在技術(shù)接入與使用過程中需要注意的地方,以幫助商戶避免風(fēng)險產(chǎn)生。Please contact the related technology support if you have any questions after reading.1.2 Business termsTable 1-1 Business TermsTerms DescriptionDemand The process of transmitting the data requiring for delivery to theReturn Alipay will send feedbacks to the commercial user websites after Alipay processes them according to the obtained data.Sensitive words With sensitively–political tendency, tendency of violence, unhealthy or uncivilized words.2 Attribution of liabilityAll the rules involved in the document are the preventive measures against the main risks during the access and using process of interface. All the commercial users shall care about them. Please strictly follow the interface technological files (手機網(wǎng)頁即時到賬接口.pdf), example codes, and the access and using rules of this file(手機網(wǎng)頁支付接入與使用規(guī)則.pdf). Otherwise, they caused risks, assets loss or expanded cases shall be shouldered by the commercial users.3 Technology access rulesTable 3-1 Technological access rulesTypes Details ReasonsAccount No. Configured cooperator ID and safety checking key must be guaranteed matching with the signing information. Prevent abnormal using of interface or assets loss必須保護合作者身份ID、安全校驗碼key、商戶的公私秘鑰、支付寶公鑰的隱私性 Prevent the signed account information being stolen, loss in capital and despitefully utilized by others測試完畢后,要把測試賬號立刻更換成簽約賬號。 使用測試賬號時,手續(xù)費按照3%扣除。Safety 商戶必須以DNS解析的方式訪問支付寶接口,不要設(shè)置DNS cache,不要綁定支付寶IP。如果為了商戶自身安全必須綁定支付寶IP時,必須向支付寶的技術(shù)支持人員備案。 Once the IP address changes, the commercial address cannot request or access Alipay so that commercial user business cannot be used directly.組成 手機網(wǎng)頁支付產(chǎn)品由手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)、手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)兩個接口組成。 使用時少了其中任何一個接口,都無法正常使用該產(chǎn)品。必須先調(diào)用手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)獲得授權(quán)令牌,再調(diào)用手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)完成付款。 手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)依賴授權(quán)令牌(request_token)才能完成付款,而該授權(quán)令牌需要通過手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)獲取。請求時簽名邏輯 All the required parameters shall be sequenced as per the format of parameter name=parameter value in the order of lexicographic order of first character. The character strings to be signed shall be spliced according to the rules of “Parameter name 1=Parameter value 1& Parameter name 2= Parameter value 2&….& Parameter value N= Parameter value N”. 避免報異常錯誤,如:簽名不正確。When signing the parameters for the request, these parameters must originate from the request parameter list and remove the parameters sign in the list. 避免報異常錯誤,如:簽名不正確。When signing the requested parameters, as for the parameters of “NULL” in the request parameter list, if selecting to use them, then the parameter value shall not be NULL or NULL value. 避免報異常錯誤,各種錯誤碼需參考錯誤碼列表。Parameter setting Among the request parameter list, the parameters “Not FULL” must be configured. Avoid abnormal using of interfaceAmong the variant parameters requiring multiple selection of NULL in the request parameter list, it is must to configure one at least. Avoid abnormal using of interfaceIt is mandatory to configure as per the format of all parameters in the request parameter list. Avoid abnormal using of interfaceIt is mandatory to set up the request parameters “_input_charset” (encoding format). That is, the parameter shall not be NULL and this parameter shall be added into the signature operation.而且只能設(shè)置其值為utf-8,即本產(chǎn)品不支持GBK編碼格式。 避免報異常錯誤,如:簽名不正確。seller_email是收款時的支付寶賬號,需要與partner對應(yīng)的支付寶賬號為同一個,也就是說收款支付寶賬號必須是簽約時的支付寶賬號。 避免簽約支付寶賬號出現(xiàn)資金受損的可能簽名方式僅支持RSA、MD5兩種。如果要使用RSA簽名時,簽名方式要設(shè)置成0001。 避免簽名不成功參數(shù)req_data中節(jié)點信息都須按照XML節(jié)點格式設(shè)置,無順序要求。不可空的節(jié)點信息必須設(shè)置?煽盏墓(jié)點支持不設(shè)置,也支持設(shè)置了但是空值。 如果設(shè)置不符合XML格式或不可空節(jié)點信息設(shè)置疏漏,請求時不會報錯,但是返回時支付寶會提示0004,req_data illegal。Interface structure The gateway of Alipay must be used to send request message to the Alipay as per the following request gateway:http://wappaygw.alipay.com/service/rest.htm。 Avoid being angled by phishing website.發(fā)送給支付寶的請求,請求參數(shù)不僅包含參與簽名的參數(shù),還包含參數(shù)sign。 避免報異常錯誤,如:簽名不正確。發(fā)送給支付寶的請求,如果使用form表單傳輸,需要按照以下要求編寫:action的值必須為“http://wappaygw.alipay.com/service/rest.htm?_input_charset=該值”,如: http://wappaygw.alipay.com/service/rest.htm?_input_charset=utf-8。 不允許寫成完整的請求鏈接地址,即禁止http://wappaygw.alipay.com/service/rest.htm?后帶有所有要請求給支付寶的請求參數(shù)數(shù)據(jù);<form>與</form>之間需包含所有要請求給支付寶的參數(shù),且每個參數(shù)的格式為<input type="hidden" name="參數(shù)名" value="參數(shù)值" />;在眾多請求參數(shù)中,請求參數(shù)_input_charset(編碼格式)必須存在于form表單中,即form表單中必須含有<input type="hidden" name="_input_charset" value="參數(shù)值">;<form>與</form>之間包含的數(shù)據(jù)只允許是要請求給支付寶的參數(shù),禁止出現(xiàn)商戶自行命名,不在接口技術(shù)文檔請求參數(shù)列表中的其他數(shù)據(jù);form表單的method屬性,可自行選擇get、post兩種。但是,手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)只支持get方式傳輸。避免請求支付寶時報錯,錯誤碼為簽名不正確;手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)如果用POST提交,頁面顯示會為空白。 專業(yè)翻譯公司Data transmission It is a mandatory to us https protocol. Avoid abnormal using of interface 專業(yè)翻譯公司在手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)中,建議使用模擬遠程傳輸方式提交信息及獲取返回信息。并且,提交方式僅支持POST。 避免報異常錯誤(如:簽名不正確),得不到授權(quán)令牌。在手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)中,提交方式僅支持GET。 如果用POST提交,頁面顯示會為空白。Notifying returning verification 在手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)頁面跳轉(zhuǎn)同步通知中,在對通知的參數(shù)做簽名時,這些參數(shù)必須來源于支付寶通知回來的參數(shù),并且除去列表中的參數(shù)sign,先對這些參數(shù)根據(jù)“參數(shù)名=參數(shù)值”的格式,由字母a到z的順序進行排序,再依照“參數(shù)名1=參數(shù)值1&參數(shù)名2=參數(shù)值2&…&參數(shù)名N=參數(shù)值N”的規(guī)則進行拼接,得到的簽名結(jié)果與獲取到的參數(shù)sign值做比較。 驗證返回的簽名在手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)服務(wù)器異步通知中,需要XML解析明文狀態(tài)下的參數(shù)notify_data,獲得節(jié)點notify_id的值。 避免無法正常獲得通知ID(notify_id),導(dǎo)致校驗是否是支付寶發(fā)送的驗證失敗。在手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)服務(wù)器異步通知中,如果有設(shè)置服務(wù)器異步通知路徑,則必須使用獲取到的參數(shù)notify_id再次請求支付寶,獲取是否是支付寶發(fā)送的驗證結(jié)果。該請求鏈接是:https://mapi.alipay.com/gateway.do?partner=合作者身份ID¬ify_id=通知ID的值。 驗證是否是支付寶發(fā)來的請求在手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)服務(wù)器異步通知中,對明文狀態(tài)下的服務(wù)器異步通知參數(shù)(除去參數(shù)sign)不需要先排序,而是直接依照通知返回的參數(shù)順序,以“參數(shù)名1=參數(shù)值1&參數(shù)名2=參數(shù)值2&…&參數(shù)名N=參數(shù)值N”的規(guī)則進行拼接,從而得到待簽名字符串。 避免驗證簽名不正確返回數(shù)據(jù)處理 支付寶主動發(fā)送通知,當商戶接收到通知數(shù)據(jù)后必須給支付寶返回“success”字符串,不允許返回其他多余字符。 如果商戶返回給支付寶的信息不是“success”,支付寶最多重復(fù)發(fā)送7次通知。必須保證設(shè)置的通知路徑互聯(lián)網(wǎng)上能訪問得到,且訪問順暢。 避免接收不到支付寶發(fā)送的通知在手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)中,需要先對獲得的返回數(shù)據(jù)做解碼(URLDECODE),再對這些數(shù)據(jù)做字符串切割,獲得參數(shù)res_data的值。此時,如果該接口設(shè)置的簽名方式sec_id是0001(RSA),還需要對參數(shù)res_data做RSA解密,簽名方式sec_id是MD5時不需要該步驟。最后對變成明文的參數(shù)res_data的值做XML解析,獲得授權(quán)令牌request_token。 返回數(shù)據(jù)是一串編碼過的字符串。需要對字符串做解碼(URLDECODE)、切割、RSA解密、XML解析等步驟。其中任何一步出現(xiàn)問題,則無法獲得授權(quán)令牌request_token。在手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)頁面跳轉(zhuǎn)同步通知中,可直接用GET方式獲得返回數(shù)據(jù)。 頁面跳轉(zhuǎn)同步通知以純URL帶參數(shù)的模式返回信息在手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)服務(wù)器異步通知中: 如果簽名方式sec_id設(shè)置的是0001(RSA),則需要先對參數(shù)notify_data做RSA解密獲得明文; 如果簽名方式sec_id設(shè)置的是MD5,則不需要解密。當簽名方式是0001(RSA)時,參數(shù)notify_data是密文狀態(tài),需要解密。在手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)服務(wù)器異步通知中,如果要獲得需要的信息,還需要對參數(shù)notify_data做XML解析獲得子節(jié)點信息。 參數(shù)notify_data是XML格式的字符串必須對返回的數(shù)據(jù)進行處理。 以便商戶能夠了解接口的使用情況,以及進行商戶的后續(xù)業(yè)務(wù)操作。在服務(wù)器異步通知頁面文件中,需保證商戶的所有業(yè)務(wù)全部運行完成,才能執(zhí)行打印success的動作。 避免異步通知不正常,如收不到通知或業(yè)務(wù)處理沒有完成卻告訴支付寶系統(tǒng)已經(jīng)處理完成。It is suggested each refunding operation shall be recorded to the log operation database of the commercial user website. It is used to check or trail after the business processing conditions when necessary.Interface environment Interface cannot be embedded in “iframe” framework. Avoid abnormal using of interfaceError code processing 請求出錯啦 例如seller_account_name不是郵箱格式、請求參數(shù)缺失等請求參數(shù)不符合設(shè)置規(guī)則。為保障用戶賬戶安全,禁止非手機訪問。 該筆交易不是在真實手機上創(chuàng)建或執(zhí)行的。該類情況一般出現(xiàn)在商戶測試階段,通過pc瀏覽器來請求支付寶時報錯。Automatically formulated interface code rules If code illustrations provided by Alipay are not used, then it is mandatory to process chapters and the document technology interface rules, interface using rules and testing flow rules to formulate the interface code meeting the commercial user website project according to the signature mechanism and notification returning data in technological document. Avoid abnormal using of interface4 Interface access rulesTable 4-1 Interface using rulesType Standardization Reasons使用時 對同一筆還沒創(chuàng)建支付寶交易的商戶訂單,支持重復(fù)調(diào)用手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct),但每一次的req_id值必須保證唯一。 每次請求req_id的值須保證唯一對同一筆還沒創(chuàng)建支付寶交易的商戶訂單,支持重復(fù)調(diào)用手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct),且每次返回的授權(quán)令牌都有效,有效時間為24小時。 當支付寶系統(tǒng)中還沒有為商戶的某筆訂單創(chuàng)建支付寶交易時,商戶方可以對該筆訂單重復(fù)調(diào)用手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct),但每次返回的授權(quán)令牌不會相同。手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)支持重復(fù)調(diào)用,前提是交易基本信息(買家、賣家、交易金額、超時時間、商品名稱等)在多次調(diào)用中保持一致,且交易尚未完成支付。 防止支付失敗手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)重復(fù)調(diào)用時,也支持同一個token(授權(quán)令牌)重復(fù)調(diào)用,但需要保證該token(授權(quán)令牌)對應(yīng)的交易的買家尚未確定,即該筆交易還未在支付寶中創(chuàng)建。 避免報“買家不符”的錯誤填寫買家支付寶賬號時,不能與賣家的支付寶賬號相同。 避免報錯,如錯誤碼:創(chuàng)建交易失敗。客戶端內(nèi)嵌webview方式實現(xiàn),需要開啟js以及css設(shè)置。 避免出現(xiàn)因內(nèi)嵌引起的兼容性或者界面布局異常、亂碼等問題。在請求參數(shù)中不能存在影響請求格式的特殊字符,如:url、xml格式的特殊字符等。 避免交易失敗建議商戶的業(yè)務(wù)判斷依據(jù)以notify_url(服務(wù)器異步通知)為準,call_back_url頁面文件只做界面展示用途。 避免商戶訂單數(shù)據(jù)與支付寶交易數(shù)據(jù)不同步本接口支持的眾多支付通道中,儲蓄卡支付和信用卡支付一旦進入手機網(wǎng)銀系統(tǒng)頁面,支付寶將無法控制訂單的支付效率問題。 各網(wǎng)銀系統(tǒng)的運作及各網(wǎng)銀與支付寶間的交互因為網(wǎng)絡(luò)或其他因素導(dǎo)致支付時的速度快慢不一業(yè)務(wù)應(yīng)用注意事項 支付寶支付手續(xù)費扣取模式分為兩種: 實時扣費模式:一般都是收款賬戶扣費,或采用合同指定固定扣款支付寶賬戶扣費; 月結(jié)手續(xù)費模式:實時交易不扣手續(xù)費,月底賬單統(tǒng)一結(jié)算。實時扣費時,在扣費支付寶賬號的賬務(wù)明細中可馬上查到扣費記錄;但月結(jié)模式下,則不會查到。在集成接口的過程中,如果商戶使用seller_email作為收款賬戶,則當需要修改該支付寶賬戶名稱時,商戶必須在程序中做相應(yīng)修改。 避免支付過程中會出現(xiàn)賣家賬戶不存在的錯誤測試時 調(diào)試階段時,建議使用1分錢(0.01元)進行測試 降低測試成本Network Guarantee network smooth 防止支付時或支付完成后的訂單同步出現(xiàn)各類異常5 集成流程詳解5.1 接入準備1. 確認是否已開通手機網(wǎng)頁支付功能使用簽約支付寶賬號登錄https://b.alipay.com/order/serviceIndex.htm,訂單狀態(tài)為“已完結(jié)”表示手機網(wǎng)頁支付權(quán)限已開通,如下圖所示。圖5-1 查詢訂單狀態(tài)如果無法確認,建議聯(lián)系與支付寶簽約協(xié)議時的貴公司業(yè)務(wù)人員。2. 確認簽約支付寶賬號集成時需要使用簽約的支付寶賬號相關(guān)信息,包括:支付寶登錄賬號、合作者身份ID(PID)、交易安全校驗碼(KEY)。獲得方法請參見“7.1 如何獲得PID與密鑰”。3. 確認網(wǎng)站的開發(fā)語言開發(fā)語言是用指定的一種語言來開發(fā)網(wǎng)站。支付寶提供的代碼示例目前包含PHP、ASP.NET、JAVA三種。4. 確認網(wǎng)站編碼格式查詢網(wǎng)站使用的是何種編碼格式,可通過在網(wǎng)站網(wǎng)頁上點擊右鍵,找到“編碼”,打開擴展箭頭后查看,默認選中的編碼即為網(wǎng)站的編碼格式。支付寶提供的代碼示例目前僅包含UTF-8一種。5. 確認網(wǎng)站簽名方式簽名方式指的是對字符串做加密與解密時的方法。支付寶提供的代碼示例目前包含RSA、MD5兩種。6. 確認開發(fā)環(huán)境 本機電腦調(diào)試環(huán)境各開發(fā)語言對應(yīng)的開發(fā)環(huán)境、調(diào)試工具等。 服務(wù)器調(diào)試環(huán)境– 服務(wù)器需要支持各開發(fā)語言對應(yīng)的環(huán)境,如:支持PHP開發(fā)語言的SSL服務(wù)、CURL服務(wù)等。– 能夠把本地文件上傳到服務(wù)器上的通道與權(quán)限,如:FTP,SFTP傳輸。5.2 集成5.2.1 接口代碼示例配置運行解壓下載到的接口資料壓縮文件(文件名是WS_WAP_PAYWAP.zip),根據(jù)商戶自身情況選擇JAVA(文件夾名為WS_WAP_PAYWAP-JAVA-UTF-8)、PHP(文件夾名為WS_WAP_PAYWAP-PHP-UTF-8)、C#(文件夾名為WS_WAP_PAYWAP-CSHARP-UTF-8)三種開發(fā)語言代碼示例文件夾中的一個。1. JAVA配置流程(以eclipse為例)步驟1: 導(dǎo)入代碼啟動JAVA開發(fā)軟件,把“WS_WAP_PAYWAP-JAVA-UTF-8”文件夾中的“src\com”文件夾、“WebRoot\mages”文件夾、“WebRoot\log”文件夾、“WebRoot\WEB-INF\lib”文件夾、“WebRoot\alipayapi.jsp”、“WebRoot\call_back_url.jsp”、“WebRoot\notify_url.jsp”全部導(dǎo)入到開發(fā)環(huán)境中。“src\com”文件夾中的文件是類文件,無法與支付寶PC端的其他接口混用。步驟2: 配置基本信息在JAVA開發(fā)環(huán)境中,打開“src\com\alipay\config”類目下“AlipayConfig.java”文件,配置partner(合作身份者ID)、key(交易安全校驗碼)、private_key(商戶私鑰)、public_key(支付寶公鑰)、sign_type(簽名類型)等基本信息參數(shù)。表5-1 JAVA基本信息配置參數(shù) 含義partner 合作身份者ID,以2088開頭由16位純數(shù)字組成的字符串。請參考“7.1 如何獲得PID與密鑰”。key 交易安全檢驗碼,由數(shù)字和字母組成的32位字符串。當sign_type設(shè)置為MD5時,該參數(shù)設(shè)置才有效。請參考“7.1 如何獲得PID與密鑰”。private_key 商戶方的私鑰。當sign_type設(shè)置為0001時,該參數(shù)設(shè)置才有效。請參考“7.2 RSA密鑰生成與使用”。public_key 支付寶的公鑰。當sign_type設(shè)置為0001時,該參數(shù)設(shè)置才有效。請參考“7.2 RSA密鑰生成與使用”。sign_type 簽名方式。在手機網(wǎng)頁支付的接口中僅支持兩種簽名方式,MD5和RSA。對該參數(shù)設(shè)置的值分別是MD5、0001。input_charset 字符編碼格式。在手機網(wǎng)頁支付的接口中僅支持utf-8。無需修改。步驟3: 配置業(yè)務(wù)信息打開“alipayapi.jsp”文件。配置req_id(請求號)、notify_url(服務(wù)器異步通知頁面路徑)、call_back_url(頁面跳轉(zhuǎn)同步通知頁面路徑)、seller_email(賣家支付寶帳戶)、out_trade_no(商戶訂單號)、subject(訂單名稱)、total_fee(付款金額)這幾個常用業(yè)務(wù)參數(shù)信息。請參考“7.3 業(yè)務(wù)數(shù)據(jù)傳遞”和“7.4 如何增加擴展業(yè)務(wù)參數(shù)”。步驟4: 編寫同步通知業(yè)務(wù)邏輯打開“call_back_url.jsp”文件。在注釋指定位置“//請在這里加上商戶的業(yè)務(wù)邏輯程序代碼”寫入商戶的業(yè)務(wù)邏輯代碼。請參考“7.5 如何更新訂單”。步驟5: 編寫異步通知業(yè)務(wù)邏輯打開“notify_url.jsp”文件(notify_url.jsp需保證無任何HTML代碼)。在注釋指定位置“//請在這里加上商戶的業(yè)務(wù)邏輯程序代碼”寫入商戶的業(yè)務(wù)邏輯代碼。請參考“7.5 如何更新訂單”。需要注意的是,簽名方式為0001時,需要先解密,MD5時則不需要。解密后,需要XML解析方可獲取參數(shù)信息。2. PHP配置流程步驟1: 導(dǎo)入代碼啟動PHP開發(fā)軟件,把“WS_WAP_PAYWAP-PHP-UTF-8”文件夾中除去“readme.txt”與“openssl”文件夾外的其他所有文件全部導(dǎo)入到開發(fā)環(huán)境中。“lib”文件夾中的文件是類文件,無法與支付寶PC端的其他接口混用。步驟2: 配置基本信息在PHP開發(fā)環(huán)境中,打開“alipay.config.php”文件,配置partner(合作身份者ID)、key(交易安全校驗碼)、private_key(商戶私鑰)、public_key(支付寶公鑰)、sign_type(簽名類型)等基本信息參數(shù)。表5-2 PHP基本信息配置參數(shù) 解釋partner 合作身份者ID,以2088開頭由16位純數(shù)字組成的字符串。請參考“7.1 如何獲得PID與密鑰”。key 交易安全檢驗碼,由數(shù)字和字母組成的32位字符串。當sign_type設(shè)置為MD5時,該參數(shù)設(shè)置才有效。請參考“7.1 如何獲得PID與密鑰”。private_key 商戶方的私鑰。當sign_type設(shè)置為0001時,該參數(shù)設(shè)置才有效。請參考“7.2 RSA密鑰生成與使用”。public_key 支付寶的公鑰。當sign_type設(shè)置為0001時,該參數(shù)設(shè)置才有效。請參考“7.2 RSA密鑰生成與使用”。sign_type 簽名方式。在手機網(wǎng)頁支付的接口中僅支持兩種簽名方式,MD5和RSA。對該參數(shù)設(shè)置的值分別是MD5、0001。input_charset 字符編碼格式。在手機網(wǎng)頁支付的接口中僅支持utf-8。無需修改。cacert ca證書路徑地址,用于curl中ssl校驗。需要保證cacert.pem文件在當前文件夾目錄中。無需修改。transport 訪問模式,根據(jù)自己的服務(wù)器是否支持ssl訪問,若支持請選擇https;若不支持請選擇http。該參數(shù)只關(guān)聯(lián)到同步通知或異步通知時,驗證是否是支付寶發(fā)來的請求功能中的支付寶請求地址。無需修改。步驟3: 配置業(yè)務(wù)信息打開“alipayapi.php”文件。配置req_id(請求號)、notify_url(服務(wù)器異步通知頁面路徑)、call_back_url(頁面跳轉(zhuǎn)同步通知頁面路徑)、seller_email(賣家支付寶帳戶)、out_trade_no(商戶訂單號)、subject(訂單名稱)、total_fee(付款金額)這幾個常用業(yè)務(wù)參數(shù)信息。請參考“7.3 業(yè)務(wù)數(shù)據(jù)傳遞”和“7.4 如何增加擴展業(yè)務(wù)參數(shù)”。步驟4: 編寫同步通知業(yè)務(wù)邏輯打開“call_back_url.php”文件。在注釋指定位置“//請在這里加上商戶的業(yè)務(wù)邏輯程序代碼”寫入商戶的業(yè)務(wù)邏輯代碼。請參考“7.5 如何更新訂單”。步驟5: 編寫異步通知業(yè)務(wù)邏輯打開“notify_url.php”文件(notify_url.php需保證無任何HTML代碼)。在注釋指定位置“//請在這里加上商戶的業(yè)務(wù)邏輯程序代碼”寫入商戶的業(yè)務(wù)邏輯代碼。請參考“7.5 如何更新訂單”。需要注意的是,簽名方式為0001時,需要先解密,MD5時則不需要。解密后,需要XML解析方可獲取參數(shù)信息。3. ASP.NET(C#)配置流程步驟1: 導(dǎo)入代碼啟動.NET開發(fā)軟件,把“WS_WAP_PAYWAP-CSHARP-UTF-8”文件夾中除去“readme.txt”與“Web.Config”外的其他所有文件全部導(dǎo)入到開發(fā)環(huán)境中。為防止占用“default.aspx”的名稱,可以把“default.aspx”與“default.aspx.cs”兩個文件中的核心代碼拷貝到新頁面文件中去。“app_code”文件夾中的文件是類文件,無法與支付寶PC端的其他接口混用。步驟2: 配置基本信息在.NET開發(fā)環(huán)境中,打開“app_code”類目下的“AlipayConfig.cs”文件,配置partner(合作身份者ID)、key(交易安全校驗碼)、private_key(商戶私鑰)、public_key(支付寶公鑰)、sign_type(簽名類型)等基本信息參數(shù)。表5-3 ASP.NET(C#)基本信息配置參數(shù) 解釋partner 合作身份者ID,以2088開頭由16位純數(shù)字組成的字符串。請參考“7.1 如何獲得PID與密鑰”。key 交易安全檢驗碼,由數(shù)字和字母組成的32位字符串。當sign_type設(shè)置為MD5時,該參數(shù)設(shè)置才有效。請參考“7.1 如何獲得PID與密鑰”。private_key 商戶方的私鑰。當sign_type設(shè)置為0001時,該參數(shù)設(shè)置才有效。請參考“7.2 RSA密鑰生成與使用”。public_key 支付寶的公鑰。當sign_type設(shè)置為0001時,該參數(shù)設(shè)置才有效。請參考“7.2 RSA密鑰生成與使用”。sign_type 簽名方式。在手機網(wǎng)頁支付的接口中僅支持兩種簽名方式,MD5和RSA。對該參數(shù)設(shè)置的值分別是MD5、0001。input_charset 字符編碼格式。在手機網(wǎng)頁支付的接口中僅支持utf-8。無需修改。步驟3: 配置業(yè)務(wù)信息打開“default.aspx.cs”文件。配置req_id(請求號)、notify_url(服務(wù)器異步通知頁面路徑)、call_back_url(頁面跳轉(zhuǎn)同步通知頁面路徑)、seller_email(賣家支付寶帳戶)、out_trade_no(商戶訂單號)、subject(訂單名稱)、total_fee(付款金額)這幾個常用業(yè)務(wù)參數(shù)信息。請參考“7.3 業(yè)務(wù)數(shù)據(jù)傳遞”和“7.4 如何增加擴展業(yè)務(wù)參數(shù)”。步驟4: 編寫同步通知業(yè)務(wù)邏輯打開“call_back_url.aspx”、“call_back_url.aspx.cs”文件。call_back_url.aspx為前端頁面可顯示一些信息供用戶查看,call_back_url.aspx.cs為后臺業(yè)務(wù)代碼編寫處。在注釋指定位置“//請在這里加上商戶的業(yè)務(wù)邏輯程序代碼”寫入商戶的業(yè)務(wù)邏輯代碼。請參考“7.5 如何更新訂單”。步驟5: 編寫異步通知業(yè)務(wù)邏輯打開“notify_url.aspx.cs”文件。notify_url.aspx需保證無任何HTML代碼,notify_url.aspx.cs為后臺業(yè)務(wù)代碼編寫處。在注釋指定位置“//請在這里加上商戶的業(yè)務(wù)邏輯程序代碼”寫入商戶的業(yè)務(wù)邏輯代碼。請參考“7.5 如何更新訂單”。需要注意的是,簽名方式為0001時,需要先解密,MD5時則不需要。解密后,需要XML解析方可獲取參數(shù)信息。5.2.2 接口代碼示例運行邏輯詳解1. JAVA(以eclipse為例)步驟1: 商戶為手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)的請求參數(shù)配置好數(shù)據(jù)后,組裝進數(shù)組sParaTempToken中,再對該數(shù)組做空值過濾(調(diào)用AlipayCore類中的paraFilter函數(shù))。{req_data=<direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-JAVA-UTF-8/notify_url.jsp</notify_url><call_back_url>http://127.0.0.1:8080/WS_WAP_PAYWAP-JAVA-UTF-8/call_back_url.jsp</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306170001</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>, service=alipay.wap.trade.create.direct, sec_id=0001, partner=2088501624560335, _input_charset=utf-8, req_id=201306170001, v=2.0, format=xml}步驟2: 對該數(shù)組做參數(shù)名首字母升序的排序動作,此時的數(shù)組為待簽名數(shù)組,并把待簽名數(shù)組轉(zhuǎn)變成待簽名字符串(調(diào)用AlipayCore類中的createLinkString函數(shù)),排序規(guī)則請參見“3 技術(shù)接入規(guī)則”中的“請求時簽名邏輯”。_input_charset=utf-8&format=xml&partner=2088501624560335&req_data=<direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-JAVA-UTF-8/notify_url.jsp</notify_url><call_back_url>http://127.0.0.1:8080/WS_WAP_PAYWAP-JAVA-UTF-8/call_back_url.jsp</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306170001</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>&req_id=201306170001&sec_id=0001&service=alipay.wap.trade.create.direct&v=2.0步驟3:對該字符串做簽名(調(diào)用AlipaySubmit類中的buildRequestMysign函數(shù)),規(guī)則參見“3 技術(shù)接入規(guī)則”中的“請求時簽名邏輯”。O8DH9HG2yRkbUrIz0jtKaPZRcWqqgcuGEtI6576Yibh60iX7azXTq2D4ZYWaX16kBy8MNSE4PBuPcrxe66kQW/Ufhoa/f+0jeUx5RC3/A0as+/vOOCmQnO0VTyRTp2DHLvcL3k9EKow6FsFuQHZPpHsQnzzRUSlQ+vGI+dPYUSU=步驟4: 把簽名結(jié)果賦值給參數(shù)sign,并把sign加入之前的待簽名數(shù)組中,此時得到的便是要請求給支付寶的全部數(shù)據(jù)。{req_data=<direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-JAVA-UTF-8/notify_url.jsp</notify_url><call_back_url>http://127.0.0.1:8080/WS_WAP_PAYWAP-JAVA-UTF-8/call_back_url.jsp</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306170001</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>, service=alipay.wap.trade.create.direct, partner=2088501624560335, sec_id=0001, _input_charset=utf-8, req_id=201306170001, sign=O8DH9HG2yRkbUrIz0jtKaPZRcWqqgcuGEtI6576Yibh60iX7azXTq2D4ZYWaX16kBy8MNSE4PBuPcrxe66kQW/Ufhoa/f+0jeUx5RC3/A0as+/vOOCmQnO0VTyRTp2DHLvcL3k9EKow6FsFuQHZPpHsQnzzRUSlQ+vGI+dPYUSU=, format=xml, v=2.0}步驟5:模擬遠程HTTP協(xié)議請求支付寶(調(diào)用AlipaySubmit類中的buildRequest (String ALIPAY_GATEWAY_NEW, String strParaFileName, String strFilePath,Map<String, String> sParaTemp) throws Exception函數(shù)),得到支付寶的處理結(jié)果,字符串文本格式。res_data=wzpwl6nSd%2B0aYMQaltXjmEdJgeAkLH2dupVrHNNKknd33wwqgbDlhj3gAur%2F1WTLSFWQcw8Q%2Fb8XKk8r0Ti14pTbH9wzhyOeElGfd4Ks1HKkqZFXLX7YVhfBH7lHjJiNFBzMZhMAGy%2BhAgiwbw4mvIjQF%2Bu%2BGS3SRK%2B4wy2QmptEEcqVseMgHr56MYeFfdvxzbx%2FT06%2B%2Fg5pdIre94H6ZL0mDR8IobzQnJV1mq%2B9YMXNUspsRzXCHhcbKEq7xqDVdE5eb43LvNKa8ypR9hMiYd5%2FOLAuYnpetM81IzGNC83kioh5hsSoLgEErCrMklxucR7X5U6l22APeK6i%2FbT8TA%3D%3D&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088501624560335&req_id=201306170001&sign=ll2LBlP66aZArPUJV9Vd3Tfo6m7PLiI8IQRNjjwFjg6NXS4PCjTdY6PlCnB5MmllNFurI2J5GuL7LUCKVSlO58hUpxQrllpoYNorKx%2BUKXYOAmPilRa2zHry%2BjVUlW9qNp4jLI2oDY8lgBbKr%2BkL3BYO0GU0Stv4zAhokAaF9ho%3D&v=2.0步驟6:對該結(jié)果做URLDECODE解碼工作(調(diào)用urldecode函數(shù))。res_data=wzpwl6nSd+0aYMQaltXjmEdJgeAkLH2dupVrHNNKknd33wwqgbDlhj3gAur/1WTLSFWQcw8Q/b8XKk8r0Ti14pTbH9wzhyOeElGfd4Ks1HKkqZFXLX7YVhfBH7lHjJiNFBzMZhMAGy+hAgiwbw4mvIjQF+u+GS3SRK+4wy2QmptEEcqVseMgHr56MYeFfdvxzbx/T06+/g5pdIre94H6ZL0mDR8IobzQnJV1mq+9YMXNUspsRzXCHhcbKEq7xqDVdE5eb43LvNKa8ypR9hMiYd5/OLAuYnpetM81IzGNC83kioh5hsSoLgEErCrMklxucR7X5U6l22APeK6i/bT8TA==&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088501624560335&req_id=201306170001&sign=ll2LBlP66aZArPUJV9Vd3Tfo6m7PLiI8IQRNjjwFjg6NXS4PCjTdY6PlCnB5MmllNFurI2J5GuL7LUCKVSlO58hUpxQrllpoYNorKx+UKXYOAmPilRa2zHry+jVUlW9qNp4jLI2oDY8lgBbKr+kL3BYO0GU0Stv4zAhokAaF9ho=&v=2.0步驟7:對這串結(jié)果字符串做字符串切割,獲取返回參數(shù)的信息。注意,如果簽名方式設(shè)置的是0001(RSA),那么還需要對這結(jié)果中的返回參數(shù)res_data做解密工作;如果簽名方式設(shè)置的是MD5,則結(jié)果中的返回參數(shù)res_data直接顯示明文。res_data=<?xml version="1.0" encoding="utf-8"?><direct_trade_create_res><request_token>2013061725bc6b978788d6f2459d0af9a49ea2f3</request_token></direct_trade_create_res>&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088501624560335&req_id=201306170001&sign=ll2LBlP66aZArPUJV9Vd3Tfo6m7PLiI8IQRNjjwFjg6NXS4PCjTdY6PlCnB5MmllNFurI2J5GuL7LUCKVSlO58hUpxQrllpoYNorKx+UKXYOAmPilRa2zHry+jVUlW9qNp4jLI2oDY8lgBbKr+kL3BYO0GU0Stv4zAhokAaF9ho=&v=2.0接著把XML結(jié)構(gòu)的res_data的值做XML解析,從中獲取子節(jié)點request_token的值(這一系列過程需調(diào)用AlipaySubmit類中的parseResponse函數(shù)),這個值就是授權(quán)令牌。2013061725bc6b978788d6f2459d0af9a49ea2f3步驟8:商戶為手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)的請求參數(shù)配置好數(shù)據(jù)后,與步驟一、二、三、四同理,把數(shù)據(jù)組裝進數(shù)組sParaTemp中。{req_data=<auth_and_execute_req><request_token>2013061725bc6b978788d6f2459d0af9a49ea2f3</request_token></auth_and_execute_req>, service=alipay.wap.auth.authAndExecute, sec_id=0001, partner=2088501624560335, _input_charset=utf-8, v=2.0, format=xml}對該數(shù)組做空值過濾(調(diào)用AlipayCore類中的paraFilter函數(shù)),對該數(shù)組做參數(shù)名首字母升序的排序動作,把待簽名數(shù)組轉(zhuǎn)變成待簽名字符串,對該字符串做簽名(調(diào)用AlipaySubmit類中的buildRequestMysign函數(shù)),把簽名結(jié)果賦值給參數(shù)sign,并把sign加入之前的待簽名數(shù)組中,此時得到的便是要請求給支付寶的全部數(shù)據(jù)。{req_data=<auth_and_execute_req><request_token>2013061725bc6b978788d6f2459d0af9a49ea2f3</request_token></auth_and_execute_req>, service=alipay.wap.auth.authAndExecute, partner=2088501624560335, sec_id=0001, _input_charset=utf-8, sign=jqUVcsnO3CX2c3/b2WqALKL+AJgxnB9rT87LJ31BBHqNd6DixUmtd4ht6qz9TqpX9nuI+EaPnYIhPcF+okas2bGn7ju4V3TS0805g/7mELsuW8/kcGOd/+zLvLqH7tXY0oilb4Bq/fTb8FewVuBWSMkZXIzovc9he0c1dTklXPQ=, format=xml, v=2.0}步驟9:以GET方式,請求支付寶(調(diào)用AlipaySubmit類中的buildRequest(String ALIPAY_GATEWAY_NEW, Map<String, String> sParaTemp, String strMethod, String strButtonName)函數(shù)),此時商戶的頁面會自動跳轉(zhuǎn)至支付寶收銀臺。圖5-2 跳轉(zhuǎn)至支付寶收銀臺后面的動作全由買家在支付寶收銀臺中操作完成。步驟10: 當這筆交易被買家支付成功后支付寶收銀臺上顯示該筆交易成功,并提示用戶可返回商戶網(wǎng)站。買家點擊該功能按鈕后,則當前界面會跳轉(zhuǎn)回商戶設(shè)置的call_back_url頁面文件去,如果長時間沒有點擊,則當前支付寶收銀臺界面會自動跳轉(zhuǎn)至商戶call_back_url頁面文件去。此時商戶的call_back_url頁面會收到一串帶有處理結(jié)果數(shù)據(jù)的鏈接地址。http://127.0.0.1:8080/WS_WAP_PAYWAP-JAVA-UTF-8/call_back_url.jsp?out_trade_no=cs201306170001&request_token=requestToken&result=success&trade_no=2013061741934035&sign=UCUm6GVdi7MEcNnDbD7UnG0UyEyUtuKOSuhPQbrGxUvLUmRJEctMm5NxYV%2FtvWT0VCGbM%2F4zaAlYy1EP4bFLisoyprq%2FQ9H5XMnO%2FOZ5E1XclGXiD%2FLMbMGoYCqNmI22MxMZ0OmL9UoUSrT2f4%2B8EDCtkDsnUsG82K4GnjSmJ2w%3D&sign_type=0001步驟11: 用GET方式獲得這些返回數(shù)據(jù),與步驟一、二、三、四同理,對數(shù)組params做空值過濾、參數(shù)名首字母升序的排序、待簽名數(shù)組轉(zhuǎn)變成待簽名字符串。out_trade_no=cs201306170001&request_token=requestToken&result=success&trade_no=2013061741934035對該字符串做簽名驗證(這一系列動作為調(diào)用AlipayNotify類中的verifyReturn函數(shù)完成),得到布爾類型的驗證結(jié)果,完成call_back_url頁面文件的驗證動作。步驟12: 買家對一筆交易付款完成的同時,除了支付寶會觸發(fā)頁面跳轉(zhuǎn)至call_back_url文件的同步通知動作,還會自動觸發(fā)服務(wù)器異步通知頁面文件(商戶設(shè)置參數(shù)notify_url的值)。此時,商戶的notify_url文件也會收到支付寶異步通知回來的數(shù)據(jù)。{service=alipay.wap.trade.create.direct, sign=V2fgcO2jwZ5G/HcDRS3N7m2TNqRSHFqvF7wQ6xD52NgLtNMhx2H+4H/yv5yKZxt1xY5K1aMfv6MsO0fpKAYZaZFg+WYs925IbAzpscbK72fzuhvfikjbEvuOLHY+LGNXwkn+VhQBBNkHs4GNJSM1iZ1jcCxm8NU9oANviZDMAcg=, sec_id=0001, v=1.0, notify_data=0R5IeCoVWRerPIERgTFrQOUfIiw0FHmHGe6elY6VYp1WZU5bRsQkK5ekMcceD412gO+KgqPzvAKVQG1h3dwuhWgaHPdL5oNj1eIzf4PUuRYOb7qCwFMqpNDQ9Jznbm89kCqjenhWSIwQ/2Aad+4RPHOKy9AzAWut02MiW7g8gH49Nb1rjki+u7QQN+xQ/Q/Fr4f2RlcoiutfsYB2mCy8smtjaH2LmE5wNz0I5yHMxnf9+NCkjmOJdZZrOC2wXly/tzLY6w+zef+m5s184D80HejiUPOlS8dBtmEPs+SQzA5N7eu0BF1pPj9m7wyTINf6k4GlkQtvNM6UZd2cwuthwZeYcax5Db0rWYyDaQOCH/gEUShzD6za84Gpj9/grKnvMy65C7ihmcb4wtA7CNiQSnLiQZ3ksUGjB0WiwTpL9JeQqyVWJZiSpRXt73B9/qT1hzf5K1CWHTzD0zfOjifFbSrXQmAt5oIoMM49W7Ds95fTZNde3czzf/hrcUQEI3LNW+6e975+Vl4O+fmxxBeGaI1Ls1EBTdZpDoNl35U7uhzdkbBzJR4AYY6H9xD2QmjtAS3GelIXpiqC29FbwwFLbEQM/a9xAS3KS8jIyDWEAK4dJi3U+F/QTismfjp7dfT2KqU89wsqJ+BtMwWLaOPvz1BSpj1TVYYmgK5MdLjh6S+GVH4ka/RcU2nGqpO1cNHBHa0j2wY7Uu1p3SiSa62NTbu0wvLqiT3fs6K6PDwVkxGDAPsQaXvCGrMRhhVLc7M5AcCVSBCJd4LAJU/BfTcYZjiFcKSlSSYKMNFZRusNcFtzrbvi1u4gwHRnRYr11Z/pwGbQ5LtxV083lXtEkJ1fWFzt84hxfcOGH+o9EgJBKyIahQfyHfRir5quiixBqp5xWR8DU5nJNAW+/MLgPzNYt+uaIPadqrBt/j7+0gdgFEdLzPLncI9h0VdlmdgO+CvxJ1aKYi2pDY64oTzm87CN/Fiof1n8SjZRgGh/ClxIJHunI9DCmVszMtVkQhJwQzkIj9YnV+3n0Q3wjos3iE69WJjHk+DpN8ARZiAJEFKtGT9lMnIf1JfbpXmdM1arFV1doMEb8vKLN4kHioR4DhVyDvaLfo4rsgvGcLSB65R4Ya4tVdk1e0+vnk+U/NMk9zrJf39hInyBoazUpkPIqmmQIAvkpSbnbGuZUdqri9fame2e/gPkUzYqzo/gt6OCuzIdtVtVI0kQXGfCz9XpazmYbTcKA9Ck6z6WF2lN7lIJH9DSNB7lCDM/cKD7xEZ5lFRucz1sOsvZNpNhH8R7EnyQYEo7NM9ph8gDfgaVaaWh1+13TJfwvC5WBOi+5KyKh+6qb4Z98tFkxrqyU2Kn6hFAoQ==}步驟13: 用POST方式獲得這些返回數(shù)據(jù)。如果簽名方式設(shè)置的是0001(RSA)時,需要先對這些數(shù)據(jù)中的參數(shù)notify_data做解密;如果簽名方式設(shè)置的是MD5,因為直接返回明文,所以不需要解密。{service=alipay.wap.trade.create.direct, sign=V2fgcO2jwZ5G/HcDRS3N7m2TNqRSHFqvF7wQ6xD52NgLtNMhx2H+4H/yv5yKZxt1xY5K1aMfv6MsO0fpKAYZaZFg+WYs925IbAzpscbK72fzuhvfikjbEvuOLHY+LGNXwkn+VhQBBNkHs4GNJSM1iZ1jcCxm8NU9oANviZDMAcg=, sec_id=0001, v=1.0, notify_data=<notify><payment_type>1</payment_type><subject>測試</subject><trade_no>2013061741934035</trade_no><buyer_email>xxxxxxx@xx.com</buyer_email><gmt_create>2013-06-17 19:15:58</gmt_create><notify_type>trade_status_sync</notify_type><quantity>1</quantity><out_trade_no>cs201306170001</out_trade_no><notify_time>2013-06-17 19:16:09</notify_time><seller_id>2088501624560335</seller_id><trade_status>TRADE_FINISHED</trade_status><is_total_fee_adjust>N</is_total_fee_adjust><total_fee>0.01</total_fee><gmt_payment>2013-06-17 19:16:08</gmt_payment><seller_email>alipayrisk10@alipay.com</seller_email><gmt_close>2013-06-17 19:16:08</gmt_close><price>0.01</price><buyer_id>2088002396712354</buyer_id><notify_id>78fca98191478a5e64459d8ef88601183y</notify_id><use_coupon>N</use_coupon></notify>}notify_url異步通知的簽名驗證規(guī)律與call_back_url不同,商戶只需要順序獲取支付寶的返回數(shù)據(jù),不需要對這些參數(shù)排序。因此,直接把數(shù)組params轉(zhuǎn)變成待簽名字符串。service=alipay.wap.trade.create.direct&v=1.0&sec_id=0001¬ify_data=<notify><payment_type>1</payment_type><subject>測試</subject><trade_no>2013061741934035</trade_no><buyer_email>xxxxxxx@xx.com</buyer_email><gmt_create>2013-06-17 19:15:58</gmt_create><notify_type>trade_status_sync</notify_type><quantity>1</quantity><out_trade_no>cs201306170001</out_trade_no><notify_time>2013-06-17 19:16:09</notify_time><seller_id>2088501624560335</seller_id><trade_status>TRADE_FINISHED</trade_status><is_total_fee_adjust>N</is_total_fee_adjust><total_fee>0.01</total_fee><gmt_payment>2013-06-17 19:16:08</gmt_payment><seller_email>alipayrisk10@alipay.com</seller_email><gmt_close>2013-06-17 19:16:08</gmt_close><price>0.01</price><buyer_id>2088002396712354</buyer_id><notify_id>78fca98191478a5e64459d8ef88601183y</notify_id><use_coupon>N</use_coupon></notify>接著對該字符串做簽名驗證(這一系列動作調(diào)用AlipayNotify類中的verifyNotify函數(shù)),得到布爾類型的驗證結(jié)果,完成notify_url頁面文件的驗證動作。步驟14: 在notify_url頁面文件中,參數(shù)notify_data是XML結(jié)構(gòu)的字符串,需要先XML解析,再獲取需要的子節(jié)點數(shù)據(jù)。2. PHP步驟1: 商戶為手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)的請求參數(shù)配置好數(shù)據(jù)后,組裝進數(shù)組$para_token中,再對該數(shù)組做空值過濾(調(diào)用AlipayCore類中的paraFilter函數(shù))。$para_token = array("service" => "alipay.wap.trade.create.direct","partner" => "2088501624560335","sec_id" => "0001","format" => "xml","v" => "2.0","req_id" => "201306140001","req_data" => "<direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-PHP-UTF-8/notify_url.php</notify_url><call_back_url>http://127.0.0.1:8800/WS_WAP_PAYWAP-PHP-UTF-8/call_back_url.php</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306140001</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>","_input_charset" => "utf-8");步驟2:對該數(shù)組做參數(shù)名首字母升序的排序動作(調(diào)用AlipayCore類中的argSort函數(shù))(排序規(guī)則請參見“3 技術(shù)接入規(guī)則”中的“請求時簽名邏輯”),此時得到的數(shù)組為待簽名數(shù)組。$para_token = array("_input_charset"=> "utf-8","format" => "xml","partner" => "2088501624560335","req_data" => "<direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-PHP-UTF-8/notify_url.php</notify_url><call_back_url>http://127.0.0.1:8800/WS_WAP_PAYWAP-PHP-UTF-8/call_back_url.php</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306140001</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>","req_id" => "201306140001","sec_id" => "0001","service" => "alipay.wap.trade.create.direct","v" => "2.0");步驟3: 把待簽名數(shù)組轉(zhuǎn)變成待簽名字符串。_input_charset=utf-8&format=xml&partner=2088501624560335&req_data=<direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-PHP-UTF-8/notify_url.php</notify_url><call_back_url>http://127.0.0.1:8800/WS_WAP_PAYWAP-PHP-UTF-8/call_back_url.php</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306140001</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>&req_id=201306140001&sec_id=0001&service=alipay.wap.trade.create.direct&v=2.0并對該字符串做簽名(調(diào)用AlipaySubmit類中的buildRequestMysign函數(shù)),轉(zhuǎn)變規(guī)則請參見“3 技術(shù)接入規(guī)則”中的“請求時簽名邏輯”。EGb8F+aWwBhotwNSQwF9Sik2OzQffV1Val1STvrRj4MzE1W4pLM6Mfjk3/4Vj3ci4Pspcm1OLDHPZ2JQNsFruS6d4bFSQrtEF52irwSF+re42+TBTRe7w8TZAjBnBBLLknerq0DvN86SfA6QaXOl/nOfgcMfCx3YtJnX9u2Yi/k=步驟4:把簽名結(jié)果賦值給參數(shù)sign,并把sign加入之前的待簽名數(shù)組中,此時得到的便是要請求給支付寶的全部數(shù)據(jù)。$para_token = array("_input_charset"=> "utf-8","format" => "xml","partner" => "2088501624560335","req_data" => "<direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-PHP-UTF-8/notify_url.php</notify_url><call_back_url>http://127.0.0.1:8800/WS_WAP_PAYWAP-PHP-UTF-8/call_back_url.php</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306140001</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>","req_id" => "201306140001","sec_id" => "0001","service" => "alipay.wap.trade.create.direct","v" => "2.0","sign" => "EGb8F+aWwBhotwNSQwF9Sik2OzQffV1Val1STvrRj4MzE1W4pLM6Mfjk3/4Vj3ci4Pspcm1OLDHPZ2JQNsFruS6d4bFSQrtEF52irwSF+re42+TBTRe7w8TZAjBnBBLLknerq0DvN86SfA6QaXOl/nOfgcMfCx3YtJnX9u2Yi/k=");步驟5: 模擬遠程HTTP協(xié)議請求支付寶(調(diào)用AlipaySubmit類中的getHttpResponsePOST函數(shù)),得到支付寶的處理結(jié)果,字符串文本格式。res_data=wftFwWhcSfy%2Bjowl544yEn1taSiLPbtgKcLqaLYDeJ9DFMvQXPJGO3tE%2FJzsCQsnSv5i%2FhJHTggXJpVBhmP1gwTQiBv32UsO5cFcFagQfdxet5axkmfsRmGwIaOD2eMJ4dXK%2FyHXkEgE1mxhjgBj5xtbZoZQJssSL%2F7ppYhIlGrU3Mabt0tdKoY6l3B2t0JUqHKYq4b8xCFx9AEDjA2lSrJ%2BZYcVlVJWZBbQPJmWkB5RYHp9Shfj302qxFpwxsI%2FVX2jZq1AXyQMnKBjj57xXtV5r4OZnH%2BxbXMBPnJsNnQ6NpTgjXdDU05eAo4NGiC7bHTcEZJRkJKE54oyn3jKNw%3D%3D&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088501624560335&req_id=201306140001&sign=Bdzmfbs2YONm7aO67zu%2FERNJa1hm8zYd3TVFCzXrsGrafc%2BS4svEk8TRFyOpLpF5SUI639j4uiOrObrSfYLr6EeVj8bMpDZhwdFqgr4O8CFCtZN6dvbbmBPy7LpXbP8mLplQNfJQTeagbGAa49X33cibM376yqLLsogAx%2FowTs4%3D&v=2.0步驟6: 對該結(jié)果做URLDECODE解碼工作(調(diào)用urldecode函數(shù))。res_data=wftFwWhcSfy+jowl544yEn1taSiLPbtgKcLqaLYDeJ9DFMvQXPJGO3tE/JzsCQsnSv5i/hJHTggXJpVBhmP1gwTQiBv32UsO5cFcFagQfdxet5axkmfsRmGwIaOD2eMJ4dXK/yHXkEgE1mxhjgBj5xtbZoZQJssSL/7ppYhIlGrU3Mabt0tdKoY6l3B2t0JUqHKYq4b8xCFx9AEDjA2lSrJ+ZYcVlVJWZBbQPJmWkB5RYHp9Shfj302qxFpwxsI/VX2jZq1AXyQMnKBjj57xXtV5r4OZnH+xbXMBPnJsNnQ6NpTgjXdDU05eAo4NGiC7bHTcEZJRkJKE54oyn3jKNw==&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088501624560335&req_id=201306140001&sign=Bdzmfbs2YONm7aO67zu/ERNJa1hm8zYd3TVFCzXrsGrafc+S4svEk8TRFyOpLpF5SUI639j4uiOrObrSfYLr6EeVj8bMpDZhwdFqgr4O8CFCtZN6dvbbmBPy7LpXbP8mLplQNfJQTeagbGAa49X33cibM376yqLLsogAx/owTs4=&v=2.0步驟7: 對這串結(jié)果字符串做字符串切割,獲取返回參數(shù)的信息。其中,如果簽名方式設(shè)置的是0001(RSA),那么還需要對這結(jié)果中的返回參數(shù)res_data做解密工作;如果簽名方式設(shè)置的是MD5,則結(jié)果中的返回參數(shù)res_data直接顯示明文。res_data= <?xml version="1.0" encoding="utf-8"?><direct_trade_create_res><request_token>20130614039a363773d04690f4196e888bf7b1ff</request_token></direct_trade_create_res>&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088501624560335&req_id=201306140001&sign=Bdzmfbs2YONm7aO67zu/ERNJa1hm8zYd3TVFCzXrsGrafc+S4svEk8TRFyOpLpF5SUI639j4uiOrObrSfYLr6EeVj8bMpDZhwdFqgr4O8CFCtZN6dvbbmBPy7LpXbP8mLplQNfJQTeagbGAa49X33cibM376yqLLsogAx/owTs4=&v=2.0接著把XML結(jié)構(gòu)的res_data的值做XML解析,從中獲取子節(jié)點request_token的值(這一系列過程需調(diào)用AlipaySubmit類中的parseResponse函數(shù)),這個值就是授權(quán)令牌。20130614039a363773d04690f4196e888bf7b1ff步驟8:商戶為手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)的請求參數(shù)配置好數(shù)據(jù)后,與步驟一、二、三、四同理,把數(shù)據(jù)組裝進數(shù)組$parameter中。$parameter = array("service" => "alipay.wap.auth.authAndExecute","partner" => "2088501624560335","sec_id" => "0001","format" => "xml","v" =>"2.0","req_id" => "201306140001","req_data"=> "<auth_and_execute_req><request_token>20130614039a363773d04690f4196e888bf7b1ff</request_token></auth_and_execute_req>","_input_charset" => "utf-8");對該數(shù)組做空值過濾(調(diào)用AlipaySubmit類中的paraFilter函數(shù)),對該數(shù)組做參數(shù)名首字母升序的排序動作(調(diào)用AlipaySubmit類中的argSort函數(shù)),把待簽名數(shù)組轉(zhuǎn)變成待簽名字符串,對該字符串做簽名(調(diào)用AlipaySubmit類中的buildRequestMysign函數(shù)),把簽名結(jié)果賦值給參數(shù)sign,并把sign加入之前的待簽名數(shù)組中,此時得到的便是要請求給支付寶的全部數(shù)據(jù)。$parameter = array("_input_charset"=> "utf-8","format" => "xml","partner" => "2088501624560335","req_data"=> "<auth_and_execute_req><request_token>20130614039a363773d04690f4196e888bf7b1ff</request_token></auth_and_execute_req>","req_id" => "201306140001","sec_id" => "0001","service" => "alipay.wap.auth.authAndExecute","v" => "2.0","sign" => "vtkY9FLWCzJSlpxiNicV85FAGSTacoV7X5k2zLLPAMfMJZPlk6FpJ2/s94g0R0AcEHZyvOp8D4qhR/p1TMRuqw5Hr86LeTeyR52d9VK1NDKrBRSzw6rXG8R6LqUJkkv1i095z1a5VeJW2G46MjQkDAY+AIDWbUx1XCSAaiyx4X4=");步驟9: 以GET方式,請求支付寶(調(diào)用AlipaySubmit類中的buildRequestForm函數(shù)),此時商戶的頁面會自動跳轉(zhuǎn)至支付寶收銀臺。圖5-3 跳轉(zhuǎn)至支付寶收銀臺后面的動作全由買家在支付寶收銀臺中操作完成。步驟10: 當這筆交易被買家支付成功后支付寶收銀臺上顯示該筆交易成功,并提示用戶可返回商戶網(wǎng)站。買家點擊該功能按鈕后,則當前界面會跳轉(zhuǎn)回商戶設(shè)置的call_back_url頁面文件去,如果長時間沒有點擊,則當前支付寶收銀臺界面會自動跳轉(zhuǎn)至商戶call_back_url頁面文件去。此時商戶的call_back_url頁面會收到一串帶有處理結(jié)果數(shù)據(jù)的鏈接地址。http://127.0.0.1:8800/WS_WAP_PAYWAP-PHP-UTF-8/call_back_url.php?out_trade_no=cs201306140001&request_token=requestToken&result=success&trade_no=2013061435574635&sign=UmQGu7GQ6lQuisaK9FhQjl1UO3K%2BEt%2BXDsbdnuHuex38I1ssnsrTlADpCFHWfeezZs4%2FW5knSMo%2Fmg2DheSRSLj4%2FOTJRUtcnAJmiwmeK%2Bj9icN8vz5pcAXlXiFrwb9oTj8gLCOeY3GLXRmCVHTUW9UD89ZI9IraxsxCHgXQZaQ%3D&sign_type=0001步驟11: 用GET方式獲得這些返回數(shù)據(jù),與步驟一、二、三、四同理,對數(shù)組$_GET做空值過濾、參數(shù)名首字母升序的排序、待簽名數(shù)組轉(zhuǎn)變成待簽名字符串。out_trade_no=cs201306140001&request_token=requestToken&result=success&trade_no=2013061435574635對該字符串做簽名驗證(這一系列動作為調(diào)用AlipayNotify類中的verifyReturn函數(shù)完成),得到布爾類型的驗證結(jié)果,完成call_back_url頁面文件的驗證動作。步驟12: 買家對一筆交易付款完成的同時,除了支付寶會觸發(fā)頁面跳轉(zhuǎn)至call_back_url文件的同步通知動作,還會自動觸發(fā)服務(wù)器異步通知頁面文件(商戶設(shè)置參數(shù)notify_url的值)。此時,商戶的notify_url文件也會收到支付寶異步通知回來的數(shù)據(jù)。{service=alipay.wap.trade.create.direct, sign=MK1Q0vAATXdJTiBOxCh3XLulQDJgvYD7tU3doIpYuZEf/JCMi6MubmanJbJ9TdSbGK3iM7anDxwdflM9DVaPuc7ZdqS0Xp4N+YGUXzlcm3al2lcAMjh7ttAsPy4cia4kKWJo0ATZZeIP8jkZG2L46nBeElqo3ZcbeMQklFhu6ak=, sec_id=0001, v=1.0, notify_data=wd2ALy4RTeR2xvoSUsphr98A2Ctm2rbOvhG/T8+U2vD0xTTwHf5sGsmRV+s33SLZIZQ/dJyUxIvmkrvpPDWsT1T+qRWc6MVT32Na/5JdQyyE89e6bhJHmQk+OjyCF68XdsCDa0cw8QtA5ScFfeIcV6ryXCw61uwtgBEebMDL0d8j9IWUYs1nnLdW1HNfRo8AUH6hEQpbz3pboMxVLZcXcFTKReb1NuIfe5Df0x9tfeU1pnN+JewkUFsqQP9jMZD7PWjfjX+Lml1st9ftHfhzZ+w/s116i1oW8MONEkwStQkT2yVBGmCpLw0IZeS/LZth1eyM2oUfDMOA1aK7zeuP8ICdU2TjMNOahkBipBdgLpjQgaAW/xaO5LKirg6Au7IRtHeKBf1haXcQ3LNkgc3HttbmATjJaMQM535CGaaXK7zFsHZCB3k1uk3I1PJ2tVX2Uy+xkSZP/h20/IxHlSdj8xXDe74g2XYtBbsVd8Qmd7gf8YNwQk+WYtMsAbHCzugE0MvxTwyyG1XoGyCRHYe7u2oudsQGzbrAyrGuMHpnv3Ku09up2sjcn0h5zAOUDCslcJwCa2qYd1y4KOZqtXqiPFUQ2yRuUMluvWQCOr0ckAGlVhUV93Mu1CXU8PdqTQPNGZPpb7AEDyCYWhpt/CWlz0def7o1GhWbC19Z3NMdvfDvoyaL//77cUjjqKVYQ9EeDdRnKujj0AzSV8gLgK4rmmf1zHiYOpfXflyghxWc3O/i8tlF7ruKbS7pSvcyBvzgmW0zojZnattdoKiIRNZAeZ+v4cqDKkBpMtlrKJc7yL7nYOEdXiTaVQ/3iFpZm0J+U3pOewsYbX6Vmkvb5wTYHJzNQFu6E1QyYjiibRSospNgRRlzHXXAUgL7nK0JR8PKhen4ID1ZVRtL+r0RzGnPiMvSyt4fAbkP06nKikuZBeTD9isLY793XG6lj4PCTAHWZE4DzZAXoEppAdCqd810kpav9OrbShFpEhKvDcsDxTRixwjTxsaTv+N4DObYuJThoR6SR1qmiQNArmgx3glNUbZdYQ4i5zdLU5B8v02idAwRFWEbH8oBzyKxlwslOeEwq0+WisDvxJCAtPpWeZvWL0v/u6MOPkAFoN9Ml4dLIOFcrSaifblfaCVXajS7QjcvS2YLuLzQUjjb2R0H0ZnSCVjS+FgiXhTWrEr/8VB8VsMcOZ6Vz+ZrcT5wjWpP/Il19q8g0xB260B4x5O1xocMjTertociASRirLkg2jYH4EcUMN/fFZRLTVJuFZQ6rVLpsK+eHzgyIrS2Fz/YZORdSet6zaFzERzEhrWSrL6mJ878vl4b92CGoy6op7m7B/GBsrvEwizCPR039ZaDsMahg==}步驟13: 用POST方式獲得這些返回數(shù)據(jù),如果簽名方式設(shè)置的是0001(RSA)時,需要先對這些數(shù)據(jù)中的參數(shù)notify_data做解密;如果簽名方式設(shè)置的是MD5,因為直接返回明文,所以不需要解密。{service=alipay.wap.trade.create.direct, sign=MK1Q0vAATXdJTiBOxCh3XLulQDJgvYD7tU3doIpYuZEf/JCMi6MubmanJbJ9TdSbGK3iM7anDxwdflM9DVaPuc7ZdqS0Xp4N+YGUXzlcm3al2lcAMjh7ttAsPy4cia4kKWJo0ATZZeIP8jkZG2L46nBeElqo3ZcbeMQklFhu6ak=, sec_id=0001, v=1.0, notify_data=<notify><payment_type>1</payment_type><subject>測試</subject><trade_no>2013061435574635</trade_no><buyer_email>xxxxxxx@xx.com</buyer_email><gmt_create>2013-06-14 17:38:45</gmt_create><notify_type>trade_status_sync</notify_type><quantity>1</quantity><out_trade_no>cs201306140001</out_trade_no><notify_time>2013-06-14 17:38:54</notify_time><seller_id>2088501624560335</seller_id><trade_status>TRADE_FINISHED</trade_status><is_total_fee_adjust>N</is_total_fee_adjust><total_fee>0.01</total_fee><gmt_payment>2013-06-14 17:38:54</gmt_payment><seller_email>alipayrisk10@alipay.com</seller_email><gmt_close>2013-06-14 17:38:54</gmt_close><price>0.01</price><buyer_id>2088002396712354</buyer_id><notify_id>be3e931aa1cc2147d7fa5b6bf569b6153y</notify_id><use_coupon>N</use_coupon></notify>}notify_url異步通知的簽名驗證規(guī)律與call_back_url不同,商戶只需要順序獲取支付寶的返回數(shù)據(jù),不需要對這些參數(shù)排序。因此,直接把數(shù)組$_POST轉(zhuǎn)變成待簽名字符串。service=alipay.wap.trade.create.direct&v=1.0&sec_id=0001¬ify_data=<notify><payment_type>1</payment_type><subject>測試</subject><trade_no>2013061435574635</trade_no><buyer_email>xxxxxxx@xx.com</buyer_email><gmt_create>2013-06-14 17:38:45</gmt_create><notify_type>trade_status_sync</notify_type><quantity>1</quantity><out_trade_no>cs201306140001</out_trade_no><notify_time>2013-06-14 17:38:54</notify_time><seller_id>2088501624560335</seller_id><trade_status>TRADE_FINISHED</trade_status><is_total_fee_adjust>N</is_total_fee_adjust><total_fee>0.01</total_fee><gmt_payment>2013-06-14 17:38:54</gmt_payment><seller_email>alipayrisk10@alipay.com</seller_email><gmt_close>2013-06-14 17:38:54</gmt_close><price>0.01</price><buyer_id>2088002396712354</buyer_id><notify_id>be3e931aa1cc2147d7fa5b6bf569b6153y</notify_id><use_coupon>N</use_coupon></notify>接著對該字符串做簽名驗證(這一系列動作調(diào)用AlipayNotify類中的verifyNotify函數(shù)),得到布爾類型的驗證結(jié)果,完成notify_url頁面文件的驗證動作。步驟14: 在notify_url頁面文件中,參數(shù)notify_data是XML結(jié)構(gòu)的字符串,需要先XML解析,再獲取需要的子節(jié)點數(shù)據(jù)。3. ASP.NET(C#)步驟1:商戶為手機網(wǎng)頁即時到賬授權(quán)接口(alipay.wap.trade.create.direct)的請求參數(shù)配置好數(shù)據(jù)后,組裝進數(shù)組sParaTempToken中,再對該數(shù)組做空值過濾(調(diào)用AlipayCore類中的FilterPara函數(shù))。{[partner, 2088101568358171]}{[_input_charset, utf-8]}{[sec_id, 0001]}{[service, alipay.wap.trade.create.direct]}{[format, xml]}{[v, 2.0]}{[req_id, 201306170002]}{[req_data, <direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-CSHARP/notify_url.aspx</notify_url><call_back_url>http://127.0.0.1:48034/WS_WAP_PAYWAP-CSHARP/call_back_url.aspx</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306170002</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>]}步驟2: 對該數(shù)組做參數(shù)名首字母升序的排序動作(調(diào)用AlipayCore類中的SortPara函數(shù)),排序規(guī)則請參見“3 技術(shù)接入規(guī)則”中的“請求時簽名邏輯”,此時得到的數(shù)組為待簽名數(shù)組。{[_input_charset, utf-8]}{[format, xml]}{[partner, 2088101568358171]}{[req_data, <direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-CSHARP/notify_url.aspx</notify_url><call_back_url>http://127.0.0.1:48034/WS_WAP_PAYWAP-CSHARP/call_back_url.aspx</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306170002</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>]}{[req_id, 201306170002]}{[sec_id, 0001]}{[service, alipay.wap.trade.create.direct]}{[v, 2.0]}步驟3: 把待簽名數(shù)組轉(zhuǎn)變成待簽名字符串。_input_charset=utf-8&format=xml&partner=2088101568358171&req_data=<direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-CSHARP/notify_url.aspx</notify_url><call_back_url>http://127.0.0.1:48034/WS_WAP_PAYWAP-CSHARP/call_back_url.aspx</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306170002</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>&req_id=201306170002&sec_id=0001&service=alipay.wap.trade.create.direct&v=2.0并對該字符串做簽名(調(diào)用AlipaySubmit類中的BuildRequestMysign函數(shù)),轉(zhuǎn)變規(guī)則請參見“3 技術(shù)接入規(guī)則”中的“請求時簽名邏輯”。xO/eAP4pFusEveZmaw2mgCEoQGxDqkFZ+AF8wI1U52OGASs48O/efTZLn9Cr0tF9tDJQ+hwlcNj+F4/Hx+w6v35c0oE3F1Eab/Z2wKAirIYVh/HagumS34aa6t7lJb21YFIshu1YgoqWfwakQ/fzdcwVncW7jJQIvMsIgAhEJ8I=步驟4: 把簽名結(jié)果賦值給參數(shù)sign,并把sign加入之前的待簽名數(shù)組中,此時得到的便是要請求給支付寶的全部數(shù)據(jù)。{[_input_charset, utf-8]}{[format, xml]}{[partner, 2088101568358171]}{[req_data, <direct_trade_create_req><notify_url>http://www.xxx.com/WS_WAP_PAYWAP-CSHARP/notify_url.aspx</notify_url><call_back_url>http://127.0.0.1:48034/WS_WAP_PAYWAP-CSHARP/call_back_url.aspx</call_back_url><seller_account_name>alipayrisk10@alipay.com</seller_account_name><out_trade_no>cs201306170002</out_trade_no><subject>測試</subject><total_fee>0.01</total_fee></direct_trade_create_req>]}{[req_id, 201306170002]}{[sec_id, 0001]}{[service, alipay.wap.trade.create.direct]}{[v, 2.0]}{[sign, xO/eAP4pFusEveZmaw2mgCEoQGxDqkFZ+AF8wI1U52OGASs48O/efTZLn9Cr0tF9tDJQ+hwlcNj+F4/Hx+w6v35c0oE3F1Eab/Z2wKAirIYVh/HagumS34aa6t7lJb21YFIshu1YgoqWfwakQ/fzdcwVncW7jJQIvMsIgAhEJ8I=]}步驟5: 模擬遠程HTTP協(xié)議請求支付寶(調(diào)用AlipaySubmit類中的BuildRequest(string GATEWAY_NEW, Dictionary<string, string> sParaTemp)函數(shù)),得到支付寶的處理結(jié)果,字符串文本格式。res_data=KzTV7n3JHKMmaxc9jObz8FqT9PO8MQw5kqX8uqO4fGwvNIDHNngLdEig%2FaN4A97i0nRviLzoutVSojBIM%2BRECev5UR6aqhME%2Bei%2BX8LYf9sZaE1V3o2oMz3BnubFOcnozWBgXyDaA2fzeU1YxT9TL4BLaDEJ0gZB5upjpMeiyO%2Bil9068gl11ojNbJE3jeGtgqp%2FXTSXmFZ0x7DYefB1XYWmzETLywMkKdwlhnYIDrTLHLj4wdMTmsQS%2BxbTD2egERafRFD3DtPDkO6j7pRfHcJBtoEtC%2Fg4Zj2FD58ADEGLKb7oAkMU6ado091la%2FvAzH3gZtElHAs%2BdYglI%2FUIBw%3D%3D&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088101568358171&req_id=201306170002&sign=oo4ShGc1fndnYiI2OJzclNSQcfspEzoQchrYS8fhiaAzddE31ra%2Ffq7xOm9RCzDTfgyO3Sl8pUcAWY%2B4BYPrxMF5GPVv2IZDY%2FN%2FxQjTwEPrkQYazOtimzB1qRTA%2FUrOrEejEyMUqN2XXrMwl4%2FavdFjPpBAsCsF7KFJOL%2FB7H4%3D&v=2.0步驟6: 對該結(jié)果做URLDECODE解碼工作(調(diào)用urldecode函數(shù))。res_data=KzTV7n3JHKMmaxc9jObz8FqT9PO8MQw5kqX8uqO4fGwvNIDHNngLdEig/aN4A97i0nRviLzoutVSojBIM+RECev5UR6aqhME+ei+X8LYf9sZaE1V3o2oMz3BnubFOcnozWBgXyDaA2fzeU1YxT9TL4BLaDEJ0gZB5upjpMeiyO+il9068gl11ojNbJE3jeGtgqp/XTSXmFZ0x7DYefB1XYWmzETLywMkKdwlhnYIDrTLHLj4wdMTmsQS+xbTD2egERafRFD3DtPDkO6j7pRfHcJBtoEtC/g4Zj2FD58ADEGLKb7oAkMU6ado091la/vAzH3gZtElHAs+dYglI/UIBw==&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088101568358171&req_id=201306170002&sign=oo4ShGc1fndnYiI2OJzclNSQcfspEzoQchrYS8fhiaAzddE31ra/fq7xOm9RCzDTfgyO3Sl8pUcAWY+4BYPrxMF5GPVv2IZDY/N/xQjTwEPrkQYazOtimzB1qRTA/UrOrEejEyMUqN2XXrMwl4/avdFjPpBAsCsF7KFJOL/B7H4=&v=2.0步驟7: 對這串結(jié)果字符串做字符串切割,獲取返回參數(shù)的信息。其中,如果簽名方式設(shè)置的是0001(RSA),那么還需要對這結(jié)果中的返回參數(shù)res_data做解密工作;如果簽名方式設(shè)置的MD5,則結(jié)果中的返回參數(shù)res_data直接顯示明文。res_data=<?xml version="1.0" encoding="utf-8"?><direct_trade_create_res><request_token>201306179d4c458a00e26aca863b4dac3cc2bfd3</request_token></direct_trade_create_res>&service=alipay.wap.trade.create.direct&sec_id=0001&partner=2088101568358171&req_id=201306170002&sign=oo4ShGc1fndnYiI2OJzclNSQcfspEzoQchrYS8fhiaAzddE31ra/fq7xOm9RCzDTfgyO3Sl8pUcAWY+4BYPrxMF5GPVv2IZDY/N/xQjTwEPrkQYazOtimzB1qRTA/UrOrEejEyMUqN2XXrMwl4/avdFjPpBAsCsF7KFJOL/B7H4=&v=2.0接著把XML結(jié)構(gòu)的res_data的值做XML解析,從中獲取子節(jié)點request_token的值(這一系列過程需調(diào)用AlipaySubmit類中的ParseResponse函數(shù)),這個值就是授權(quán)令牌。201306179d4c458a00e26aca863b4dac3cc2bfd3步驟8: 商戶為手機網(wǎng)頁即時到賬交易接口(alipay.wap.auth.authandexecute)的請求參數(shù)配置好數(shù)據(jù)后,與步驟一、二、三、四同理,把數(shù)據(jù)組裝進數(shù)組sParaTemp中。{[partner, 2088101568358171]}{[_input_charset, utf-8]}{[sec_id, 0001]}{[service, alipay.wap.auth.authAndExecute]}{[format, xml]}{[v, 2.0]}{[req_data, <auth_and_execute_req><request_token>201306179d4c458a00e26aca863b4dac3cc2bfd3</request_token></auth_and_execute_req>]}對該數(shù)組做空值過濾(調(diào)用AlipaySubmit類中的FilterPara函數(shù)),對該數(shù)組做參數(shù)名首字母升序的排序動作(調(diào)用AlipaySubmit類中的SortPara函數(shù)),把待簽名數(shù)組轉(zhuǎn)變成待簽名字符串,對該字符串做簽名(調(diào)用AlipaySubmit類中的BuildRequestMysign函數(shù)),把簽名結(jié)果賦值給參數(shù)sign,并把sign加入之前的待簽名數(shù)組中,此時得到的便是要請求給支付寶的全部數(shù)據(jù)。{[_input_charset, utf-8]}{[format, xml]}{[partner, 2088101568358171]}{[req_data, <auth_and_execute_req><request_token>201306179d4c458a00e26aca863b4dac3cc2bfd3</request_token></auth_and_execute_req>]}{[sec_id, 0001]}{[service, alipay.wap.auth.authAndExecute]}{[v, 2.0]}{[sign, yB+DrSNb0zvnpzgzid7h/J45V0xbNsOSr7q0/qpX4jElmSCDxUl6ouwc3T39XwCy1nwil/SGx0PiwjN1AKHy+4zADjQVmDMCR28b9skLrVM/Gw5cU35FEgvlTIK+UZ85t/5m4KVby9CIqeI+B6ziXM4zQUxsNTU7AjRGi/kU3Es=]}步驟9: 以GET方式,請求支付寶(調(diào)用AlipaySubmit類中的BuildRequest(string GATEWAY_NEW, Dictionary<string, string> sParaTemp, string strMethod, string strButtonValue)函數(shù)),此時商戶的頁面會自動跳轉(zhuǎn)至支付寶收銀臺。圖5-4 跳轉(zhuǎn)至支付寶收銀臺后面的動作全由買家在支付寶收銀臺中操作完成。步驟10: 當這筆交易被買家支付成功后支付寶收銀臺上顯示該筆交易成功,并提示用戶可返回商戶網(wǎng)站。買家點擊該功能按鈕后,則當前界面會跳轉(zhuǎn)回商戶設(shè)置的call_back_url頁面文件去,如果長時間沒有點擊,則當前支付寶收銀臺界面會自動跳轉(zhuǎn)至商戶call_back_url頁面文件去。此時商戶的call_back_url頁面會收到一串帶有處理結(jié)果數(shù)據(jù)的鏈接地址。http://127.0.0.1:48034/WS_WAP_PAYWAP-CSHARP/call_back_url.aspx?out_trade_no=cs201306170002&request_token=requestToken&result=success&trade_no=2013061742035035&sign=vnXVWq91w87tmKdrtePYKnEJZmVhuUMeVCVv18HwU8ABmvKH48CLXRQjjAdU4y75WtR62HhEoNCLAnTkx1hxsVGOZwpSRx9DxdXwz1m1NozIOV%2BTN8V9l%2FQXEJj0dmlgd3UjHdxfAbMkFKFDznIfZwYSbhCAL2H4KwXdefLAGiw%3D&sign_type=0001步驟11: 用GET方式獲得這些返回數(shù)據(jù),與步驟一、二、三、四同理,對數(shù)組sPara(調(diào)用call_back_url頁面中的GetRequestGet()函數(shù))做空值過濾、參數(shù)名首字母升序的排序、待簽名數(shù)組轉(zhuǎn)變成待簽名字符串。out_trade_no=cs201306170002&request_token=requestToken&result=success&trade_no=2013061742035035對該字符串做簽名驗證(這一系列動作為調(diào)用AlipayNotify類中的VerifyReturn函數(shù)完成),得到布爾類型的驗證結(jié)果,完成call_back_url頁面文件的驗證動作。步驟12: 買家對一筆交易付款完成的同時,除了支付寶會觸發(fā)頁面跳轉(zhuǎn)至call_back_url文件的同步通知動作,還會自動觸發(fā)服務(wù)器異步通知頁面文件(商戶設(shè)置參數(shù)notify_url的值)。此時,商戶的notify_url文件也會收到支付寶異步通知回來的數(shù)據(jù)。{service=alipay.wap.trade.create.direct, sign=eUHFymt6/MSGNDX8XcnD44IRKEXkx3mG5dk9hp39LYqmwO/WWf9+mldyljSkEXTo9wA2p8Tv9CR1NCTy9nMjHg19KWX8Rtrz2CIfoOvTsE8ttxaRzkQ8TBo/K3sHPERJmQZE2uW8RyXywMaRbRMC+90YATDqex6e7FCR0HQt4KI=, sec_id=0001, v=1.0, notify_data=iUtYE4ipOb+hpmw+lU1lDaLvTxusiNwV6LKDn6vSJLY5Pl2HaE9O9sqWfYXeh+oos6cOS3bB5fkmDqJeDUXHH5oJFttkIosZAj1W0QjROcpF3/j4fx+15DsbGMwXfF4qeBAGA2PdAlwpdZK+krJeAyNn7jNUc2STWVS7ZBRBs0SV8meE1TrjQf5zcQMmoBhLRot6/9iiZyoeBYh2s4JA2u+1HakCLEFproN288teBwA6X/apKe+AauHCYnrUMSO8Wjhz7vaQlkWkQ7tq5rcT6kPGkmwhWvhVylDYXB51SD0KI/17qHm4z8hWiXzArl22P1r6TwP87WBmnAudPfAM5Jj0Uq1UeCE2LpG+8Z2IzKPe1OTLJhtcrjza3q/vFj/J1lT1pq2PM9eDs9p0aV3KuCH3+1Ms7oMqq8IjeJdExYFIa002NxCTkc7VWyMnwHWYCSGC+vPUR9KeZKtWvMpHpJRIJegXiF2LWRU0XrXfwnguiOpWVmSW3XGemedxRsIG0AOyNSLAfq+9Wqvcbz6lcwzskDcLwwOHo2Qo9sRWB7wEytcJwGstXHbXLXR3GXvIkogD7slYd3mvqsczeTPCJ7KeftQP0yGi6gb3wM7igDkIc2tvvdrwQqg7SBjOOU1mUwZbMXYb4ErlFNELHw+5/Tu/qlQcaSma/WWiOL1z0yj1HnfF/PhdWJ/ohlDCMg5iwPW4Xa1gJx+SEGz/lr9ZFbSvCIzzVFgXN+v+26kNb/VvM4dqfSUoj722AOv0fvkNA7qS0EZ7j0gv2L5IZMjibK7DwQ/SLgiQf9sALPWkSBoJfBdZ4k5vJXry4p3Uh2BHUeDckQzNaB3oQJVT8X+6h+8hpvZS5KpDRrq57odJEWqcWQ3tEozyANqL2XTea3tH3h9Fi3ZqmhNTazvdRMGXHLaOhMIg6kmo84aYbPMapv/5fyQdXrELZLiuZh9oxLTECqrHN1kx8BLSLp4ubpkent7NV2LgJbA+jZhE7pUH2vnND4b6XNpOOSha+3y6/kLCjj6cnxUhnwjUUdCCfzXTK1j1+RCS1+G89SR+f7q1NQy/LPK4qD/FVAmquCFMsDzwKNPfNJdxadiElAezivEP4q7ihjH2iNKm/7WJouYfWfYTYXAepa5OIZodJP1otQu1uheDmm1COKnUw9PW6rOQkNK41Weiej0fWqTLi19Fe9YbWagVXf4qJ74RhxLhoWso2JdQV3OPNjCXa5EXn8mRGsB8yQKtwZvZTgtjMB+BMcEa6Qqb74G3mFifyB1+ZCdGIBijK0eMPzyskyqdQG15wC152F5A2BnImIObQ4MgFFqY0gbjM1xzUcb/mhQ196sPP+Mv+25uw4CcJE+5FQW6ONx343MEcs8P+esaRlY2CH4uXiUBtjltzlcD3kpC4RobNzuCMb/NLROkx+mLKZJeID1SgBa1Shj7OzYqVYyyUEpdPfgLEgwFsCtBl3Tsf05yW19acFX2+fYQXk+/k5gs/pkCt2ol27Z4bcGDEOP4zPCd5KrHyvguyUDXWepc48}步驟13: 用POST方式獲得這些返回數(shù)據(jù),如果簽名方式設(shè)置的是0001(RSA)時,需要先對這些數(shù)據(jù)中的參數(shù)notify_data做解密;如果簽名方式設(shè)置的是MD5,因為直接返回明文,所以不需要解密。{service=alipay.wap.trade.create.direct, sign=eUHFymt6/MSGNDX8XcnD44IRKEXkx3mG5dk9hp39LYqmwO/WWf9+mldyljSkEXTo9wA2p8Tv9CR1NCTy9nMjHg19KWX8Rtrz2CIfoOvTsE8ttxaRzkQ8TBo/K3sHPERJmQZE2uW8RyXywMaRbRMC+90YATDqex6e7FCR0HQt4KI=, sec_id=0001, v=1.0, notify_data=<notify><partner>2088101568358171</partner><payment_type>8</payment_type><subject>測試</subject><trade_no>2013061742035035</trade_no><buyer_email>xxxxxxx@xx.com</buyer_email><gmt_create>2013-06-17 20:12:35</gmt_create><notify_type>trade_status_sync</notify_type><quantity>1</quantity><out_trade_no>cs201306170002</out_trade_no><notify_time>2013-06-17 20:12:40</notify_time><seller_id>2088501624560335</seller_id><out_channel_type>BALANCE</out_channel_type><trade_status>TRADE_SUCCESS</trade_status><is_total_fee_adjust>N</is_total_fee_adjust><total_fee>0.01</total_fee><gmt_payment>2013-06-17 20:12:40</gmt_payment><seller_email>alipayrisk10@alipay.com</seller_email><price>0.01</price><buyer_id>2088002396712354</buyer_id><out_channel_amount>0.01</out_channel_amount><notify_id>c6936b49aa4422d63bf14bc507c535983y</notify_id><use_coupon>N</use_coupon></notify>}notify_url異步通知的簽名驗證規(guī)律與call_back_url不同,商戶只需要順序獲取支付寶的返回數(shù)據(jù),不需要對這些參數(shù)排序。因此,直接把數(shù)組sPara(調(diào)用notify_url頁面中的GetRequestPost()函數(shù))轉(zhuǎn)變成待簽名字符串。service=alipay.wap.trade.create.direct&v=1.0&sec_id=0001¬ify_data=<notify><partner>2088101568358171</partner><payment_type>8</payment_type><subject>測試</subject><trade_no>2013061742035035</trade_no><buyer_email>xxxxxxx@xx.com</buyer_email><gmt_create>2013-06-17 20:12:35</gmt_create><notify_type>trade_status_sync</notify_type><quantity>1</quantity><out_trade_no>cs201306170002</out_trade_no><notify_time>2013-06-17 20:12:40</notify_time><seller_id>2088501624560335</seller_id><out_channel_type>BALANCE</out_channel_type><trade_status>TRADE_SUCCESS</trade_status><is_total_fee_adjust>N</is_total_fee_adjust><total_fee>0.01</total_fee><gmt_payment>2013-06-17 20:12:40</gmt_payment><seller_email>alipayrisk10@alipay.com</seller_email><price>0.01</price><buyer_id>2088002396712354</buyer_id><out_channel_amount>0.01</out_channel_amount><notify_id>c6936b49aa4422d63bf14bc507c535983y</notify_id><use_coupon>N</use_coupon></notify>接著對該字符串做簽名驗證(這一系列動作調(diào)用AlipayNotify類中的VerifyNotify函數(shù)),得到布爾類型的驗證結(jié)果,完成notify_url頁面文件的驗證動作。步驟14: 在notify_url頁面文件中,參數(shù)notify_data是XML結(jié)構(gòu)的字符串,需要先XML解析,再獲取需要的子節(jié)點數(shù)據(jù)。6 Testing flow rulesTable 6-1 testing flow rulesSteps Debugging contents NotesStep 1: debug this interface independently on this computer 正常獲取授權(quán)令牌 模擬手機瀏覽器進行付款 頁面跳轉(zhuǎn)同步返回 Only configure the interface well. It shall not be put into the website project of the commercial user.Step 2: debug this interface independently on the server 正常獲取授權(quán)令牌 模擬手機瀏覽器進行付款 頁面跳轉(zhuǎn)同步返回 服務(wù)器異步通知返回 Put into the server debugging after debugging this computer without error.Step 3: interface is integrated to website project - Make the connection and integration between the debugged interfaces and the business flows of commercial users’ website project.Step4: debug the integrated website project on this computer The whole business operation flow 模擬手機瀏覽器進行付款 頁面跳轉(zhuǎn)同步返回 Subsequent execution of business Debug the interfaces integrated to the website project on this computerStep 5: debug the integrated website project The whole business operation flow 使用手機瀏覽器進行付款 頁面跳轉(zhuǎn)同步返回 服務(wù)器異步通知返回 Subsequent execution of business After the debugging on this computer is faultless, then put into server for debugging.7 附錄7.1 如何獲得PID與密鑰步驟1: 使用簽約支付寶賬號登錄“商家服務(wù)”平臺中的“我的商家服務(wù)”(https://b.alipay.com/order/serviceIndex.htm)。圖7-1 我的商家服務(wù)步驟2: 在地址欄中輸入https://mobiless.alipay.com/myproduct/my_order.htm,即可查看到簽約支付寶賬號、合作者身份ID(PID)的信息。圖7-2 查看簽約支付寶賬號等信息步驟3: 點擊<密鑰管理>按鈕,輸入“支付密碼”,點擊“確認”,即可查看到各類型的私鑰。圖7-3 查看私鑰步驟4: 上傳RSA類型的商戶公鑰,獲得支付寶公鑰。圖7-4獲取支付寶公鑰步驟5: 保存支付寶賬號、合作者身份ID(PID)、交易安全校驗碼(MD5)、交易安全校驗碼(RSA)中的支付寶公鑰。7.2 RSA密鑰生成與使用7.2.1 生成商戶密鑰1. 打開openssl密鑰生成軟件打開openssl文件夾下的bin文件夾,執(zhí)行openssl.exe文件,如下圖:圖7-5 執(zhí)行openssl.exe文件2. 生成RSA私鑰輸入“genrsa -out rsa_private_key.pem 1024”命令,回車后,在當前bin文件目錄中會新增一個rsa_private_key.pem文件,其文件為原始的商戶私鑰(請妥善保存該文件,PHP開發(fā)語言中需要使用該文件),以下為命令正確執(zhí)行截圖:圖7-6 生成RSA私鑰3. 生成RSA公鑰輸入“rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem”命令回車后,在當前bin文件目錄中會新增一個rsa_public_key.pem文件,其文件為原始的商戶公鑰(請妥善保存該文件,PHP開發(fā)語言中需要使用該文件),以下為命令正確執(zhí)行截圖:圖7-7 生成RSA公鑰4. 生成PKCS8編碼的私鑰輸入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”并回車,當前界面中會直接顯示出生成結(jié)果:圖7-8 生成PKCS8編碼的私鑰右鍵點擊openssl窗口上邊邊緣,選擇“編輯→標記”,選中要復(fù)制的文字:圖7-9 選中要復(fù)制的文字此時繼續(xù)右鍵點擊openssl窗口上邊邊緣,選擇“編輯→復(fù)制”,把復(fù)制的內(nèi)容粘貼進一個新的記事本中,可隨意命名,只要知道這個是PKCS8格式的私鑰即可(請妥善保存該文件)。7.2.2 RSA密鑰使用邏輯RSA密鑰使用邏輯:商戶在使用RSA簽名方式的支付寶接口時,真正會用到的密鑰是商戶私鑰與支付寶公鑰。商戶上傳公鑰給支付寶,支付寶把公鑰給商戶,是公鑰互換的操作。這就使得商戶使用自己的私鑰做簽名時,支付寶端會根據(jù)商戶上傳的公鑰做驗證簽名。商戶使用支付寶公鑰做驗證簽名時,同理,也是因為支付寶用支付寶私鑰做了簽名。1. PHP開發(fā)語言使用方法key文件夾里面須存放.pem后綴名的商戶私鑰、支付寶公鑰兩個文件。 商戶的私鑰– 必須保證只有一行文字,即:沒有回車、換行、空格等;– 不需要對剛生成的(原始的)私鑰做pkcs8編碼;– 不需要去掉去掉“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”;– 簡言之,只要維持剛生成出來的私鑰的內(nèi)容即可。 支付寶公鑰(1) 先用簽約支付寶賬號登錄支付寶網(wǎng)站,再瀏覽器訪問“https://ms.alipay.com/index.htm”,點擊菜單欄“我的商家服務(wù)”,右側(cè)點擊“密鑰管理”進入密鑰管理頁面,復(fù)制“交易安全校驗碼(RSA)”→“支付寶公鑰”欄目下的整串信息到一個新的記事本中,命名為“alipay_public_key.txt”;(2) 去掉這串字符串中的回車、換行、空格,變成只有一行文字;(3) 在這串支付寶公鑰字符串的頭尾部分,分別增加“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”這兩條文字;(4) 切割這串支付寶公鑰字符串,切割后的格式與商戶剛生成的公鑰格式一致即可,如下圖:圖7-10 支付寶公鑰示意圖(5) 保存該記事本,并改變后綴名為.pem。2. JAVA和ASP.NET(C#)開發(fā)語言使用方法 商戶的私鑰– 必須保證只有一行文字,即:沒有回車、換行、空格等;– 需對剛生成的(原始的)私鑰做pkcs8編碼;– 編碼完成后,復(fù)制該段私鑰,并去掉該段里面的回車、換行、空格、“-----BEGIN RSA PRIVATE KEY-----”、“-----END RSA PRIVATE KEY-----”。 支付寶公鑰(1) 先用簽約支付寶賬號登錄支付寶網(wǎng)站,再瀏覽器訪問“https://ms.alipay.com/index.htm”,點擊菜單欄“我的商家服務(wù)”,右側(cè)點擊“密鑰管理”進入密鑰管理頁面,復(fù)制“交易安全校驗碼(RSA)”→“支付寶公鑰”欄目下的整串信息;(2) 去掉這串字符串中的回車、換行、空格,必須保證只有一行文字。7.3 業(yè)務(wù)數(shù)據(jù)傳遞支付寶提供的業(yè)務(wù)參數(shù)為支付寶需要商戶傳遞過來的數(shù)據(jù)要求。商戶只需要根據(jù)自己的業(yè)務(wù)需求,在業(yè)務(wù)邏輯代碼運行時把這些動態(tài)數(shù)據(jù)以賦值給變量的形式,再通過支付寶接口本身的接口邏輯,傳遞給支付寶系統(tǒng),讓支付寶系統(tǒng)可識別。舉例說明,商戶要把某筆訂單的數(shù)據(jù)傳遞給支付寶。那么商戶需要先根據(jù)支付寶的參數(shù)要求,從自己的下單系統(tǒng)中拿到付款總金額(total_fee)、商戶的訂單號(out_trade_no)、訂單名稱(subject)等數(shù)據(jù),再把這些數(shù)據(jù)一個一個以值的形式賦給對應(yīng)的變量。再通過代碼邏輯,把變量組合及加工成一次可以發(fā)送給支付寶的請求。7.4 如何增加擴展業(yè)務(wù)參數(shù)注意:本章節(jié)以代碼示例為例,來說明如何增加擴展業(yè)務(wù)參數(shù),僅供參考。商戶需要根據(jù)自身情況來編寫擴展業(yè)務(wù)參數(shù)的代碼。打開配置業(yè)務(wù)參數(shù)的頁面文件,找到代碼修改位置。1. JAVA修改流程alipayapi.jsp文件,在參數(shù)req_dataToken中的根節(jié)點<direct_trade_create_req>下新增子節(jié)點。舉例,新增一個參數(shù)merchant_url,那么修改前后比較如下: 修改前:String req_dataToken = "<direct_trade_create_req><notify_url>" + notify_url + "</notify_url><call_back_url>" + call_back_url + "</call_back_url><seller_account_name>" + seller_email + "</seller_account_name><out_trade_no>" + out_trade_no + "</out_trade_no><subject>" + subject + "</subject><total_fee>" + total_fee + "</total_fee></direct_trade_create_req>"; 修改后:String req_dataToken = "<direct_trade_create_req><notify_url>" + notify_url + "</notify_url><call_back_url>" + call_back_url +"</call_back_url><seller_account_name>" + seller_email + "</seller_account_name><out_trade_no>" + out_trade_no + "</out_trade_no><subject>" + subject + "</subject><total_fee>" + total_fee + "</total_fee><merchant_url>" + merchant_url + "</merchant_url></direct_trade_create_req>";merchant_url為新增的業(yè)務(wù)參數(shù)變量,需商戶為其賦值。2. PHP修改流程alipayapi.php文件,在參數(shù)$req_data中的根節(jié)點<direct_trade_create_req>下新增子節(jié)點。舉例,新增一個參數(shù)merchant_url,那么修改前后比較如下: 修改前:$req_data = '<direct_trade_create_req><notify_url>' . $notify_url . '</notify_url><call_back_url>' . $call_back_url . '</call_back_url><seller_account_name>' . $seller_email . '</seller_account_name><out_trade_no>' . $out_trade_no . '</out_trade_no><subject>' . $subject . '</subject><total_fee>' . $total_fee . '</total_fee></direct_trade_create_req>'; 修改后:$req_data = '<direct_trade_create_req><notify_url>' . $notify_url . '</notify_url><call_back_url>' . $call_back_url . '</call_back_url><seller_account_name>' . $seller_email . '</seller_account_name><out_trade_no>' . $out_trade_no . '</out_trade_no><subject>' . $subject . '</subject><total_fee>' . $total_fee . '</total_fee><merchant_url>'.$merchant_url.'</merchant_url></direct_trade_create_req>';$merchant_url為新增的業(yè)務(wù)參數(shù)變量,需商戶為其賦值。3. ASP.NET(C#)修改流程default.aspx.cs文件,在參數(shù)req_dataToken中的根節(jié)點<direct_trade_create_req>下新增子節(jié)點。舉例,新增一個參數(shù)merchant_url,那么修改前后比較如下: 修改前:string req_dataToken = "<direct_trade_create_req><notify_url>" + notify_url + "</notify_url><call_back_url>" + call_back_url + "</call_back_url><seller_account_name>" + seller_email + "</seller_account_name><out_trade_no>" + out_trade_no + "</out_trade_no><subject>" + subject + "</subject><total_fee>" + total_fee + "</total_fee></direct_trade_create_req>"; 修改后:string req_dataToken = "<direct_trade_create_req><notify_url>" + notify_url + "</notify_url><call_back_url>" + call_back_url +"</call_back_url><seller_account_name>" + seller_email + "</seller_account_name><out_trade_no>" + out_trade_no + "</out_trade_no><subject>" + subject + "</subject><total_fee>" + total_fee + "</total_fee><merchant_url>" + merchant_url + "</merchant_url></direct_trade_create_req>";merchant_url為新增的業(yè)務(wù)參數(shù)變量,需商戶為其賦值。7.5 如何更新訂單在交易過程中,不僅需要實現(xiàn)能夠讓買家成功付款,而且還需要商戶網(wǎng)站的訂單數(shù)據(jù)與支付寶的交易管理中的交易信息保持一致。要使信息保持一致,就需要商戶網(wǎng)站的程序開發(fā)、維護或管理的技術(shù)人員根據(jù)商戶網(wǎng)站的業(yè)務(wù)流程做訂單更新的程序開發(fā)。 訂單更新的業(yè)務(wù)程序代碼放置位置參數(shù)notify_url對應(yīng)的頁面文件、參數(shù)return_url對應(yīng)的頁面文件,注釋指定的位置。 訂單更新的頁面文件如何被調(diào)用前提:參數(shù)notify_url、參數(shù)return_url有被正確設(shè)置。– 當買家付款完成時,當前界面會自動跳轉(zhuǎn)到參數(shù)return_url對應(yīng)的頁面文件,此時return_url對應(yīng)的頁面文件則被啟動;– 當該筆交易在支付寶交易管理中存在且交易狀態(tài)改變時,支付寶會主動發(fā)送通知到參數(shù)notify_url對應(yīng)的頁面文件,此時參數(shù)notify_url對應(yīng)的頁面文件則被啟動。 如何能獲得支付寶處理完成后的通知返回數(shù)據(jù)通知返回數(shù)據(jù)的參數(shù)詳見技術(shù)文檔通知返回參數(shù)列表。– 參數(shù)return_url對應(yīng)的頁面文件中獲取參數(shù)方式是GET方式獲取,如:request.querrystring("參數(shù)名")、$_GET['參數(shù)名']– 參數(shù)notify_url對應(yīng)的頁面文件中獲取參數(shù)方式是POST方式獲取,如:request.form("參數(shù)名")、$_POST['參數(shù)名'] 訂單更新基本思想通過代碼示例中的驗證之后,獲取支付寶反饋數(shù)據(jù),先根據(jù)這筆交易找到商戶網(wǎng)站訂單系統(tǒng)中對應(yīng)的訂單,再判斷該筆訂單是否已經(jīng)做過處理,如果未做處理,那么按照商戶網(wǎng)站的業(yè)務(wù)流程更新訂單數(shù)據(jù)。Unitrans世聯(lián)翻譯公司在您身邊,離您近的翻譯公司,心貼心的專業(yè)服務(wù),專業(yè)的全球語言翻譯與信息解決方案供應(yīng)商,專業(yè)翻譯機構(gòu)品牌。無論在本地,國內(nèi)還是海外,我們的專業(yè)、星級體貼服務(wù),為您的事業(yè)加速!世聯(lián)翻譯公司在北京、上海、深圳等國際交往城市設(shè)有翻譯基地,業(yè)務(wù)覆蓋全國城市。每天有近百萬字節(jié)的信息和貿(mào)易通過世聯(lián)走向全球!積累了大量政商用戶數(shù)據(jù),翻譯人才庫數(shù)據(jù),多語種語料庫大數(shù)據(jù)。世聯(lián)品牌和服務(wù)品質(zhì)已得到政務(wù)防務(wù)和國際組織、跨國公司和大中型企業(yè)等近萬用戶的認可。 專業(yè)翻譯公司,北京翻譯公司,上海翻譯公司,英文翻譯,日文翻譯,韓語翻譯,翻譯公司排行榜,翻譯公司收費價格表,翻譯公司收費標準,翻譯公司北京,翻譯公司上海。