最近在幫朋友做一個支付功能,用到了支付寶。
從支付寶管理界面,下載到商戶合作文檔,看了demo程序后,心是拔涼拔涼的。
說說review代碼后的問題吧:
CheckURL.java
public static String check(String urlvalue ) {
String inputLine="";
try{
URL url = new URL(urlvalue);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
urlConnection.getInputStream()));
inputLine = in.readLine().toString();
}catch(Exception e){
e.printStackTrace();
}
//System.out.println(inputLine); 系統打印出抓取得驗證結果
return inputLine;
}
*Inputstream不需要close?
*知道e.printStackTrace()的性能代價?
Md5Encrypt.java
*是采用什么編碼的?我下載的是UTF8編碼版本的,請問Md5Encrypt.java是什么編碼?
Payment.java
public static String CreateUrl(String paygateway,String service,String sign_type,String out_trade_no,
String input_charset,String partner,String key,String seller_email,
String body,String subject,String price,String quantity,String show_url,String payment_type,
String discount,String logistics_type,String logistics_fee,String logistics_payment,
String return_url) {
//String notify_url,需要的請把參數加入以上的createurl
Map params = new HashMap();
params.put("service", service);
params.put("out_trade_no", out_trade_no);
params.put("show_url", show_url);
params.put("quantity", quantity);
params.put("partner", partner);
params.put("payment_type", payment_type);
params.put("discount", discount);
params.put("body", body);
// params.put("notify_url", notify_url);
params.put("price", price);
params.put("return_url", return_url);
params.put("seller_email", seller_email);
params.put("logistics_type", logistics_type);
params.put("logistics_fee", logistics_fee);
params.put("logistics_payment", logistics_payment);
params.put("subject", subject);
params.put("_input_charset", input_charset);
String prestr = "";
prestr = prestr + key;
//System.out.println("prestr=" + prestr);
String sign = com.alipay.util.Md5Encrypt.md5(getContent(params, key));
String parameter = "";
parameter = parameter + paygateway;
//System.out.println("prestr=" + parameter);
List keys = new ArrayList(params.keySet());
for (int i = 0; i < keys.size(); i++) {
String value =(String) params.get(keys.get(i));
if(value == null || value.trim().length() ==0){
continue;
}
try {
parameter = parameter + keys.get(i) + "="
+ URLEncoder.encode(value, input_charset) + "&";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
parameter = parameter + "sign=" + sign + "&sign_type=" + sign_type;
return sign;
}
*多少個參數啊?超過3,4個參數,都不使用ParameterClass嗎?方便client調用嗎?
*這個方法做什么?createUrl?得到url。可事實上呢?return sign。sign是什么?是參數的加密竄。
方法中的
parameter不知道要來干嗎用?
*又看到e.printStackTrace();
SignatureHelper.java
哇,總算看到一個過得去的代碼,可以eclipse上,發現一個warning:import java.io.UnsupportedEncodingException;
有用到UnsupportedEncodingException這個嗎?
SignatureHelper_return.java
*看看這個類名,符合java類名的規范嗎?
*和SignatureHelper.java有什么區別?
SetCharacterEncodingFilter.java
哇塞,總算看到非常標準的代碼了。可是:@author Craig McClanahan,原來是copy過來的。嗚呼。
并且整個demo工程,是用myeclipse的。哎。。。
看不下去了,實在看不下去了。
我不清楚支付寶公司提供的demo程序的目的是什么?
--提供的java文件是允許打成lib包使用的?
--僅僅提供學習的?
就算是提供學習的,寫得標準些,行不?
最后,我真希望,是我自己下錯了demo程序--這個demo程序不是支付寶官方的demo。希望如此吧,阿門~
備注:
除了demo,那份接口文檔,寫得還是非常規范的。