支付宝论坛提供的:支付宝接口程序论坛地址 | ASP | ASP.net(GBK) | ASP.net(UTF-8) | JSP(GBK) | JSP(UTF-8)
支付宝提供的接口,似乎有点问题,处理完返回的时候总是出现false,经对比发现是MD5加密后字符串不一样了1
2
3
4
5
6
7
8
9
10
11
12Map params = new HashMap();
//获得POST 过来参数设置到新的params中
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] + ",";
}
params.put(name, valueStr);
}
解决办法是做字符转换,正确代码如下
1 | Map params = new HashMap(); |
附上 service 参数类型,接口文档没有的
- create_digital_goods_trade_p 通知返回地址等即可实现实物交易
- trade_create_by_buyer 修改物流方式以及费用等即可实现实物交易
- create_donate_trade_p 可实捐赠项目
- create_direct_pay_by_user 支付宝论坛没说,自己试了,应该即时到帐
另外Payment.java似乎有2个版本,一个用于虚拟物品交易(无收货地址),另一个用于现实物品交易,源码是一样的,只是有2个变量名称不一样,致使MD5加密的时候出错,如果你提交支付的时候出现支付类型错误,可以试着检查一下