1. 測試服務器必須是外網,端口最好是80端口(我試過很多端口,像8080什麼的等,但是paypal那邊總是不發送IPN信息過來,一直不知道是怎麼回事,最後改成80端口後就OK了。)。
2.無論是在sandbox還是在真實環境裏面,貨幣符號不要用CNY ,因爲現在PAYPAL還沒有收取RMB的功能,國內的對於RMB有貝寶中國 ,但是貝寶中國和paypal是一個不同的業務,雖然是同一個公司,但是暫時不能互相交互數據。
貝寶中國和paypal的設置區別:
https://www.paypal-biz.com/paypalcollege/beginner/gettoknow/paypalintro/2468.html
關於paypal API 參考資料:
http://www.paypal-biz.com/development/documentation/PayPal_IPN&PDT_Guide_V1.0.pdf
paypal代碼生成:
https://www.paypaltech.com/sg2/
JAVA 的代碼生成不了,JAVA代碼爲:
Enumeration en = request.getParameterNames();
String str = "cmd=_notify-validate";
while(en.hasMoreElements()){
String paramName = (String)en.nextElement();
String paramValue = request.getParameter(paramName);
str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue,"utf-8");
}
URL u = new URL("https://www.sandbox.paypal.com/cgi-bin/webscr");
URLConnection uc = u.openConnection();
uc.setDoOutput(true);
uc.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
PrintWriter pw = new PrintWriter(uc.getOutputStream());
pw.println(str);
pw.close();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String res = in.readLine();
Timestamp nowtime=new Timestamp(System.currentTimeMillis());
in.close();
表單數據:
<form name="myIpnform"
action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" >
<input name="add" value="1" type="hidden" />
<input name="cmd" value="_xclick" type="hidden" />
<input name="business" value="
[email protected]" type="hidden" />
<input name="item_name" value="GPSu2-Navigation Bundle" type="hidden" />
<input name="item_number" value="001" type="hidden" />
<input name="amount" value="1" type="hidden" />
<input name="no_shipping" value="2" type="hidden" />
<input name="no_note" value="1" type="hidden" />
<input name="currency_code" value="USD" type="hidden" />
<input name="mc_currency" value="USD" type="hidden" />
<input name="lc" value="US" type="hidden" />
<input name="bn" value="PP-ShopCartBF" type="hidden" />
<input type="hidden" name="return" value="http:/phone/index"/>
<input type="hidden" name="notify_url" value="http:/phone/IPN?gpsid=<s:property value='#vi.gpsid' />"/>
<input type="hidden" value="http:/phone" name="cancel_return" />
</form>