Example #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;
    }
  }
  /**
   * 生成要请求给支付宝的参数数组
   *
   * @param sParaTemp 请求前的参数数组
   * @return 要请求的参数数组
   */
  private static Map<String, String> buildRequestPara(Map<String, String> sParaTemp) {
    // 除去数组中的空值和签名参数
    Map<String, String> sPara = AlipayCore.paraFilter(sParaTemp);
    // 生成签名结果
    String mysign = AlipayCore.buildMysign(sPara);

    // 签名结果与签名方式加入请求提交参数组中
    sPara.put("sign", mysign);
    sPara.put("sign_type", AlipayConfig.sign_type);

    return sPara;
  }
Example #3
0
 /**
  * 生成签名结果
  *
  * @param sPara 要签名的数组
  * @return 签名结果字符串
  */
 public static String buildRequestMysign(Map<String, String> sPara) {
   String prestr = AlipayCore.createLinkString(sPara); // 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
   String mysign = "";
   if (AlipayConfig.sign_type.equals("MD5")) {
     mysign = MD5.sign(prestr, AlipayConfig.key, AlipayConfig.input_charset);
   }
   return mysign;
 }
Example #4
0
 /**
  * 根据反馈回来的信息,生成签名结果
  *
  * @param Params 通知返回来的参数数组
  * @return 生成的签名结果
  */
 private static String getMysign(Map<String, String> Params) {
   Map<String, String> sParaNew = AlipayCore.paraFilter(Params); // 过滤空值、sign与sign_type参数
   String mysign = AlipayCore.buildMysign(sParaNew); // 获得签名结果
   return mysign;
 }