//获取支付宝post过来反馈信息
map<string,string> params = new hashmap<string,string>();
map requestparams = request.getparametermap();
for (iterator iter = requestparams.keyset().iterator(); iter.hasnext();) {
string name = (string) iter.next();
string[] values = (string[]) requestparams.get(name);
string valuestr = "";
for (int i = 0; i < values.length; i) {
valuestr = (i == values.length - 1) ? valuestr values[i]
: valuestr values[i] ",";
}
//乱码解决,这段代码在出现乱码时使用。
//valuestr = new string(valuestr.getbytes("iso-8859-1"), "utf-8");
params.put(name, valuestr);
}
//异步验签:切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
//公钥证书模式验签,alipaypubliccertpath是支付宝公钥证书引用路径地址,需在对应应用中下载
//boolean signverified= alipaysignature.rsacertcheckv1(params, alipaypubliccertpath, charset,sign_type);
//普通公钥模式验签,切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
boolean flag = alipaysignature.rsacheckv1(params, alipaypublickey, charset,"rsa2");
/* 请根据商户自己项目逻辑处理,并返回success或者fail。*/
if(signverified) {//验证成功
//请在这里加上商户的业务逻辑程序代
//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表,如out_trade_no
// string out_trade_no = new string(request.getparameter("out_trade_no").getbytes("iso-8859-1"),"utf-8");
out.print("success");
}else {//验证失败
out.print("fail");
}