Ejemplo n.º 1
0
  /**
   * 验证消息是否是支付宝发出的合法消息
   *
   * @param params 通知返回来的参数数组
   * @return 验证结果
   */
  public static boolean verify(Map<String, String> params) {
    String mysign = getMysign(params);
    String responseTxt = "true";
    if (params.get("notify_id") != null) {
      responseTxt = verifyResponse(params.get("notify_id"));
    }
    String sign = "";
    if (params.get("sign") != null) {
      sign = params.get("sign");
    }

    // 写日志记录(若要调试,请取消下面两行注释)
    String sWord =
        "responseTxt="
            + responseTxt
            + "\n notify_url_log:sign="
            + sign
            + "&mysign="
            + mysign
            + "\n notify回来的参数:"
            + AlipayCore.createLinkString(params);
    AlipayCore.logResult(sWord);
    System.out.println(sWord);

    // 验证
    // responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关
    // mysign与sign不等,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关
    if (mysign.equals(sign) && responseTxt.equals("true")) {
      return true;
    } else {
      return false;
    }
  }