日韩亚洲欧美色图,久久亚洲精精品中文字幕,国产,日韩,欧美综合在线,丰满少妇2中文免费观看,国产精品一区二区20P发布,我强进了老师身体在线观看

手機版
1 2 3 4
首頁 > 新聞中心 > 翻譯公司資訊 >
翻譯公司資訊

世聯(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.0 
 
Alipay (China) Internet Technology Ltd.  All right reserved
手機網(wǎng)頁即時到賬接口附錄文檔
 
1 Document Description
1.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 terms
Table 1-1 Business Terms
Terms                   Description 
Demand The process of transmitting the data requiring for delivery to the
Return 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 liability 
All 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 rules
Table 3-1 Technological access rules
Types Details Reasons
Account 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 interface 
Among 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 interface 
It is mandatory to configure as per the format of all parameters in the request parameter list. Avoid abnormal using of interface 
It 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&notify_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 interface  
Error 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 interface  
 
4 Interface access rules
Table 4-1 Interface using rules
Type 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&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> 
接著對該字符串做簽名驗證(這一系列動作調(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&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> 
接著對該字符串做簽名驗證(這一系列動作調(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&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> 
接著對該字符串做簽名驗證(這一系列動作調(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 rules
Table 6-1 testing flow rules
 
Steps Debugging contents Notes
Step 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 computer 
Step 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è)翻譯公司,北京翻譯公司,上海翻譯公司,英文翻譯,日文翻譯,韓語翻譯,翻譯公司排行榜,翻譯公司收費價格表,翻譯公司收費標準,翻譯公司北京,翻譯公司上海。
  • “貴司提交的稿件專業(yè)詞匯用詞準確,語言表達流暢,排版規(guī)范, 且服務(wù)態(tài)度好。在貴司的幫助下,我司的編制周期得以縮短,稿件語言的表達質(zhì)量得到很大提升”

    華東建筑設(shè)計研究總院

  • “我單位是一家總部位于丹麥的高科技企業(yè),和世聯(lián)翻譯第一次接觸,心中仍有著一定的猶豫,貴司專業(yè)的譯員與高水準的服務(wù),得到了國外合作伙伴的認可!”

    世萬保制動器(上海)有限公司

  • “我公司是一家荷蘭駐華分公司,主要致力于行為學(xué)研究軟件、儀器和集成系統(tǒng)的開發(fā)和銷售工作,所需翻譯的英文說明書專業(yè)性強,翻譯難度較大,貴司總能提供優(yōu)質(zhì)的服務(wù)。”

    諾達思(北京)信息技術(shù)有限責任公司

  • “為我司在東南亞地區(qū)的業(yè)務(wù)開拓提供小語種翻譯服務(wù)中,翻譯稿件格式美觀整潔,能最大程度的還原原文的樣式,同時翻譯質(zhì)量和速度也得到我司的肯定和好評!”

    上海大眾

  • “在此之前,我們公司和其他翻譯公司有過合作,但是翻譯質(zhì)量實在不敢恭維,所以當我認識劉穎潔以后,對她的專業(yè)性和貴公司翻譯的質(zhì)量非常滿意,隨即簽署了長期合作合同!

    銀泰資源股份有限公司

  • “我行自2017年與世聯(lián)翻譯合作,合作過程中十分愉快。特別感謝Jasmine Liu, 態(tài)度熱情親切,有耐心,對我行提出的要求落實到位,體現(xiàn)了非常高的專業(yè)性!

    南洋商業(yè)銀行

  • “與我公司對接的世聯(lián)翻譯客服經(jīng)理,可以及時對我們的要求進行反饋,也會盡量滿足我們臨時緊急的文件翻譯要求。熱情周到的服務(wù)給我們留下深刻印象!”

    黑龍江飛鶴乳業(yè)有限公司

  • “翻譯金融行業(yè)文件各式各樣版式復(fù)雜,試譯多家翻譯公司,后經(jīng)過比價、比服務(wù)、比質(zhì)量等流程下來,最終敲定了世聯(lián)翻譯。非常感謝你們提供的優(yōu)質(zhì)服務(wù)!

    國金證券股份有限公司

  • “我司所需翻譯的資料專業(yè)性強,涉及面廣,翻譯難度大,貴司總能提供優(yōu)質(zhì)的服務(wù)。在一次業(yè)主單位對完工資料質(zhì)量的抽查中,我司因為俄文翻譯質(zhì)量過關(guān)而受到了好評。”

    中辰匯通科技有限責任公司

  • “我司在2014年與貴公司建立合作關(guān)系,貴公司的翻譯服務(wù)質(zhì)量高、速度快、態(tài)度好,贏得了我司各部門的一致好評。貴司經(jīng)理工作認真踏實,特此致以誠摯的感謝!”

    新華聯(lián)國際置地(馬來西亞)有限公司

  • “我們需要的翻譯人員,不論是筆譯還是口譯,都需要具有很強的專業(yè)性,貴公司的德文翻譯稿件和現(xiàn)場的同聲傳譯都得到了我公司和合作伙伴的充分肯定!

    西馬遠東醫(yī)療投資管理有限公司

  • “在這5年中,世聯(lián)翻譯公司人員對工作的認真、負責、熱情、周到深深的打動了我。不僅譯件質(zhì)量好,交稿時間及時,還能在我司資金周轉(zhuǎn)緊張時給予體諒!

    華潤萬東醫(yī)療裝備股份有限公司

  • “我公司與世聯(lián)翻譯一直保持著長期合作關(guān)系,這家公司報價合理,質(zhì)量可靠,效率又高。他們翻譯的譯文發(fā)到國外公司,對方也很認可!

    北京世博達科技發(fā)展有限公司

  • “貴公司翻譯的譯文質(zhì)量很高,語言表達流暢、排版格式規(guī)范、專業(yè)術(shù)語翻譯到位、翻譯的速度非?臁⒑笃诜⻊(wù)熱情。我司翻譯了大量的專業(yè)文件,經(jīng)過長久合作,名副其實,值得信賴。”

    北京塞特雷特科技有限公司

  • “針對我們農(nóng)業(yè)科研論文寫作要求,盡量尋找專業(yè)對口的專家為我提供翻譯服務(wù),最后又按照學(xué)術(shù)期刊的要求,提供潤色原稿和相關(guān)的證明文件。非常感謝世聯(lián)翻譯公司!”

    中國農(nóng)科院

  • “世聯(lián)的客服經(jīng)理態(tài)度熱情親切,對我們提出的要求都落實到位,回答我們的問題也非常有耐心。譯員十分專業(yè),工作盡職盡責,獲得與其共事的公司總部同事們的一致高度認可。”

    格萊姆公司

  • “我公司與馬來西亞政府有相關(guān)業(yè)務(wù)往來,急需翻譯項目報備材料。在經(jīng)過對各個翻譯公司的服務(wù)水平和質(zhì)量的權(quán)衡下,我們選擇了世聯(lián)翻譯公司。翻譯很成功,公司領(lǐng)導(dǎo)非常滿意!

    北京韜盛科技發(fā)展有限公司

  • “客服經(jīng)理能一貫熱情負責的完成每一次翻譯工作的組織及溝通。為客戶與譯員之間搭起順暢的溝通橋梁。能協(xié)助我方建立專業(yè)詞庫,并向譯員準確傳達落實,準確及高效的完成統(tǒng)一風(fēng)格!

    HEURTEY PETROCHEM法國赫銻石化

  • “貴公司與我社對翻譯項目進行了幾次詳細的會談,期間公司負責人和廖小姐還親自來我社拜訪,對待工作熱情,專業(yè)度高,我們雙方達成了很好的共識。對貴公司的服務(wù)給予好評!”

    東華大學(xué)出版社

  • “非常感謝世聯(lián)翻譯!我們對此次緬甸語訪談翻譯項目非常滿意,世聯(lián)在充分了解我司項目的翻譯意圖情況下,即高效又保質(zhì)地完成了譯文!

    上海奧美廣告有限公司

  • “在合作過程中,世聯(lián)翻譯保質(zhì)、保量、及時的完成我們交給的翻譯工作?蛻艚(jīng)理工作積極,服務(wù)熱情、周到,能全面的了解客戶的需求,在此表示特別的感謝!

    北京中唐電工程咨詢有限公司

  • “我們通過圖書翻譯項目與你們相識乃至建立友誼,你們報價合理、服務(wù)細致、翻譯質(zhì)量可靠。請允許我們借此機會向你們表示衷心的感謝!”

    山東教育出版社

  • “很滿意世聯(lián)的翻譯質(zhì)量,交稿準時,中英互譯都比較好,措辭和句式結(jié)構(gòu)都比較地道,譯文忠實于原文。TNC是一家國際環(huán)保組織,發(fā)給我們美國總部的同事后,他們反應(yīng)也不錯!

    TNC大自然保護協(xié)會

  • “原英國首相布萊爾來訪,需要非常專業(yè)的同聲傳譯服務(wù),因是第一次接觸,心中仍有著一定的猶豫,但是貴司專業(yè)的譯員與高水準的服務(wù),給我們留下了非常深刻的印象!

    北京師范大學(xué)壹基金公益研究院

  • “在與世聯(lián)翻譯合作期間,世聯(lián)秉承著“上善若水、厚德載物”的文化理念,以上乘的品質(zhì)和質(zhì)量,信守對客戶的承諾,出色地完成了我公司交予的翻譯工作!

    國科創(chuàng)新(北京)信息咨詢中心

  • “由于項目要求時間相當緊湊,所以世聯(lián)在保證質(zhì)量的前提下,盡力按照時間完成任務(wù)。使我們在世博會俄羅斯館日活動中準備充足,并受到一致好評!

    北京華國之窗咨詢有限公司

  • “貴公司針對客戶需要,挑選優(yōu)秀的譯員承接項目,翻譯過程客戶隨時查看中途稿,并且與客戶溝通術(shù)語方面的知識,能夠更準確的了解到客戶的需求,確保稿件高質(zhì)量!

    日工建機(北京)國際進出口有限公司

15801211926

18017395793
點擊添加微信

無需轉(zhuǎn)接等回電

民和| 乐安县| 深圳市| 申扎县| 吴旗县| 宿松县| 福泉市| 聊城市| 万盛区| 久治县| 文登市| 阳江市| 个旧市| 年辖:市辖区| 辽阳市| 衡阳县| 吉首市| 北流市| 宁海县| 伊宁市| 神池县| 千阳县| 泰兴市| 涟源市| 曲靖市| 乌什县| 闽清县| 大丰市| 泗阳县| 永仁县| 长岭县| 林口县| 沙田区| 昌都县| 府谷县| 竹北市| 朝阳市| 建湖县| 嘉峪关市| 云龙县| 安溪县|