验签失败自查方案-支付宝接口常见错误系列

说明: 
  验签只需要使用到支付宝公钥 

错误原因: 
  1.支付宝公钥使用错误导致 
  2.验签方法使用错误 
  3.参数错误导致,例如乱码,带自定义参数,编码格式。 

自查流程(按照推荐流程检查) 
  第一步重点检查):支付宝公钥使用是否错误参考这个帖子自查:[url]https://openclub.alipay.com/read.php?tid=1495&fid=25[/url]
  第二步:验签方法错误(请使用下方的demo中的地址接收异步通知进行验签测试) 

    说明: 
    正常接口使用 AlipaySignature.rsaCheckV1,sign_type不参与签名 
   特殊说明:AlipaySignature.rsaCheckV2方法生活号异步通知需要使用,会保留sign_type参数参与验签。 

   异步demo分享(适用于所有支付类接口异步验签) 
    java,php,.NET验签demo下载地址:[url]https://docs.open.alipay.com/203/105910[/url] 
    注意:请大家使用手机网站demo进行验签测试即可,使用文件中的notify_url相关的文件和方法 

    自行实现验签参考:[url]https://doc.open.alipay.com/docs/doc.htm?docType=1&articleId=106120[/url] 

 第三步:异步通知返回参数检查 
    说明: 
      1.支付返回的通知不会乱码,一般java语言可能会在接收以后出现中文乱码,这个需要自己处理,demo中也给了一个方案(notify_url.jsp页面中。如果出现乱码就开启再测试): 

//获取支付宝POST过来反馈信息Map params = new HashMap();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);}

2.代码中开启debug(调试模式) 导致验签失败(这个问题可能比较少)。 

如果大家根据自查还是没有解决,欢迎在帖子下面进行追问,按照下面格式进行提问(信息不全不回复,谢谢配合) 
正确提问方式:使用环境(沙箱还是正式环境)+接口名称(中文+英文)+验签失败的交易号+返回的参数(提供&符号连接的格式) 
如果解决了大家的问题,欢迎点赞评论支持一下

上一篇:[转]jquery与updatepanel二次失效问题解决方案


下一篇:直播平台源代码,这样选择才是最佳方案