MkYpUtil.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.malk.siku.utils;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.malk.utils.UtilHttp;
  4. import com.malk.utils.UtilMap;
  5. import com.malk.utils.UtilToken;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.apache.commons.codec.digest.DigestUtils;
  8. import org.apache.commons.lang3.StringUtils;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. /**
  14. * 每刻云票
  15. */
  16. @Slf4j
  17. public class MkYpUtil {
  18. @Value("${mk.yp.appCode}")
  19. private final static String appCode = "AP53EP1SVDS1N9";
  20. @Value("${mk.yp.appSecret}")
  21. private final static String appSecret = "qF4nm3nPnyXYcrWcr5jl";
  22. private final static String host = "pms-uat.maycur.com";//测试环境
  23. // private final static String host = "pms.maycur.com";//生产环境
  24. private final Object $lock = new Object[0];
  25. private static final Long EXPIRES_IN = 1800000L;
  26. public static Map initTokenHeader(){
  27. Map header = new HashMap();
  28. String tokenId = UtilToken.get("invalid-tokenId-mkyp");
  29. String entCode = UtilToken.get("invalid-entCode-mkyp");
  30. if (StringUtils.isNotBlank(tokenId) && StringUtils.isNotBlank(entCode)) {
  31. header.put("tokenId",tokenId);
  32. header.put("entCode",entCode);
  33. return header;
  34. } else {
  35. //每刻云票登录认证
  36. Map body = new HashMap();
  37. long timeMillis = System.currentTimeMillis();
  38. body.put("appCode",appCode);
  39. body.put("secret",getSecret(appCode,appSecret,timeMillis));
  40. body.put("timestamp",timeMillis);
  41. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/common/openapi/auth/login", null, null, body));
  42. Map data = UtilMap.getMap(result, "data");
  43. tokenId = UtilMap.getString(data, "tokenId");
  44. entCode = UtilMap.getString(data, "entCode");
  45. log.info("每刻云票tokenId, {}", tokenId);
  46. log.info("每刻云票entCode, {}", entCode);
  47. UtilToken.put("invalid-tokenId-mkyp", tokenId, EXPIRES_IN);
  48. UtilToken.put("invalid-entCode-mkyp", entCode, EXPIRES_IN);
  49. header.put("tokenId",tokenId);
  50. header.put("entCode",entCode);
  51. return header;
  52. }
  53. }
  54. //开票通知单导入
  55. public static Map application(Object body){
  56. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/ar/openapi/application_oa/batch", MkYpUtil.initTokenHeader(), null, body,(Map) null));
  57. // Map result = (Map) JSONObject.parse(UtilHttp.doRequest(UtilHttp.METHOD.POST, "https://" + host + "/api/ar/openapi/application_oa/batch", MkYpUtil.initTokenHeader(), null, body));
  58. log.info("Result:{}",result);
  59. return result;
  60. }
  61. //保存云票客户
  62. public static Map saveClient(Object body){
  63. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/ar/openapi/client/batch", MkYpUtil.initTokenHeader(), null, body,(Map) null));
  64. log.info("Result:{}",result);
  65. return result;
  66. }
  67. //应收单查询
  68. public static List<Map> searchReceivable(Object body){
  69. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/ar/openapi/receivable_oa/search", MkYpUtil.initTokenHeader(), null, body,(Map) null));
  70. log.info("Result:{}",result);
  71. Map data = UtilMap.getMap(result, "data");
  72. List<Map> data2 = UtilMap.getList(data, "data");
  73. return data2;
  74. }
  75. private static String getSecret(String appCode, String appSecret, long timeMillis){
  76. log.info("time:{}",timeMillis);
  77. String s = DigestUtils.sha256Hex(appSecret + ":" + appCode + ":" + timeMillis);
  78. log.info("s:{}",s);
  79. return s;
  80. }
  81. }