| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- package com.kingdee.eas.custom.esign.util;
- 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;
- 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.util.Map;
- /**
- * description: EsignHttpUtil <br>
- * date: 17/11/2025 下午 4:26 <br>
- * author: lhbj <br>
- * version: 1.0 <br>
- */
- public class EsignHttpUtil {
- /**
- * 基础请求接口
- *
- * @param url 请求地址
- * @param jsonParm JSON字符串参数
- * @param requestType 请求类型 POST/GET
- * @param debug 输出日志
- * @return
- * @throws EsignException
- */
- public static EsignHttpResponse doCommHttp(String url, String jsonParm, EsignRequestType requestType, Boolean debug) throws EsignException {
- //
- //生成签名鉴权方式的的header
- Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(EsignConfig.getInstance().getEsignAppId(),
- EsignConfig.getInstance().getEsignAppSecret(), jsonParm, requestType.name(), url, debug);
- //发起接口请求
- return EsignHttpHelper.doCommHttp(EsignConfig.getInstance().getEsignHost(), url, requestType, jsonParm, header, debug);
- }
- /**
- * POST请求接口
- *
- * @param url 请求地址
- * @param jsonParm JSON字符串参数
- * @param debug 输出日志
- * @return
- * @throws EsignException
- */
- public static EsignHttpResponse POST(String url, String jsonParm, Boolean debug) throws EsignException {
- //请求方法
- EsignRequestType requestType = EsignRequestType.POST;
- return doCommHttp(url, jsonParm, requestType, debug);
- }
- public static EsignHttpResponse POST(String url, String jsonParm) throws EsignException {
- return POST(url, jsonParm, false);
- }
- /**
- * GET请求接口
- *
- * @param url 请求地址
- * @param jsonParm JSON字符串参数
- * @param debug 输出日志
- * @return
- * @throws EsignException
- */
- public static EsignHttpResponse GET(String url, String jsonParm, Boolean debug) throws EsignException {
- //请求方法
- EsignRequestType requestType = EsignRequestType.GET;
- return doCommHttp(url, jsonParm, requestType, debug);
- }
- public static EsignHttpResponse GET(String url, String jsonParm) throws EsignException {
- return GET(url, jsonParm, false);
- }
- /**
- * 查询合同模板中控件详情
- * 参考文档:https://open.esign.cn/doc/opendoc/pdf-sign3/aoq509
- * 接口地址:https://{host}/v3/doc-templates/{docTemplateId}
- * 请求方法:GET
- *
- * @return
- * @throws EsignException
- */
- public static EsignHttpResponse getDocTemplatesDetailById(String id) throws EsignException {
- String apiaddr = EsignConfig.getInstance().get("docTemplatesDetailById") + id;
- String jsonParm = null;
- return GET(apiaddr, jsonParm);
- }
- /**
- * 填写模板生成文件
- * 参考文档:https://open.esign.cn/doc/opendoc/pdf-sign3/mv8a3i
- * 接口地址:https://{host}/v3/files/create-by-doc-template
- * 请求方法:POST
- *
- * @param json 注意事项:componentId与componentKey两个字段不能同时传值,只能一个有值
- * @return
- * @throws EsignException
- */
- public static EsignHttpResponse createByDocTemplate(String json) throws EsignException {
- String apiaddr = EsignConfig.getInstance().get("createByDocTemplate");
- return POST(apiaddr, json);
- }
- /**
- * 查询机构认证信息
- * 参考文档:https://open.esign.cn/doc/opendoc/auth3/xxz4tc
- * 接口地址:https://{host}/v3/organizations/identity-info
- * 请求方法:GET
- * 注意事项:
- * 入参中orgId、orgName和orgIDCardNum三个参数只选择一个传入即可查询机构认证信息。
- * 查询优先级为 orgId > orgName > orgIDCardNum。
- *
- * @param orgId
- * @param orgName
- * @param orgIDCardNum
- * @param psnIDCardType 组织机构证件类型(传orgIDCardNum时,该参数为必传)
- * CRED_ORG_USCC - 统一社会信用代码
- * CRED_ORG_REGCODE - 工商注册号
- * @return
- * @throws EsignException
- */
- public static EsignHttpResponse getOrgIdentity_info(String orgId, String orgName,String orgIDCardNum,String psnIDCardType) 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参数为必传");
- }else {
- throw new EsignException("orgId与orgName与orgIDCardNum不能都为空");
- }
- }
- URIBuilder uriBuilder = new URIBuilder(apiaddr);
- if (StringUtils.isNotBlank(orgId)) {
- uriBuilder.addParameter("orgId", orgId);
- }
- if (StringUtils.isNotBlank(orgName)) {
- uriBuilder.addParameter("orgName", orgName);
- }
- if (StringUtils.isNotBlank(orgIDCardNum)&&StringUtils.isNotBlank(psnIDCardType)) {
- uriBuilder.addParameter("orgIDCardNum", orgIDCardNum);
- uriBuilder.addParameter("psnIDCardType", psnIDCardType);
- }
- URI uri = uriBuilder.build(); // 自动编码
- apiaddr = uri.toString();
- return GET(apiaddr, null);
- }
- /**
- * 查询个人认证信息
- * 参考文档:https://open.esign.cn/doc/opendoc/auth3/xxz4tc
- * 接口地址:https://{host}/v3/persons/identity-info
- * 请求方法:GET
- * 注意事项:
- * 入参中psnId、psnAccount和psnIDCardNum三个参数只选择一个传入即可查询个人的认证信息。
- * 查询优先级为 psnId > psnAccount > psnIDCardNum
- * @param psnId
- * @param psnAccount
- * @param psnIDCardNum
- * @param psnIDCardType 个人证件号类型 (传psnIDCardNum时,证件类型为必传项)
- * CRED_PSN_CH_IDCARD - 中国大陆居民身份证
- * CRED_PSN_CH_HONGKONG - 香港来往大陆通行证
- * CRED_PSN_CH_MACAO - 澳门来往大陆通行证
- * CRED_PSN_CH_TWCARD - 台湾来往大陆通行证
- * CRED_PSN_PASSPORT - 护照
- * @return
- * @throws EsignException
- */
- public static EsignHttpResponse getPersonIdentity_info(String psnId, String psnAccount,String psnIDCardNum,String psnIDCardType) 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)) {
- throw new EsignException("传orgIDCardNum时,psnIDCardType参数为必传");
- }else {
- throw new EsignException("orgId与orgName与orgIDCardNum不能都为空");
- }
- }
- URIBuilder uriBuilder = new URIBuilder(apiaddr);
- if (StringUtils.isNotBlank(psnId)) {
- uriBuilder.addParameter("psnId", psnId);
- }
- if (StringUtils.isNotBlank(psnAccount)) {
- uriBuilder.addParameter("psnAccount", psnAccount);
- }
- if (StringUtils.isNotBlank(psnIDCardNum)&&StringUtils.isNotBlank(psnIDCardType)) {
- uriBuilder.addParameter("orgIDCardNum", psnIDCardNum);
- uriBuilder.addParameter("psnIDCardType", psnIDCardType);
- }
- URI uri = uriBuilder.build(); // 自动编码
- apiaddr = uri.toString();
- return GET(apiaddr, null);
- }
- }
|