微信签约的时候参数正确但一直报错——entrustweb_sign参数结构错误

今天做微信免密支付签约的时候,一直报entrustweb_sign参数结构错误,调了一天,反复核对参数发现没问题,比对生成的sign(签名)也是一致的。

【推荐一下微信官方接口调试工具来生成签名做比对:微信公众平台支付接口调试工具】;

后来反复读文档:



文档上签名算法是这样的。签约的文档部分有一部分非常重要,如下图(注意标注部分):


回调地址是要进行encode处理,但是生成签名的时候传进去的notufy_url是原值。(我就是在这个坑里待了一天)

还有就是此处的时间戳一定是10位。

下面看代码:

/**
 * @Author : lilong
 * @Description :微信支付签约
 * @Date : 10:40 2018/5/3
 **/
public static String wxContract() throws Exception {
    //签名所需要的参数
    String appid = "wx05c*********";
    String mch_id = "14847****";
    String plan_id = "120***";
    String contract_code = "100000";
    Integer request_serial = 1000;
    String contract_display_account = "wechatPay";
    String notifyUrl =  "http://192.168.*.**:8080/mvc/callbackContract";
    //回调地址需要encode,但是生成签名的时候传进去的是源值
    String notify_url = java.net.URLEncoder.encode(notifyUrl);
    String version = "1.0";
    //时间戳是10位
    String timestamp =String.valueOf( new Date().getTime()/1000);
   // SortedMap<Object,Object> signMap = new TreeMap<Object,Object>();
    Map<String,String> signMap = new TreeMap<>();
    signMap.put("appid", appid);
    signMap.put("mch_id", mch_id);
    signMap.put("plan_id",plan_id);
    signMap.put("contract_code",contract_code);
    signMap.put("request_serial",request_serial.toString());
    signMap.put("contract_display_account",contract_display_account);
    signMap.put("notify_url",notifyUrl);
    signMap.put("version",version);
    signMap.put("timestamp",timestamp);
    System.err.println(timestamp);
    String sign = createSign(signMap);
    String url = "https://api.mch.weixin.qq.com/papay/entrustweb?appid=" + appid
            + "&contract_code=" + contract_code + "&contract_display_account="
            + contract_display_account + "&mch_id=" + mch_id + "&notify_url=" +
            notify_url + "&plan_id=" + plan_id + "&request_serial=" + request_serial
            + "&timestamp=" + timestamp + "&version=" + version + "&sign=" + sign;
    System.err.println("*************" + url + "***********");
    return url;
}

猜你喜欢

转载自blog.csdn.net/qq_19167629/article/details/80582994