支付寶即時到賬java接口

近期應用了支付寶即時到賬交易接口,過程中遇上了驗證的問題。

支付寶是很簡單的接口,需要我們做的就是 “收集數據”,然後交由接口生成表單HTML,然後提交就可以,注意的是生成方式默認是GET,改爲POST比較保險。

AlipaySubmit.buildForm(sParaTemp, ALIPAY_GATEWAY_NEW, "post", strButtonName);


接下來就等待返回,返回有兩種,一種是“異步通知”(服務器主動通知,客戶不可見),一種是“頁面跳轉通知”(支付操作後幾秒,支付寶自動跳轉回商戶指定頁面)。

分別對應我們傳過去的 notify_url 和 return_url。兩個參數不要含有“?”號。

還要注意就是參數是空的就不要傳過去。直接註釋掉那一行。如默認銀行我們不需要:

//sParaTemp.put("defaultbank", "");



兩個方法都需要驗證支付支付結果,驗證條件只有兩個,

一個就是驗證提交數據的簽名,示例代碼都很完整的操作,我們只需要照搬就可以。

另一個就是針對驗證來源是否支付寶的 驗證,通過返回的參數notify_id,以及我們的賣家賬號,以下面形式提交回去進行驗證,返回true則對應。

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

而第二個驗證對於我們來說是透明的,我們只需要理解就可以。



再提一下我遇到的問題,因爲數據中有中文,所以編碼問題造成驗證簽名不成功,

現在總結出來主要是我們需要保證編碼上的統一。我是使用GBK編碼的。


1. 爲了保證這一點,我們首先要檢查tomcat的配置

    <Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="GBK"

2. alipayto.jsp,notify_url.jsp,return_url.jsp 裏面所有四種編碼都要統一,分別是 

<%@ page language="java" contentType="text/html; charset=GBK"
	pageEncoding="GBK"%>

<meta http-equiv="Content-Type" content="text/html; charset=GBK">

以及文檔本身的編碼。GBK 就對應 ANSI

3.設置AlipayConfig 的編碼格式 input_charset = "GBK"


這樣就不用對數據進行任何編碼轉換 就可以 傳輸中文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章