支付宝移动支付开发错误集锦

来源:互联网 发布:云播软件 编辑:程序博客网 时间:2024/06/02 18:07

最近在做支付宝移动支付开发,在调起支付时总是报各种错,先后收到错误码ALI164,ALI38173等错误编码,其实当收到这些错误时多数是因为传入的参数和签名校验不正确。在开发时要注意以下几点:

1、用于签名的参数尽量不要用字符串拼接的方式,通过Map来存储,然后调用支付宝DEMO里提供的方法 AlipayCore.paraFilter(params)来进行排序过滤,然后使用AlipayCore.createLinkString(sParaNew)方法进行拼接例如:

Map<String, String> params =new HashMap<String, String>();
params.put("partner","\""+AlipayConfig.partner+"\"");
params.put("out_trade_no","\""+superOrderCode+"\"");

……以下参数省略

Map<String, String> sParaNew = AlipayCore.paraFilter(params);

   //获取待签名字符串
String preSignStr = AlipayCore.createLinkString(sParaNew);

2、参数里的值是需要带引号,例如:

params.put("partner","\""+AlipayConfig.partner+"\"");    这里通过转义字符将引号写入。

3、参数中的所有值除了生成的sign需要做URLEncoder.encode编码,其余的值都不需做此编码,常常看见有人把里面存在的URL使用此编码处理,比如回调地址,在支付宝中这样是不可以的,但是最后生成的sign一定要做此编码。

4、发送的参数的顺序与用于签名的参数顺序必须一样。

5、sign和sign_type两个参数不用于签名计算,有好多人经常会把sign_type也用于签名计算。

6、如果上述都准确无误,请核对公钥生成的是否正确。

0 0