chaicheng0 2013-11-11
1.抱空指针错误
java.lang.NullPointerException
atjava.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:89)
atcom.alipay.sign.RSA.decrypt(RSA.java:100)
原因很诡异有时候是长度问题
我看了一下是因为执行2次decrypt原因
看支付宝提供的DEMO里面的notify_url.jsp
第44行
Map<String,String> decrypt_params = AlipayNotify.decrypt(params);
第59行
if(AlipayNotify.verifyNotify(params))
在verifyNotify里面也是调用了
if(AlipayConfig.sign_type.equals("0001")) { params = decrypt(params); }
所以我对这个进行修改只用
Stringout_trade_no=AlipayNotify.verifyNotify(params);修改这个方法让他返回订单号方便后面修改订单付款状态
2.mysign和sign不相等
注意第一点//交易安全检验码,由数字和字母组成的32位字符串
//如果签名方式设置为“MD5”时,请设置该参数
publicstaticStringkey="";
问题已解决,demo的有问题.那个AlipayCore类的createLinkStringNoSort没什么用的
Map<String, String> sParaSort = new HashMap<String, String>(); sParaSort.put("service", params.get("service")); sParaSort.put("v", params.get("v")); sParaSort.put("sec_id", params.get("sec_id")); sParaSort.put("notify_data", params.get("notify_data")); for (String key : sParaSort.keySet()) { prestr = prestr + key + "=" + sParaSort.get(key) + "&"; } prestr = prestr.substring(0,prestr.length()-1);
把for里面的自己重组装一下
prestr = prestr + "service" + "=" + params.get("service") + "&"; prestr = prestr + "v" + "=" + params.get("v") + "&"; prestr = prestr + "sec_id" + "=" + params.get("sec_id") + "&"; prestr = prestr + "notify_data" + "=" + params.get("notify_data") + "&";
3.添加支付宝安全支付功能时候,遇到以下问题:
java.security.InvalidKeyException:IOException:algidparseerror,notasequence
出现这种错误,
ItmeansyourkeyisnotinPKCS#8format.Theeasiestthingtodoistousetheopensslpkcs8-topk8<...otheroptions...>commandtoconvertthekeyonce.AlternativelyyoucanusethePEMReaderclassoftheBouncycastlelightweightAPI.
原来是openssl生成密钥后,没有转换成PKCS8格式,而直接用密钥..所以导致了;
微信支付结合微信支付的api文档进行配置。参考JSAPI支付开发者文档——微信内H5调起支付微信文档中的例子如下。"timeStamp":"1395712654", //时间戳,自1970年以来的秒数