Ver código fonte

增加来源单据id

9060 4 meses atrás
pai
commit
f78424f313

+ 95 - 0
src/com/kingdee/eas/custom/esign/callback/CallBackToOSFServlet.java

@@ -0,0 +1,95 @@
+package com.kingdee.eas.custom.esign.callback;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.kingdee.eas.cp.eip.sso.web.qrcode.ResponseWriteUtil;
+import com.kingdee.eas.custom.esign.util.EsignConfig;
+import com.kingdee.shr.api.OSFWSClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * description: CallBackToOSFServlet <br>
+ * date: 19/11/2025 ÏÂÎç 4:08 <br>
+ * author: lhbj <br>
+ * version: 1.0 <br>
+ */
+
+public class CallBackToOSFServlet extends HttpServlet {
+    private static final long serialVersionUID = 1426489082732035281L;
+    private static final Logger logger = LoggerFactory.getLogger(CallBackToOSFServlet.class);
+
+    public CallBackToOSFServlet() {
+    }
+
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        this.doPost(req, resp);
+    }
+
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        try {
+
+            String TIMESTAMP = req.getHeader("X-Tsign-Open-TIMESTAMP");
+            String ALGORITHM = req.getHeader("X-Tsign-Open-SIGNATURE-ALGORITHM");
+            String appid = req.getHeader("X-Tsign-Open-App-Id");
+            String SIGNATURE = req.getHeader("X-Tsign-Open-SIGNATURE");
+
+            System.out.println("CallBackToOSFServlet");
+            logger.error("CallBackToOSFServlet  start--------------------------------------------------------------------");
+            logger.error("CallBackToOSFServlet  TIMESTAMP----------------->" + TIMESTAMP);
+            logger.error("CallBackToOSFServlet  ALGORITHM----------------->" + ALGORITHM);
+            logger.error("CallBackToOSFServlet  appid----------------->" + appid);
+            logger.error("CallBackToOSFServlet  SIGNATURE----------------->" + SIGNATURE);
+            String data = req.getParameter("data");
+            // ¶ÁÈ¡ÇëÇóÌå
+            BufferedReader reader = new BufferedReader(new InputStreamReader(req.getInputStream()));
+            StringBuilder jsonInput = new StringBuilder();
+            String jsonPart;
+            while ((jsonPart = reader.readLine()) != null) {
+                jsonInput.append(jsonPart);
+            }
+
+            logger.error("CallBackToOSFServlet  data----------------->" + data);
+            String shrAddr = EsignConfig.getInstance().get("shrAddr");
+            OSFWSClient client = new OSFWSClient();
+            Map<String, Object> map = new HashMap<String, Object>();
+            if(jsonInput.length()>0){
+                map.put("data", jsonInput.toString());
+            }else {
+                map.put("data", data);
+            }
+
+            String response = client.proceedOSF(shrAddr, "CallBackToOSF", map);
+            if (response.indexOf("success") > 0) {
+                Map<String, Object> result = new HashMap<String, Object>();
+                result.put("code", "200");
+                result.put("msg", "success");
+                result.put("requestId", null);
+                result.put("data", response);
+                ResponseWriteUtil.writeObjectData(resp, result, "JSON");
+            } else {
+                JSONObject object = JSON.parseObject(response);
+                Map<String, Object> result = new HashMap<String, Object>();
+                result.put("code", 400);
+                result.put("msg", object.get("msg"));
+                result.put("requestId", null);
+                result.put("data", response);
+                ResponseWriteUtil.writeObjectData(resp, result, "JSON");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            logger.error("CallBackToOSFServlet  end-----------------");
+        }
+    }
+}

+ 97 - 55
src/com/kingdee/eas/custom/esign/util/EsignHttpUtil.java

@@ -2,6 +2,7 @@ package com.kingdee.eas.custom.esign.util;
 
 import com.alibaba.fastjson.JSON;
 import com.google.common.collect.Maps;
+import com.kingdee.eas.custom.esign.bizEnum.EsignConfigEnum;
 import com.kingdee.eas.custom.esign.tsign.hz.comm.EsignHttpHelper;
 import com.kingdee.eas.custom.esign.tsign.hz.comm.EsignHttpResponse;
 import com.kingdee.eas.custom.esign.tsign.hz.enums.EsignRequestType;
@@ -9,10 +10,8 @@ import com.kingdee.eas.custom.esign.tsign.hz.exception.EsignException;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.client.utils.URIBuilder;
 
-import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.net.URL;
 import java.text.MessageFormat;
 import java.util.Map;
 
@@ -30,10 +29,11 @@ public class EsignHttpUtil {
      * @param jsonParm    JSON字符串参数
      * @param requestType 请求类型 POST/GET
      * @param debug       输出日志
+     * @param sourceId    来源id
      * @return
      * @throws EsignException
      */
-    public static EsignHttpResponse doCommHttp(String url, String jsonParm, EsignRequestType requestType, Boolean debug) throws EsignException {
+    public static EsignHttpResponse doCommHttp(String url, String jsonParm, EsignRequestType requestType, Boolean debug,String sourceId) throws EsignException {
         //
         //生成签名鉴权方式的的header
         Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(EsignConfig.getInstance().getEsignAppId(),
@@ -48,17 +48,18 @@ public class EsignHttpUtil {
      * @param url      请求地址
      * @param jsonParm JSON字符串参数
      * @param debug    输出日志
+     * @param sourceId    来源id
      * @return
      * @throws EsignException
      */
-    public static EsignHttpResponse POST(String url, String jsonParm, Boolean debug) throws EsignException {
+    public static EsignHttpResponse POST(String url, String jsonParm, Boolean debug,String sourceId) throws EsignException {
         //请求方法
         EsignRequestType requestType = EsignRequestType.POST;
-        return doCommHttp(url, jsonParm, requestType, debug);
+        return doCommHttp(url, jsonParm, requestType, debug, sourceId);
     }
 
-    public static EsignHttpResponse POST(String url, String jsonParm) throws EsignException {
-        return POST(url, jsonParm, false);
+    public static EsignHttpResponse POST(String url, String jsonParm,String sourceId) throws EsignException {
+        return POST(url, jsonParm, false, sourceId);
     }
 
     /**
@@ -67,40 +68,47 @@ public class EsignHttpUtil {
      * @param url      请求地址
      * @param jsonParm JSON字符串参数
      * @param debug    输出日志
+     * @param sourceId    来源id
      * @return
      * @throws EsignException
      */
-    public static EsignHttpResponse GET(String url, String jsonParm, Boolean debug) throws EsignException {
+    public static EsignHttpResponse GET(String url, String jsonParm, Boolean debug,String sourceId) throws EsignException {
         //请求方法
         EsignRequestType requestType = EsignRequestType.GET;
-        return doCommHttp(url, jsonParm, requestType, debug);
+        return doCommHttp(url, jsonParm, requestType, debug, sourceId);
     }
 
-    public static EsignHttpResponse GET(String url, String jsonParm) throws EsignException {
-        return GET(url, jsonParm, false);
+    public static EsignHttpResponse GET(String url, String jsonParm,String sourceId) throws EsignException {
+        return GET(url, jsonParm, false, sourceId);
     }
-    public static EsignHttpResponse DELETE(String url, String jsonParm) throws EsignException {
-        return DELETE(url, jsonParm, false);
+    public static EsignHttpResponse DELETE(String url, String jsonParm,String sourceId) throws EsignException {
+        return DELETE(url, jsonParm, false, sourceId);
     }
-    public static EsignHttpResponse DELETE(String url, String jsonParm, Boolean debug) throws EsignException {
+    public static EsignHttpResponse DELETE(String url, String jsonParm, Boolean debug,String sourceId) throws EsignException {
         //请求方法
         EsignRequestType requestType = EsignRequestType.DELETE;
-        return doCommHttp(url, jsonParm, requestType, debug);
+        return doCommHttp(url, jsonParm, requestType, debug, sourceId);
+    }
+
+    public static EsignHttpResponse getDocTemplatesDetailById(String id) throws EsignException {
+
+        return getDocTemplatesDetailById(id, null);
     }
     /**
      * 查询合同模板中控件详情
      * 参考文档:https://open.esign.cn/doc/opendoc/pdf-sign3/aoq509
      * 接口地址:https://{host}/v3/doc-templates/{docTemplateId}
      * 请求方法:GET
-     *
+     * @param id    模板id
+     * @param sourceId    来源id
      * @return
      * @throws EsignException
      */
-    public static EsignHttpResponse getDocTemplatesDetailById(String id) throws EsignException {
-        String apiaddr = EsignConfig.getInstance().get("docTemplatesDetailById");
+    public static EsignHttpResponse getDocTemplatesDetailById(String id,String sourceId) throws EsignException {
+        String apiaddr = EsignConfig.getInstance().get(EsignConfigEnum.DOCTEMPLATESDETAILBYID_VALUE);
         apiaddr = MessageFormat.format(apiaddr, id);
         String jsonParm = null;
-        return GET(apiaddr, jsonParm);
+        return GET(apiaddr, jsonParm, sourceId);
     }
 
     /**
@@ -108,16 +116,20 @@ public class EsignHttpUtil {
      * 参考文档:https://open.esign.cn/doc/opendoc/pdf-sign3/mv8a3i
      * 接口地址:https://{host}/v3/files/create-by-doc-template
      * 请求方法:POST
+     * 注意事项:componentId与componentKey两个字段不能同时传值,只能一个有值
+     * @param json
+     * @param sourceId    来源id
      *
-     * @param json 注意事项:componentId与componentKey两个字段不能同时传值,只能一个有值
      * @return
      * @throws EsignException
      */
-    public static EsignHttpResponse createByDocTemplate(String json) throws EsignException {
+    public static EsignHttpResponse createByDocTemplate(String json,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("createByDocTemplate");
-        return POST(apiaddr, json);
+        return POST(apiaddr, json, sourceId);
     }
 
+
+
     /**
      * 查询机构认证信息
      * 参考文档:https://open.esign.cn/doc/opendoc/auth3/xxz4tc
@@ -130,16 +142,17 @@ public class EsignHttpUtil {
      * @param orgId
      * @param orgName
      * @param orgIDCardNum
-     * @param psnIDCardType 组织机构证件类型(传orgIDCardNum时,该参数为必传)
+     * @param orgIDCardType 组织机构证件类型(传orgIDCardNum时,该参数为必传)
      *                      CRED_ORG_USCC - 统一社会信用代码     *                      CRED_ORG_REGCODE - 工商注册号
+     * @param sourceId    来源id
      * @return
      * @throws EsignException
      */
-    public static EsignHttpResponse getOrgIdentity_info(String orgId, String orgName,String orgIDCardNum,String psnIDCardType) throws EsignException, URISyntaxException {
+    public static EsignHttpResponse getOrgIdentity_info(String orgId, String orgName,String orgIDCardNum,String orgIDCardType,String sourceId) throws EsignException, URISyntaxException {
         String apiaddr = EsignConfig.getInstance().get("organizations.identity-info");
         if (StringUtils.isBlank(orgId)&&StringUtils.isBlank(orgName)) {
-            if (StringUtils.isNotBlank(orgIDCardNum)&&StringUtils.isBlank(psnIDCardType)) {
-                throw new EsignException("传orgIDCardNum时,psnIDCardType参数为必传");
+            if (StringUtils.isNotBlank(orgIDCardNum)&&StringUtils.isBlank(orgIDCardType)) {
+                throw new EsignException("传orgIDCardNum时,orgIDCardType参数为必传");
             }else {
                 throw new EsignException("orgId与orgName与orgIDCardNum不能都为空");
             }
@@ -151,13 +164,22 @@ public class EsignHttpUtil {
         if (StringUtils.isNotBlank(orgName)) {
             uriBuilder.addParameter("orgName", orgName);
         }
-        if (StringUtils.isNotBlank(orgIDCardNum)&&StringUtils.isNotBlank(psnIDCardType)) {
+        if (StringUtils.isNotBlank(orgIDCardNum)&&StringUtils.isNotBlank(orgIDCardType)) {
             uriBuilder.addParameter("orgIDCardNum", orgIDCardNum);
-            uriBuilder.addParameter("psnIDCardType", psnIDCardType);
+            uriBuilder.addParameter("orgIDCardType", orgIDCardType);
         }
         URI uri = uriBuilder.build(); // 自动编码
         apiaddr = uri.toString();
-        return GET(apiaddr, null);
+        return GET(apiaddr, null, sourceId);
+    }
+    public static EsignHttpResponse getOrgIdentity_infoByOrgId(String orgId) throws EsignException, URISyntaxException {
+        return getOrgIdentity_info(orgId, null, null, null, null);
+    }
+    public static EsignHttpResponse getOrgIdentity_infoByOrgName(String orgName) throws EsignException, URISyntaxException {
+        return getOrgIdentity_info(null, orgName, null, null, null);
+    }
+    public static EsignHttpResponse getOrgIdentity_infoByOrgIDCardNum(String orgIDCardNum,String orgIDCardType) throws EsignException, URISyntaxException {
+        return getOrgIdentity_info(null, null, orgIDCardNum, orgIDCardType, null);
     }
     /**
      * 查询个人认证信息
@@ -176,11 +198,11 @@ public class EsignHttpUtil {
      *                CRED_PSN_CH_MACAO - 澳门来往大陆通行证
      *                CRED_PSN_CH_TWCARD - 台湾来往大陆通行证
      *                CRED_PSN_PASSPORT - 护照
-
+     * @param sourceId    来源id
      * @return
      * @throws EsignException
      */
-    public static EsignHttpResponse getPersonIdentity_info(String psnId, String psnAccount,String psnIDCardNum,String psnIDCardType) throws EsignException, URISyntaxException {
+    public static EsignHttpResponse getPersonIdentity_info(String psnId, String psnAccount,String psnIDCardNum,String psnIDCardType,String sourceId) throws EsignException, URISyntaxException {
         String apiaddr = EsignConfig.getInstance().get("persons.identity-info");
         if (StringUtils.isBlank(psnId)&&StringUtils.isBlank(psnAccount)) {
             if (StringUtils.isNotBlank(psnIDCardNum)&&StringUtils.isBlank(psnIDCardType)) {
@@ -197,14 +219,22 @@ public class EsignHttpUtil {
             uriBuilder.addParameter("psnAccount", psnAccount);
         }
         if (StringUtils.isNotBlank(psnIDCardNum)&&StringUtils.isNotBlank(psnIDCardType)) {
-            uriBuilder.addParameter("orgIDCardNum", psnIDCardNum);
+            uriBuilder.addParameter("psnIDCardNum", psnIDCardNum);
             uriBuilder.addParameter("psnIDCardType", psnIDCardType);
         }
         URI uri = uriBuilder.build(); // 自动编码
         apiaddr = uri.toString();
-        return GET(apiaddr, null);
+        return GET(apiaddr, null, sourceId);
+    }
+    public static EsignHttpResponse getPersonIdentity_infoByPsnId(String psnId) throws EsignException, URISyntaxException {
+        return getPersonIdentity_info(psnId, null, null, null, null);
+    }
+    public static EsignHttpResponse getPersonIdentity_infoByPsnAccount(String psnAccount) throws EsignException, URISyntaxException {
+        return getPersonIdentity_info(null, psnAccount, null, null, null);
+    }
+    public static EsignHttpResponse getPersonIdentity_infoByOrgIDCardNum(String psnIDCardNum,String psnIDCardType) throws EsignException, URISyntaxException {
+        return getPersonIdentity_info(null, null, psnIDCardNum, psnIDCardType, null);
     }
-
     /**
      * 查询签署流程详情
      * 参考文档:https://open.esign.cn/doc/opendoc/pdf-sign3/xxk4q6
@@ -212,14 +242,17 @@ public class EsignHttpUtil {
      * 请求方法:GET
      * 注意事项:
      * @param signFlowId 签署流程ID
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse getSign_fields(String signFlowId) throws EsignException {
+    public static EsignHttpResponse getSign_fields(String signFlowId,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("detail.sign_fields");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
-        return GET(apiaddr, null);
+        return GET(apiaddr, null, sourceId);
+    }
+    public static EsignHttpResponse getSign_fields(String signFlowId) throws EsignException {
+        return getSign_fields(signFlowId,null);
     }
-
     /**
      * 追加签署区
      * 参考文档:https://open.esign.cn/doc/opendoc/pdf-sign3/ohzup7
@@ -230,12 +263,13 @@ public class EsignHttpUtil {
      * 【基于文件发起签署】时设置了自动完结(autoFinish为 true)的流程不支持再添加签署区。
      * @param signFlowId 签署流程ID
      * @param json 添加签署方信息
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse addSign_fields(String signFlowId,String json) throws EsignException {
+    public static EsignHttpResponse addSign_fields(String signFlowId,String json,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("add.sign_fields");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
-        return POST(apiaddr, json);
+        return POST(apiaddr, json, sourceId);
     }
 
     /**
@@ -248,9 +282,10 @@ public class EsignHttpUtil {
      * 【基于文件发起签署】时设置了自动完结(autoFinish为 true)的流程不支持再添加签署区。
      * @param signFlowId 签署流程ID
      * @param signFieldIds 添加签署方信息
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse delSign_fields(String signFlowId,String signFieldIds) throws EsignException, URISyntaxException {
+    public static EsignHttpResponse delSign_fields(String signFlowId,String signFieldIds,String sourceId) throws EsignException, URISyntaxException {
         String apiaddr = EsignConfig.getInstance().get("del.sign_fields");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
         URIBuilder uriBuilder = new URIBuilder(apiaddr);
@@ -259,7 +294,7 @@ public class EsignHttpUtil {
         }
         URI uri = uriBuilder.build(); // 自动编码
         apiaddr = uri.toString();
-        return DELETE(apiaddr, null);
+        return DELETE(apiaddr, null, sourceId);
     }
 
     /**
@@ -275,12 +310,13 @@ public class EsignHttpUtil {
      *  添加的抄送方不可与流程中已有的抄送方重复。。
      * @param signFlowId 签署流程ID
      * @param json 添加抄送方信息
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse addCopiers(String signFlowId,String json) throws EsignException {
+    public static EsignHttpResponse addCopiers(String signFlowId,String json,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("add.copiers");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
-        return POST(apiaddr, json);
+        return POST(apiaddr, json, sourceId);
     }
 
     /**
@@ -292,12 +328,13 @@ public class EsignHttpUtil {
      * 注意事项:流程若已开启,将不支持再删除抄送方信息。
      * @param signFlowId 签署流程ID
      * @param json 删除抄送方信息
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse delCopiers(String signFlowId,String json) throws EsignException {
+    public static EsignHttpResponse delCopiers(String signFlowId,String json,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("del.copiers");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
-        return POST(apiaddr, json);
+        return POST(apiaddr, json, sourceId);
     }
     /**
      * 基于文件发起签署
@@ -320,11 +357,12 @@ public class EsignHttpUtil {
      *  false - 非自动开启(发起“草稿”状态的签署流程,需调用【开启签署流程】接口后流程进入“签署中”状态)
      *  补充说明: 自动开启的流程不允许再追加待签署文件,点击这里了解更多流程状态说明。
      * @param json 签署信息
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse create_by_file(String json) throws EsignException {
+    public static EsignHttpResponse create_by_file(String json,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("create_by_file");
-        return POST(apiaddr, json);
+        return POST(apiaddr, json, sourceId);
     }
 
     /**
@@ -335,12 +373,13 @@ public class EsignHttpUtil {
      * 请求方法:POST
      * 注意事项:流程若已开启,将不支持再删除抄送方信息。
      * @param signFlowId 签署流程ID
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse start_by_file(String signFlowId) throws EsignException {
+    public static EsignHttpResponse start_by_file(String signFlowId,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("start_by_file");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
-        return POST(apiaddr, null);
+        return POST(apiaddr, null, sourceId);
     }
     /**
      * 撤销签署流程
@@ -351,15 +390,16 @@ public class EsignHttpUtil {
      * 注意事项:撤销签署中的流程,撤销后签署流程将终止,变为已撤销状态。
      * @param signFlowId 签署流程ID
      * @param revokeReason 撤销原因 撤销原因最多50字
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse revoke_by_file(String signFlowId,String revokeReason) throws EsignException {
+    public static EsignHttpResponse revoke_by_file(String signFlowId,String revokeReason,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("revoke_by_file");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
         Map<String,String> jsonMap = Maps.newHashMap();
         jsonMap.put("revokeReason",(StringUtils.isNotBlank(revokeReason)?revokeReason:""));
         String json = JSON.toJSONString(jsonMap);
-        return POST(apiaddr, json);
+        return POST(apiaddr, json, sourceId);
     }
 
     /**
@@ -372,12 +412,13 @@ public class EsignHttpUtil {
      * 与上一次催签,请至少间隔十分钟再发起下一次催签提醒。
      * @param signFlowId 签署流程ID
      * @param json 催签的签署人信息
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse urge_by_file(String signFlowId,String json) throws EsignException {
+    public static EsignHttpResponse urge_by_file(String signFlowId,String json,String sourceId) throws EsignException {
         String apiaddr = EsignConfig.getInstance().get("urge_by_file");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
-        return POST(apiaddr, json);
+        return POST(apiaddr, json, sourceId);
     }
 
     /**
@@ -392,9 +433,10 @@ public class EsignHttpUtil {
      * 可传入:1-3600
      * 补充说明:
      * 为链接设置有效期是一项安全措施,旨在降低因无关人员访问而导致的信息泄露风险。
+     * @param sourceId    来源id
      * @return
      */
-    public static EsignHttpResponse getFile_download_url(String signFlowId,Integer urlAvailableDate) throws EsignException, URISyntaxException {
+    public static EsignHttpResponse getFile_download_url(String signFlowId,Integer urlAvailableDate,String sourceId) throws EsignException, URISyntaxException {
         String apiaddr = EsignConfig.getInstance().get("file_download_url");
         apiaddr = MessageFormat.format(apiaddr, signFlowId);
         if (null!=urlAvailableDate&&urlAvailableDate>0&&urlAvailableDate<=3600) {
@@ -403,7 +445,7 @@ public class EsignHttpUtil {
             URI uri = uriBuilder.build(); // 自动编码
             apiaddr = uri.toString();
         }
-        return GET(apiaddr, null);
+        return GET(apiaddr, null, sourceId);
     }