java 支付宝即时到账接口 遇到的 问题解析

来源:互联网 发布:网络怎么赚钱现实点的 编辑:程序博客网 时间:2024/06/15 17:16

常见易错:

ILLEGAL_SIGN:   验证签名错误

签名规则:要传递的参数形成的字符串加上商户私钥,在签名前应为这种格式: 集合化作字符串,其中没有sign或sign_type等参数:
String text = "_input_charset=utf-8&body=testjsdzbody&notify_url=http://www.test.com/create_direct_pay_by_user-JAVA-UTF-8/notify_url.jsp&out_trade_no=9890879868657&partner=2088000000000000&payment_type=1&return_url=http://www.baidu.com&seller_id=2088000000000000&service=create_direct_pay_by_user&subject=testjsdz&total_fee=0.01";
然后,在字符串之后直接加上 私钥,注意衔接的地方什么也没有,直接加上,不能多"&"。
String finalTEXT = text + key;
类似于:_input_charset=utf-8&body=testjsdzbody&notify_url=http://www.test.com/create_direct_pay_by_user-JAVA-UTF-8/notify_url.jsp&out_trade_no=9890879868657&partner=2088000000000000&payment_type=1&return_url=http://www.baidu.com&seller_id=2088000000000000&service=create_direct_pay_by_user&subject=testjsdz&total_fee=0.01svzitn**********pslfal77xlxm0qhc
然后,进行签名加密
易错的就是:1.参数字符串中有空的值。2.私钥不正确,私钥和2088****是对应的可以在支付宝上查到。 3. 拼接签名字符串时,多加了"&"或其他字符




INVALID_PARAMETER:  参数无效
造成的原因:网上有说是 "提交的数据金额是不是三位小数 0.010,改为两位小数0.01" ,不知道是不是,我遇到的却是  参数集合 没有添加  subject参数 ,将subject参数加上就解决了
必有的几个参数:_input_charset,total_fee , subject ,service ,seller_id ,partner ,out_trade_no ,notify_url ,return_url ,payment_type(不是必须的,因为这个现目前是默认的),body(不是必要的)

其他的顺便差那个都会提示  参数无效


简单错误,简单修改,哪错改哪:

以下的 很好改,按要求修改就行
ILLEGAL_ARGUMENT:  参数不正确
ILLEGAL_SERVICE:   SERVICE参数不正确
ILLEGAL_PARTNER:   商户ID不正确
HASH_NO_PRIVILEGE:   没有权限申请该服务
HASH_NO_PUBLICKEY:  没有上传公钥
0 0