调解系统后端服务

SignAward.java 51KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085
  1. package com.ruoyi.wisdomarbitrate.utils;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.google.gson.Gson;
  5. import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
  6. import com.ruoyi.common.enums.EsignRequestType;
  7. import com.ruoyi.common.exception.EsignDemoException;
  8. import com.ruoyi.common.utils.EsignApplicaConfig;
  9. import com.ruoyi.common.utils.EsignHttpHelper;
  10. import com.ruoyi.common.utils.SealUtil;
  11. import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify;
  12. import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord;
  13. import com.ruoyi.wisdomarbitrate.domain.vo.base.StringIdsReq;
  14. import org.springframework.beans.factory.annotation.Value;
  15. import java.util.List;
  16. import java.util.Map;
  17. public class SignAward {
  18. private static String eSignHost = EsignApplicaConfig.EsignHost;
  19. private static String eSignAppId = EsignApplicaConfig.EsignAppId;
  20. private static String eSignAppSecret = EsignApplicaConfig.EsignAppSecret;
  21. @Value("${signSealCallbackConfig.url}")
  22. private static String signSealCallbackUrl;
  23. public static void main(String[] args) throws EsignDemoException {
  24. Gson gson = new Gson();
  25. /* 发起签署*/
  26. // EsignHttpResponse createByFile = createByFileMediation(sealSignRecord,sealIdList);
  27. // JsonObject createByFileJsonObject = gson.fromJson(createByFile.getBody(), JsonObject.class);
  28. // JsonObject createByFileData = createByFileJsonObject.getAsJsonObject("data");
  29. // String signFlowId = createByFileData.get("signFlowId").getAsString();
  30. // System.out.println("流程id:"+signFlowId);
  31. /* 获取文件签名印章位置*/
  32. // EsignHttpResponse positions = getPositionsMediation(sealSignRecord);
  33. // JsonObject positionsJsonObject = gson.fromJson(positions.getBody(), JsonObject.class);
  34. // JsonObject positionsData = positionsJsonObject.getAsJsonObject("data");
  35. // JsonArray keywordPositions = positionsData.get("keywordPositions").getAsJsonArray();
  36. // System.out.println("获取文件签名印章位置:" +keywordPositions.toString());
  37. // String signFlowId = "c9955453716344f9971d308abdc13464";
  38. //获取合同文件签名链接
  39. // EsignHttpResponse signUrl = signUrlMediation(sealSignRecord);
  40. // JsonObject signUrlJsonObject = gson.fromJson(signUrl.getBody(), JsonObject.class);
  41. // JsonObject signUrlData = signUrlJsonObject.getAsJsonObject("data");
  42. // String shortUrl = signUrlData.get("shortUrl").getAsString();
  43. // String url = signUrlData.get("url").getAsString();
  44. // System.out.println("签署短链接:" +shortUrl);
  45. // System.out.println("签署长链接:"+url);
  46. //获取合同文件用印链接
  47. // EsignHttpResponse usesealUrl = usesealUrl(sealSignRecord);
  48. // JsonObject usesealUrlJsonObject = gson.fromJson(usesealUrl.getBody(), JsonObject.class);
  49. // JsonObject usesealUrlData = usesealUrlJsonObject.getAsJsonObject("data");
  50. // String shortusesealUrl = usesealUrlData.get("shortUrl").getAsString();
  51. // String sealUrl = usesealUrlData.get("url").getAsString();
  52. // System.out.println("签署长链接:" +shortusesealUrl);
  53. // System.out.println("签署短链接:"+sealUrl);
  54. //查询机构认证信息
  55. // DeptIdentify deptIdentify = new DeptIdentify();
  56. // deptIdentify.setDeptName("西安云美电子科技有限公司");
  57. // EsignHttpResponse identifyInfo = getDeptIdentifyInfo(deptIdentify);
  58. // JsonObject identifyInfoJsonObject = gson.fromJson(identifyInfo.getBody(), JsonObject.class);
  59. // JsonObject identifyInfoData = identifyInfoJsonObject.getAsJsonObject("data");
  60. // int realnameStatus = identifyInfoData.get("realnameStatus").getAsInt();
  61. // String orgId = identifyInfoData.get("orgId").getAsString();
  62. // System.out.println("机构认证状态:" +realnameStatus);
  63. // System.out.println("机构id:" +orgId);
  64. // EsignHttpResponse identifyInfo = deptIdentifySealList(orgId);
  65. // JsonObject identifyInfoJsonObject = gson.fromJson(identifyInfo.getBody(), JsonObject.class);
  66. // JsonObject identifyInfoData = identifyInfoJsonObject.getAsJsonObject("data");
  67. // JsonArray sealArray = identifyInfoData.get("seals").getAsJsonArray();
  68. // String sealNames = "";
  69. // if(sealArray.size()>0){
  70. // for (int i = 0; i < sealArray.size(); i++) {
  71. // JsonObject sealObject = (JsonObject)sealArray.get(i);
  72. // String sealName = sealObject.get("sealName").toString();
  73. // String sealNamenew = sealName.substring(1,sealName.length()-1);
  74. // sealNames += sealNamenew +",";
  75. // }
  76. // }
  77. // System.out.println("机构印章名称:" +sealNames.substring(0,sealNames.length()-1));
  78. //查询签署流程详情
  79. // EsignHttpResponse signFlowDetail = signFlowDetail(sealSignRecord);
  80. // JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(),JsonObject.class);
  81. // JsonObject flowDetailData = signFlowDetailJsonObject.getAsJsonObject("data");
  82. // JsonArray signersArray = flowDetailData.get("signers").getAsJsonArray();
  83. // for (int i = 0; i < signersArray.size(); i++) {
  84. // JsonObject signerObject = (JsonObject)signersArray.get(i);
  85. // Integer psnsignStatus ;
  86. // Integer orgsignStatus ;
  87. // if(!(signerObject.get("psnSigner").toString()).equals("null")){
  88. // JsonObject psnSignerData = signerObject.getAsJsonObject("psnSigner");
  89. // if(psnSignerData!=null){
  90. // psnsignStatus = signerObject.get("signStatus").getAsInt();
  91. // sealSignRecord.setPsnsignStatus(psnsignStatus);
  92. // }
  93. // }
  94. // if(!(signerObject.get("orgSigner").toString()).equals("null")){
  95. // JsonObject orgSignerData = signerObject.getAsJsonObject("orgSigner");
  96. // if(orgSignerData!=null){
  97. // orgsignStatus = signerObject.get("signStatus").getAsInt();
  98. // sealSignRecord.setOrgsignStatus(orgsignStatus);
  99. // }
  100. //
  101. // }
  102. // }
  103. // System.out.println(signFlowDetailJsonObject);
  104. // DeptIdentify deptIdentify = new DeptIdentify();
  105. // deptIdentify.setAuthFlowId("OF-2b5883bf4508000c");
  106. // EsignHttpResponse deptIdentifyInfo = getDeptIdentifyInfo(deptIdentify);
  107. // System.out.println(deptIdentifyInfo);
  108. }
  109. /**
  110. * 查询签署流程详情
  111. *
  112. * @return
  113. */
  114. public static EsignHttpResponse signFlowDetail(SealSignRecord sealSignRecord) throws EsignDemoException {
  115. String signFlowId = sealSignRecord.getSignFlowid();
  116. String apiaddr = "/v3/sign-flow/" + signFlowId + "/detail";
  117. String jsonParm = null;
  118. //请求方法
  119. EsignRequestType requestType = EsignRequestType.GET;
  120. //生成签名鉴权方式的的header
  121. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  122. //发起接口请求
  123. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  124. }
  125. /**
  126. * 发起签署
  127. *
  128. * @return
  129. * @throws EsignDemoException
  130. */
  131. public static EsignHttpResponse createByFile(SealSignRecord sealSignRecord ,List<String> sealIdList) throws EsignDemoException {
  132. String apiaddr = "/v3/sign-flow/create-by-file";
  133. String fileId = sealSignRecord.getFileid();
  134. String fileName = sealSignRecord.getFilename();
  135. String psnAccount = sealSignRecord.getPensonAccount();
  136. String psnName = sealSignRecord.getPensonName();
  137. String orgName = sealSignRecord.getOrgnizeName();
  138. String orgNamePsnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
  139. String orgNamepsnName = sealSignRecord.getOrgnizeNamepsnName();
  140. String positionPagepsn = sealSignRecord.getPositionPagepsn();
  141. double positionXpsn = sealSignRecord.getPositionXpsn();
  142. double positionYpsn = sealSignRecord.getPositionYpsn();
  143. String positionPageorg = sealSignRecord.getPositionPageorg();
  144. double positionXorg = sealSignRecord.getPositionXorg();
  145. double positionYorg = sealSignRecord.getPositionYorg();
  146. String availableSealId = "209af82b-5f87-4e0a-b0d8-cc4923b6e652";
  147. String jsonParm = "{\n" +
  148. " \"docs\": [\n" +
  149. " {\n" +
  150. " \"fileId\": \"" + fileId + "\",\n" +
  151. " \"fileName\": \"" + fileName + "\"\n" +
  152. " }\n" +
  153. " ],\n" +
  154. " \"signFlowConfig\": {\n" +
  155. " \"signFlowTitle\": \"测试合同\",\n" +
  156. " \"autoStart\": true,\n" +
  157. " \"authConfig\": {\n" +
  158. " \"willingnessAuthModes\": [\n" +
  159. " \"CODE_SMS\"\n" +
  160. " ],\n" +
  161. " \"psnAvailableAuthModes\": [\n" +
  162. " \"PSN_MOBILE3\"\n" +
  163. " ],\n" +
  164. " \"orgAvailableAuthModes\": [\n" +
  165. " \"ORG_LEGALREP\"\n" +
  166. " ]\n" +
  167. " },\n" +
  168. " \"signConfig\": {\n" +
  169. " \"availableSignClientTypes\": \"1\"\n" +
  170. " },\n" +
  171. " \"autoFinish\": true\n" +
  172. " },\n" +
  173. " \"signers\": [\n" +
  174. " {\n" +
  175. " \"psnSignerInfo\": {\n" +
  176. " \"psnAccount\": \"" + psnAccount + "\",\n" +
  177. " \"psnInfo\": {\n" +
  178. " \"psnName\": \"" + psnName + "\"\n" +
  179. " }\n" +
  180. " },\n" +
  181. " \"signFields\": [\n" +
  182. " {\n" +
  183. " \"fileId\": \"" + fileId + "\",\n" +
  184. " \"normalSignFieldConfig\": {\n" +
  185. " \"autoSign\": false,\n" +
  186. " \"freeMode\": false,\n" +
  187. " \"movableSignField\": false,\n" +
  188. " \"signFieldPosition\": {\n" +
  189. " \"positionPage\": \"" + positionPagepsn + "\",\n" +
  190. " \"positionX\": " + positionXpsn + ",\n" +
  191. " \"positionY\": " + positionYpsn + "\n" +
  192. " },\n" +
  193. " \"signFieldStyle\": 1\n" +
  194. " },\n" +
  195. " \"signFieldType\": 0\n" +
  196. " }\n" +
  197. " ],\n" +
  198. " \"signerType\": 0\n" +
  199. " },\n" +
  200. " {\n" +
  201. " \"orgSignerInfo\": {\n" +
  202. " \"orgName\": \"" + orgName + "\",\n" +
  203. " \"transactorInfo\": {\n" +
  204. " \"psnAccount\": \"" + orgNamePsnAccount + "\",\n" +
  205. " \"psnInfo\": {\n" +
  206. " \"psnName\": \"" + orgNamepsnName + "\"\n" +
  207. " }\n" +
  208. " }\n" +
  209. " },\n" +
  210. " \"signFields\": [\n" +
  211. " {\n" +
  212. " \"fileId\": \"" + fileId + "\",\n" +
  213. " \"normalSignFieldConfig\": {\n" +
  214. " \"autoSign\": false,\n" +
  215. " \"freeMode\": false,\n" +
  216. /* " \"availableSealIds\": [\n" +
  217. " \"" + availableSealId + "\"\n" +
  218. " ],\n" +*/
  219. // " \"availableSealIds\": " + new Gson().toJson(sealIdList) + ",\n" +
  220. " \"signFieldPosition\": {\n" +
  221. " \"positionPage\": \"" + positionPageorg + "\",\n" +
  222. " \"positionX\": " + positionXorg + ",\n" +
  223. " \"positionY\": " + positionYorg + "\n" +
  224. " },\n" +
  225. " \"signFieldStyle\": 1\n" +
  226. " },\n" +
  227. " \"signFieldType\": 0\n" +
  228. " }\n" +
  229. " ],\n" +
  230. " \"signerType\": 1\n" +
  231. " }\n" +
  232. " ]\n" +
  233. "}";
  234. //请求方法
  235. EsignRequestType requestType = EsignRequestType.POST;
  236. //生成请求签名鉴权方式的Header
  237. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  238. //发起接口请求
  239. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  240. }
  241. /**
  242. * 发起带有用印签署
  243. *
  244. * @return
  245. * @throws EsignDemoException
  246. */
  247. public static EsignHttpResponse createByFileSeal(SealSignRecord sealSignRecord ,List<String> sealIdList) throws EsignDemoException {
  248. String apiaddr = "/v3/sign-flow/create-by-file";
  249. String fileId = sealSignRecord.getFileid();
  250. String fileName = sealSignRecord.getFilename();
  251. String psnAccount = sealSignRecord.getPensonAccount();
  252. String psnName = sealSignRecord.getPensonName();
  253. String psnAccountRes = sealSignRecord.getPensonAccountRes();
  254. String psnNameRes = sealSignRecord.getPensonNameRes();
  255. String psnAccountMedi = sealSignRecord.getPensonAccountMedi();
  256. String psnNameMedi = sealSignRecord.getPensonNameMedi();
  257. String orgName = sealSignRecord.getOrgnizeName();
  258. String orgNamePsnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
  259. String orgNamepsnName = sealSignRecord.getOrgnizeNamepsnName();
  260. String positionPagepsn = sealSignRecord.getPositionPagepsn();
  261. double positionXpsn = sealSignRecord.getPositionXpsn();
  262. double positionYpsn = sealSignRecord.getPositionYpsn();
  263. String positionPagepsnRes = sealSignRecord.getPositionPagepsnRes();
  264. double positionXpsnRes = sealSignRecord.getPositionXpsnRes();
  265. double positionYpsnRes = sealSignRecord.getPositionYpsnRes();
  266. String positionPagepsnMedi = sealSignRecord.getPositionPagepsnMedi();
  267. double positionXpsnMedi = sealSignRecord.getPositionXpsnMedi();
  268. double positionYpsnMedi = sealSignRecord.getPositionYpsnMedi();
  269. String positionPageorg = sealSignRecord.getPositionPageorg();
  270. double positionXorg = sealSignRecord.getPositionXorg();
  271. double positionYorg = sealSignRecord.getPositionYorg();
  272. String availableSealId = "209af82b-5f87-4e0a-b0d8-cc4923b6e652";
  273. String jsonParm = "{\n" +
  274. " \"docs\": [\n" +
  275. " {\n" +
  276. " \"fileId\": \"" + fileId + "\",\n" +
  277. " \"fileName\": \"" + fileName + "\"\n" +
  278. " }\n" +
  279. " ],\n" +
  280. " \"signFlowConfig\": {\n" +
  281. " \"signFlowTitle\": \"测试合同\",\n" +
  282. " \"autoStart\": true,\n" +
  283. " \"authConfig\": {\n" +
  284. " \"willingnessAuthModes\": [\n" +
  285. " \"CODE_SMS\"\n" +
  286. " ],\n" +
  287. " \"psnAvailableAuthModes\": [\n" +
  288. " \"PSN_MOBILE3\"\n" +
  289. " ],\n" +
  290. " \"orgAvailableAuthModes\": [\n" +
  291. " \"ORG_LEGALREP\"\n" +
  292. " ]\n" +
  293. " },\n" +
  294. " \"signConfig\": {\n" +
  295. " \"availableSignClientTypes\": \"1\"\n" +
  296. " },\n" +
  297. // " \"notifyUrl\": \"" + signSealCallbackUrl + "\",\n" +
  298. " \"autoFinish\": true\n" +
  299. " },\n" +
  300. " \"signers\": [\n" +
  301. " {\n" +
  302. " \"psnSignerInfo\": {\n" +
  303. " \"psnAccount\": \"" + psnAccount + "\",\n" +
  304. " \"psnInfo\": {\n" +
  305. " \"psnName\": \"" + psnName + "\"\n" +
  306. " }\n" +
  307. " },\n" +
  308. " \"signFields\": [\n" +
  309. " {\n" +
  310. " \"fileId\": \"" + fileId + "\",\n" +
  311. " \"normalSignFieldConfig\": {\n" +
  312. " \"autoSign\": false,\n" +
  313. " \"freeMode\": false,\n" +
  314. " \"movableSignField\": false,\n" +
  315. " \"signFieldPosition\": {\n" +
  316. " \"positionPage\": \"" + positionPagepsn + "\",\n" +
  317. " \"positionX\": " + positionXpsn + ",\n" +
  318. " \"positionY\": " + positionYpsn + "\n" +
  319. " },\n" +
  320. " \"signFieldStyle\": 1\n" +
  321. " },\n" +
  322. " \"signFieldType\": 0\n" +
  323. " }\n" +
  324. " ],\n" +
  325. " \"signerType\": 0\n" +
  326. " },\n" +
  327. " {\n" +
  328. " \"psnSignerInfo\": {\n" +
  329. " \"psnAccount\": \"" + psnAccountRes + "\",\n" +
  330. " \"psnInfo\": {\n" +
  331. " \"psnName\": \"" + psnNameRes + "\"\n" +
  332. " }\n" +
  333. " },\n" +
  334. " \"signFields\": [\n" +
  335. " {\n" +
  336. " \"fileId\": \"" + fileId + "\",\n" +
  337. " \"normalSignFieldConfig\": {\n" +
  338. " \"autoSign\": false,\n" +
  339. " \"freeMode\": false,\n" +
  340. " \"movableSignField\": false,\n" +
  341. " \"signFieldPosition\": {\n" +
  342. " \"positionPage\": \"" + positionPagepsnRes + "\",\n" +
  343. " \"positionX\": " + positionXpsnRes + ",\n" +
  344. " \"positionY\": " + positionYpsnRes + "\n" +
  345. " },\n" +
  346. " \"signFieldStyle\": 1\n" +
  347. " },\n" +
  348. " \"signFieldType\": 0\n" +
  349. " }\n" +
  350. " ],\n" +
  351. " \"signerType\": 0\n" +
  352. " },\n" +
  353. " {\n" +
  354. " \"psnSignerInfo\": {\n" +
  355. " \"psnAccount\": \"" + psnAccountMedi + "\",\n" +
  356. " \"psnInfo\": {\n" +
  357. " \"psnName\": \"" + psnNameMedi + "\"\n" +
  358. " }\n" +
  359. " },\n" +
  360. " \"signFields\": [\n" +
  361. " {\n" +
  362. " \"fileId\": \"" + fileId + "\",\n" +
  363. " \"normalSignFieldConfig\": {\n" +
  364. " \"autoSign\": false,\n" +
  365. " \"freeMode\": false,\n" +
  366. " \"movableSignField\": false,\n" +
  367. " \"signFieldPosition\": {\n" +
  368. " \"positionPage\": \"" + positionPagepsnMedi + "\",\n" +
  369. " \"positionX\": " + positionXpsnMedi + ",\n" +
  370. " \"positionY\": " + positionYpsnMedi + "\n" +
  371. " },\n" +
  372. " \"signFieldStyle\": 1\n" +
  373. " },\n" +
  374. " \"signFieldType\": 0\n" +
  375. " }\n" +
  376. " ],\n" +
  377. " \"signerType\": 0\n" +
  378. " },\n" +
  379. " {\n" +
  380. " \"orgSignerInfo\": {\n" +
  381. " \"orgName\": \"" + orgName + "\",\n" +
  382. " \"transactorInfo\": {\n" +
  383. " \"psnAccount\": \"" + orgNamePsnAccount + "\",\n" +
  384. " \"psnInfo\": {\n" +
  385. " \"psnName\": \"" + orgNamepsnName + "\"\n" +
  386. " }\n" +
  387. " }\n" +
  388. " },\n" +
  389. " \"signFields\": [\n" +
  390. " {\n" +
  391. " \"fileId\": \"" + fileId + "\",\n" +
  392. " \"normalSignFieldConfig\": {\n" +
  393. " \"autoSign\": false,\n" +
  394. " \"freeMode\": false,\n" +
  395. /* " \"availableSealIds\": [\n" +
  396. " \"" + availableSealId + "\"\n" +
  397. " ],\n" +*/
  398. // " \"availableSealIds\": " + new Gson().toJson(sealIdList) + ",\n" +
  399. " \"signFieldPosition\": {\n" +
  400. " \"positionPage\": \"" + positionPageorg + "\",\n" +
  401. " \"positionX\": " + positionXorg + ",\n" +
  402. " \"positionY\": " + positionYorg + "\n" +
  403. " },\n" +
  404. " \"signFieldStyle\": 1\n" +
  405. " },\n" +
  406. " \"signFieldType\": 0\n" +
  407. " }\n" +
  408. " ],\n" +
  409. " \"signerType\": 1\n" +
  410. " }\n" +
  411. " ]\n" +
  412. "}";
  413. //请求方法
  414. EsignRequestType requestType = EsignRequestType.POST;
  415. //生成请求签名鉴权方式的Header
  416. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  417. //发起接口请求
  418. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  419. }
  420. /**
  421. * 发起不带用印签署
  422. *
  423. * @return
  424. * @throws EsignDemoException
  425. */
  426. public static EsignHttpResponse createByFileMediation(SealSignRecord sealSignRecord) throws EsignDemoException {
  427. String apiaddr = "/v3/sign-flow/create-by-file";
  428. String fileId = sealSignRecord.getFileid();
  429. String fileName = sealSignRecord.getFilename();
  430. String psnAccount = sealSignRecord.getPensonAccount();
  431. String psnName = sealSignRecord.getPensonName();
  432. String psnAccountRes = sealSignRecord.getPensonAccountRes();
  433. String psnNameRes = sealSignRecord.getPensonNameRes();
  434. String psnAccountMedi = sealSignRecord.getPensonAccountMedi();
  435. String psnNameMedi = sealSignRecord.getPensonNameMedi();
  436. String positionPagepsn = sealSignRecord.getPositionPagepsn();
  437. double positionXpsn = sealSignRecord.getPositionXpsn();
  438. double positionYpsn = sealSignRecord.getPositionYpsn();
  439. String positionPagepsnRes = sealSignRecord.getPositionPagepsnRes();
  440. double positionXpsnRes = sealSignRecord.getPositionXpsnRes();
  441. double positionYpsnRes = sealSignRecord.getPositionYpsnRes();
  442. String positionPagepsnMedi = sealSignRecord.getPositionPagepsnMedi();
  443. double positionXpsnMedi = sealSignRecord.getPositionXpsnMedi();
  444. double positionYpsnMedi = sealSignRecord.getPositionYpsnMedi();
  445. String jsonParm = "{\n" +
  446. " \"docs\": [\n" +
  447. " {\n" +
  448. " \"fileId\": \"" + fileId + "\",\n" +
  449. " \"fileName\": \"" + fileName + "\"\n" +
  450. " }\n" +
  451. " ],\n" +
  452. " \"signFlowConfig\": {\n" +
  453. " \"signFlowTitle\": \"测试合同\",\n" +
  454. " \"autoStart\": true,\n" +
  455. " \"authConfig\": {\n" +
  456. " \"willingnessAuthModes\": [\n" +
  457. " \"CODE_SMS\"\n" +
  458. " ],\n" +
  459. " \"psnAvailableAuthModes\": [\n" +
  460. " \"PSN_MOBILE3\"\n" +
  461. " ],\n" +
  462. " \"orgAvailableAuthModes\": [\n" +
  463. " \"ORG_LEGALREP\"\n" +
  464. " ]\n" +
  465. " },\n" +
  466. " \"signConfig\": {\n" +
  467. " \"availableSignClientTypes\": \"1\"\n" +
  468. " },\n" +
  469. // " \"notifyUrl\": \"" + signSealCallbackUrl + "\",\n" +
  470. " \"autoFinish\": true\n" +
  471. " },\n" +
  472. " \"signers\": [\n" +
  473. " {\n" +
  474. " \"psnSignerInfo\": {\n" +
  475. " \"psnAccount\": \"" + psnAccount + "\",\n" +
  476. " \"psnInfo\": {\n" +
  477. " \"psnName\": \"" + psnName + "\"\n" +
  478. " }\n" +
  479. " },\n" +
  480. " \"signFields\": [\n" +
  481. " {\n" +
  482. " \"fileId\": \"" + fileId + "\",\n" +
  483. " \"normalSignFieldConfig\": {\n" +
  484. " \"autoSign\": false,\n" +
  485. " \"freeMode\": false,\n" +
  486. " \"movableSignField\": false,\n" +
  487. " \"signFieldPosition\": {\n" +
  488. " \"positionPage\": \"" + positionPagepsn + "\",\n" +
  489. " \"positionX\": " + positionXpsn + ",\n" +
  490. " \"positionY\": " + positionYpsn + "\n" +
  491. " },\n" +
  492. " \"signFieldStyle\": 1\n" +
  493. " },\n" +
  494. " \"signFieldType\": 0\n" +
  495. " }\n" +
  496. " ],\n" +
  497. " \"signerType\": 0\n" +
  498. " },\n" +
  499. " {\n" +
  500. " \"psnSignerInfo\": {\n" +
  501. " \"psnAccount\": \"" + psnAccountRes + "\",\n" +
  502. " \"psnInfo\": {\n" +
  503. " \"psnName\": \"" + psnNameRes + "\"\n" +
  504. " }\n" +
  505. " },\n" +
  506. " \"signFields\": [\n" +
  507. " {\n" +
  508. " \"fileId\": \"" + fileId + "\",\n" +
  509. " \"normalSignFieldConfig\": {\n" +
  510. " \"autoSign\": false,\n" +
  511. " \"freeMode\": false,\n" +
  512. " \"movableSignField\": false,\n" +
  513. " \"signFieldPosition\": {\n" +
  514. " \"positionPage\": \"" + positionPagepsnRes + "\",\n" +
  515. " \"positionX\": " + positionXpsnRes + ",\n" +
  516. " \"positionY\": " + positionYpsnRes + "\n" +
  517. " },\n" +
  518. " \"signFieldStyle\": 1\n" +
  519. " },\n" +
  520. " \"signFieldType\": 0\n" +
  521. " }\n" +
  522. " ],\n" +
  523. " \"signerType\": 0\n" +
  524. " },\n" +
  525. " {\n" +
  526. " \"psnSignerInfo\": {\n" +
  527. " \"psnAccount\": \"" + psnAccountMedi + "\",\n" +
  528. " \"psnInfo\": {\n" +
  529. " \"psnName\": \"" + psnNameMedi + "\"\n" +
  530. " }\n" +
  531. " },\n" +
  532. " \"signFields\": [\n" +
  533. " {\n" +
  534. " \"fileId\": \"" + fileId + "\",\n" +
  535. " \"normalSignFieldConfig\": {\n" +
  536. " \"autoSign\": false,\n" +
  537. " \"freeMode\": false,\n" +
  538. " \"movableSignField\": false,\n" +
  539. " \"signFieldPosition\": {\n" +
  540. " \"positionPage\": \"" + positionPagepsnMedi + "\",\n" +
  541. " \"positionX\": " + positionXpsnMedi + ",\n" +
  542. " \"positionY\": " + positionYpsnMedi + "\n" +
  543. " },\n" +
  544. " \"signFieldStyle\": 1\n" +
  545. " },\n" +
  546. " \"signFieldType\": 0\n" +
  547. " }\n" +
  548. " ],\n" +
  549. " \"signerType\": 0\n" +
  550. " }\n" +
  551. " ]\n" +
  552. "}";
  553. //请求方法
  554. EsignRequestType requestType = EsignRequestType.POST;
  555. //生成请求签名鉴权方式的Header
  556. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  557. //发起接口请求
  558. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  559. }
  560. /**
  561. * 发起签署
  562. *
  563. * @return
  564. * @throws EsignDemoException
  565. */
  566. public static EsignHttpResponse createByFileReconci(SealSignRecord sealSignRecord ) throws EsignDemoException {
  567. String apiaddr = "/v3/sign-flow/create-by-file";
  568. String fileId = sealSignRecord.getFileid();
  569. String fileName = sealSignRecord.getFilename();
  570. String psnAccount = sealSignRecord.getPensonAccount();
  571. String psnName = sealSignRecord.getPensonName();
  572. String psnAccountRes = sealSignRecord.getPensonAccountRes();
  573. String psnNameRes = sealSignRecord.getPensonNameRes();
  574. String positionPagepsn = sealSignRecord.getPositionPagepsn();
  575. double positionXpsn = sealSignRecord.getPositionXpsn();
  576. double positionYpsn = sealSignRecord.getPositionYpsn();
  577. String positionPagepsnRes = sealSignRecord.getPositionPagepsnRes();
  578. double positionXpsnRes = sealSignRecord.getPositionXpsnRes();
  579. double positionYpsnRes = sealSignRecord.getPositionYpsnRes();
  580. String jsonParm = "{\n" +
  581. " \"docs\": [\n" +
  582. " {\n" +
  583. " \"fileId\": \"" + fileId + "\",\n" +
  584. " \"fileName\": \"" + fileName + "\"\n" +
  585. " }\n" +
  586. " ],\n" +
  587. " \"signFlowConfig\": {\n" +
  588. " \"signFlowTitle\": \"测试合同\",\n" +
  589. " \"autoStart\": true,\n" +
  590. " \"authConfig\": {\n" +
  591. " \"willingnessAuthModes\": [\n" +
  592. " \"CODE_SMS\"\n" +
  593. " ],\n" +
  594. " \"psnAvailableAuthModes\": [\n" +
  595. " \"PSN_MOBILE3\"\n" +
  596. " ],\n" +
  597. " \"orgAvailableAuthModes\": [\n" +
  598. " \"ORG_LEGALREP\"\n" +
  599. " ]\n" +
  600. " },\n" +
  601. " \"signConfig\": {\n" +
  602. " \"availableSignClientTypes\": \"1\"\n" +
  603. " },\n" +
  604. " \"autoFinish\": true\n" +
  605. " },\n" +
  606. " \"signers\": [\n" +
  607. " {\n" +
  608. " \"psnSignerInfo\": {\n" +
  609. " \"psnAccount\": \"" + psnAccount + "\",\n" +
  610. " \"psnInfo\": {\n" +
  611. " \"psnName\": \"" + psnName + "\"\n" +
  612. " }\n" +
  613. " },\n" +
  614. " \"signFields\": [\n" +
  615. " {\n" +
  616. " \"fileId\": \"" + fileId + "\",\n" +
  617. " \"normalSignFieldConfig\": {\n" +
  618. " \"autoSign\": false,\n" +
  619. " \"freeMode\": false,\n" +
  620. " \"movableSignField\": false,\n" +
  621. " \"signFieldPosition\": {\n" +
  622. " \"positionPage\": \"" + positionPagepsn + "\",\n" +
  623. " \"positionX\": " + positionXpsn + ",\n" +
  624. " \"positionY\": " + positionYpsn + "\n" +
  625. " },\n" +
  626. " \"signFieldStyle\": 1\n" +
  627. " },\n" +
  628. " \"signFieldType\": 0\n" +
  629. " }\n" +
  630. " ],\n" +
  631. " \"signerType\": 0\n" +
  632. " },\n" +
  633. " {\n" +
  634. " \"psnSignerInfo\": {\n" +
  635. " \"psnAccount\": \"" + psnAccountRes + "\",\n" +
  636. " \"psnInfo\": {\n" +
  637. " \"psnName\": \"" + psnNameRes + "\"\n" +
  638. " }\n" +
  639. " },\n" +
  640. " \"signFields\": [\n" +
  641. " {\n" +
  642. " \"fileId\": \"" + fileId + "\",\n" +
  643. " \"normalSignFieldConfig\": {\n" +
  644. " \"autoSign\": false,\n" +
  645. " \"freeMode\": false,\n" +
  646. " \"movableSignField\": false,\n" +
  647. " \"signFieldPosition\": {\n" +
  648. " \"positionPage\": \"" + positionPagepsnRes + "\",\n" +
  649. " \"positionX\": " + positionXpsnRes + ",\n" +
  650. " \"positionY\": " + positionYpsnRes + "\n" +
  651. " },\n" +
  652. " \"signFieldStyle\": 1\n" +
  653. " },\n" +
  654. " \"signFieldType\": 0\n" +
  655. " }\n" +
  656. " ],\n" +
  657. " \"signerType\": 0\n" +
  658. " }\n" +
  659. " ]\n" +
  660. "}";
  661. //请求方法
  662. EsignRequestType requestType = EsignRequestType.POST;
  663. //生成请求签名鉴权方式的Header
  664. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  665. //发起接口请求
  666. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  667. }
  668. /**
  669. * 获取合同文件签名链接
  670. *
  671. * @return
  672. * @throws EsignDemoException
  673. */
  674. public static EsignHttpResponse signUrl(SealSignRecord sealSignRecord) throws EsignDemoException {
  675. String signFlowId = sealSignRecord.getSignFlowid();
  676. String psnAccount = sealSignRecord.getPensonAccount();
  677. String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
  678. String jsonParm = "{\n" +
  679. " \"clientType\": \"PC\",\n" +
  680. " \"operator\": {\n" +
  681. " \"psnAccount\": \"" + psnAccount + "\"\n" +
  682. " }\n" +
  683. "}";
  684. //请求方法
  685. EsignRequestType requestType = EsignRequestType.POST;
  686. //生成请求签名鉴权方式的Header
  687. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  688. //发起接口请求
  689. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  690. }
  691. /**
  692. * 获取合同文件移动端签名链接
  693. *
  694. * @return
  695. * @throws EsignDemoException
  696. */
  697. public static EsignHttpResponse signUrlMediation(SealSignRecord sealSignRecord) throws EsignDemoException {
  698. String signFlowId = sealSignRecord.getSignFlowid();
  699. String psnAccount = sealSignRecord.getPensonAccount();
  700. String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
  701. String jsonParm = "{\n" +
  702. " \"clientType\": \"H5\",\n" +
  703. " \"operator\": {\n" +
  704. " \"psnAccount\": \"" + psnAccount + "\"\n" +
  705. " }\n" +
  706. "}";
  707. //请求方法
  708. EsignRequestType requestType = EsignRequestType.POST;
  709. //生成请求签名鉴权方式的Header
  710. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  711. //发起接口请求
  712. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  713. }
  714. /**
  715. * 获取批量签页面链接
  716. *
  717. * @return
  718. * @throws EsignDemoException
  719. */
  720. public static EsignHttpResponse batchSignUrl(StringIdsReq idsReq) throws EsignDemoException {
  721. List<String> signFlowIds = idsReq.getIds();
  722. String psnAccount = idsReq.getPsnAccount();
  723. String apiaddr = "/v3/sign-flow/batch-sign-url";
  724. JSONObject paramObj = new JSONObject();
  725. paramObj.put("operatorId",idsReq.getPsnId());
  726. paramObj.put("signFlowIds",signFlowIds);
  727. paramObj.put("clientType","PC");
  728. String jsonParm = JSON.toJSONString(paramObj);
  729. //请求方法
  730. EsignRequestType requestType = EsignRequestType.POST;
  731. //生成请求签名鉴权方式的Header
  732. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  733. //发起接口请求
  734. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  735. }
  736. /**
  737. * 根据手机号获取账户id
  738. *
  739. * @return
  740. * @throws EsignDemoException
  741. */
  742. public static EsignHttpResponse identityInfo(StringIdsReq idsReq) throws EsignDemoException {
  743. List<String> signFlowIds = idsReq.getIds();
  744. String psnAccount = idsReq.getPsnAccount();
  745. String apiaddr = "/v3/persons/identity-info?psnAccount=" +psnAccount;
  746. String jsonParm = "{}";
  747. //请求方法
  748. EsignRequestType requestType = EsignRequestType.GET;
  749. //生成请求签名鉴权方式的Header
  750. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  751. //发起接口请求
  752. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  753. }
  754. /**
  755. * 获取合同文件用印链接
  756. *
  757. * @return
  758. * @throws EsignDemoException
  759. */
  760. public static EsignHttpResponse usesealUrl(SealSignRecord sealSignRecord) throws EsignDemoException {
  761. String signFlowId = sealSignRecord.getSignFlowid();
  762. String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
  763. String psnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
  764. String orgName = sealSignRecord.getOrgnizeName();
  765. String jsonParm = "{\n" +
  766. " \"operator\": {\n" +
  767. " \"psnAccount\": \"" + psnAccount + "\"\n" +
  768. " },\n" +
  769. " \"organization\": {\n" +
  770. " \"orgName\": \"" + orgName + "\"\n" +
  771. " }\n" +
  772. "}";
  773. //请求方法
  774. EsignRequestType requestType = EsignRequestType.POST;
  775. //生成请求签名鉴权方式的Header
  776. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  777. //发起接口请求
  778. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  779. }
  780. /**
  781. * 获取机构认证&授权页面链接
  782. *
  783. * @return
  784. */
  785. public static EsignHttpResponse deptIdentifyUrl(DeptIdentify deptIdentify) throws EsignDemoException {
  786. String apiaddr = "/v3/org-auth-url";
  787. String psnName = deptIdentify.getOperName();
  788. String phonenumber = deptIdentify.getOperPhone();
  789. String orgName = deptIdentify.getIdentifyName();
  790. String jsonParm = "{\n" +
  791. " \"orgAuthConfig\": {\n" +
  792. " \"orgName\": \"" + orgName + " \",\n" +
  793. " \"transactorInfo\": {\n" +
  794. " \"psnAccount\": \"" + phonenumber + "\",\n" +
  795. " \"psnInfo\": {\n" +
  796. " \"psnName\": \"" + psnName + "\",\n" +
  797. " \"psnMobile\": \"" + phonenumber + "\"\n" +
  798. " }\n" +
  799. " }\n" +
  800. " },\n" +
  801. " \"authorizeConfig\": {\n" +
  802. " \"authorizedScopes\": [\n" +
  803. " \"get_org_identity_info\",\n" +
  804. " \"get_psn_identity_info\",\n" +
  805. " \"org_initiate_sign\",\n" +
  806. " \"psn_initiate_sign\",\n" +
  807. " \"manage_org_resource\",\n" +
  808. " \"manage_psn_resource\",\n" +
  809. " \"use_org_order\"\n" +
  810. " ]\n" +
  811. " }\n" +
  812. "}";
  813. //请求方法
  814. EsignRequestType requestType = EsignRequestType.POST;
  815. //生成请求签名鉴权方式的Header
  816. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  817. //发起接口请求
  818. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  819. }
  820. /**
  821. * 查询企业认证状态
  822. */
  823. public static EsignHttpResponse getDeptIdentifyInfo(DeptIdentify deptIdentify) throws EsignDemoException {
  824. String apiaddr = "/v3/organizations/identity-info?orgName=" + deptIdentify.getIdentifyName();
  825. String jsonParm = "{}";
  826. //请求方法
  827. EsignRequestType requestType = EsignRequestType.GET;
  828. //生成签名鉴权方式的的header
  829. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  830. //发起接口请求
  831. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  832. }
  833. /**
  834. * 查询企业内部印章
  835. */
  836. public static EsignHttpResponse deptIdentifySealList(String orgId) throws EsignDemoException {
  837. int pageNum = 1;
  838. int pageSize = 10;
  839. String apiaddr = "/v3/seals/org-own-seal-list?orgId=" + orgId + "&pageNum=" + pageNum + "&pageSize=" + pageSize;
  840. String jsonParm = null;
  841. //请求方法
  842. EsignRequestType requestType = EsignRequestType.GET;
  843. //生成签名鉴权方式的的header
  844. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  845. //发起接口请求
  846. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  847. }
  848. /**
  849. * 获取文件签名印章位置
  850. *
  851. * @return
  852. * @throws EsignDemoException
  853. */
  854. public static EsignHttpResponse getPositions(SealSignRecord sealSignRecord) throws EsignDemoException {
  855. String fileId = sealSignRecord.getFileid();
  856. String apiaddr = "/v3/files/" + fileId + "/keyword-positions";
  857. String jsonParm = "{\n" +
  858. " \"keywords\": [\n" +
  859. " \"调解员:\",\n" +
  860. " \"(调解委员会盖章)\"\n" +
  861. " ]\n" +
  862. "}";
  863. //请求方法
  864. EsignRequestType requestType = EsignRequestType.POST;
  865. //生成请求签名鉴权方式的Header
  866. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  867. //发起接口请求
  868. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  869. }
  870. /**
  871. * 获取文件签名印章位置
  872. *
  873. * @return
  874. * @throws EsignDemoException
  875. */
  876. public static EsignHttpResponse getPositionsMediation(SealSignRecord sealSignRecord) throws EsignDemoException {
  877. String fileId = sealSignRecord.getFileid();
  878. String apiaddr = "/v3/files/" + fileId + "/keyword-positions";
  879. String jsonParm = "{\n" +
  880. " \"keywords\": [\n" +
  881. " \"申请人(签字):\",\n" +
  882. " \"被申请人(签字):\",\n" +
  883. " \"调解员(签字):\",\n" +
  884. " \"调解机构(盖章):\"\n" +
  885. " ]\n" +
  886. "}";
  887. //请求方法
  888. EsignRequestType requestType = EsignRequestType.POST;
  889. //生成请求签名鉴权方式的Header
  890. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  891. //发起接口请求
  892. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  893. }
  894. /**
  895. * 创建机构图片印章
  896. *
  897. * @return
  898. */
  899. public static EsignHttpResponse createOrgByImage(DeptIdentify deptIdentify,String sealName, String filePath) throws EsignDemoException {
  900. String apiaddr = "/v3/seals/org-seals/create-by-image";
  901. String orgId = deptIdentify.getOrgId();
  902. //上传印章图片
  903. //步骤一:获取印章图片上传地址fileUploadUrl
  904. EsignHttpResponse response1 = SealUtil.getFileUploadUrl(filePath);
  905. JSONObject jsonObject1 = JSONObject.parseObject(response1.getBody());
  906. String fileUploadUrl = jsonObject1.getJSONObject("data").getString("fileUploadUrl");
  907. //步骤二:将印章图片文件流上传到fileUploadUrl
  908. EsignHttpResponse response2 = SealUtil.fileStreamUpload(fileUploadUrl, filePath);
  909. JSONObject jsonObject2 = JSONObject.parseObject(response2.getBody());
  910. int errCode = jsonObject2.getIntValue("errCode");
  911. if (errCode == 0) { //业务码,0表示成功,非0表示异常。
  912. //获取步骤一里面的fileKey
  913. String sealImageFileKey = jsonObject1.getJSONObject("data").getString("fileKey");
  914. //请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
  915. String jsonParm = "{\n" +
  916. " \"orgId\": \"" + orgId + "\",\n" +
  917. " \"sealImageFileKey\": \"" + sealImageFileKey + "\",\n" +
  918. " \"sealName\": \"" + sealName + "\",\n" +
  919. " \"sealWidth\": 50,\n" +
  920. " \"sealHeight\": 50,\n" +
  921. " \"sealBizType\": \"COMMON\"\n" +
  922. "}";
  923. //请求方法
  924. EsignRequestType requestType = EsignRequestType.POST;
  925. //生成签名鉴权方式的的header
  926. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
  927. //发起接口请求
  928. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
  929. }
  930. return null;
  931. }
  932. /**
  933. * 查询指定印章详情(机构)
  934. */
  935. public static EsignHttpResponse getOrgSeal(String orgId, String sealId) throws EsignDemoException {
  936. String apiaddr = "/v3/seals/org-seal-info?orgId=" + orgId + "&sealId=" + sealId;
  937. //请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
  938. String jsonParm = null;
  939. //请求方法
  940. EsignRequestType requestType = EsignRequestType.GET;
  941. //生成签名鉴权方式的的header
  942. Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
  943. //发起接口请求
  944. return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
  945. }
  946. }