rsvmp.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package lxhttp
  2. import (
  3. "git.listensoft.net/tool/jspkit/logger"
  4. "github.com/tidwall/gjson"
  5. "net/http"
  6. "net/url"
  7. "strings"
  8. )
  9. const XToken = `ab9296b031462c0cfc9d36e9a5d351af`
  10. const RsServer = "http://rs.jsptax.com/api/rsvmp"
  11. const RsvmpAddress = `qingdao`
  12. var RsvmpUri = []string{
  13. "/szc/szzh/sjswszzh/zhcx/nsrxx/v1/DescribeNsrxxJcxx",
  14. "/szc/szzh/sjswszzh/zhcx/nsrxx/v1/DescribeNsrxxZcjyxx",
  15. "/szc/szzh/sjswszzh/zhcx/nsrxx/v1/DescribeNsrxxQyjyxx",
  16. "/szc/szzh/sjswszzh/zhcx/nsrxx/v1/DescribeNsrxxYzxx",
  17. "/szc/szzh/sjswszzh/zhcx/nsrxx/v1/DescribeZgxx",
  18. "/szc/szzh/sjswszzh/sy/v1/GetNsrzgxx",
  19. "/szc/szzh/sjswszzh/zhcx/nsrxx/v1/DescribeSfzrdxx",
  20. "/mhzx/api/mh/nsrjbxx/v1/query",
  21. "/szc/szzh/sjswszzh/gycxfw/v1/queryDataList/CX_SJSZZH_0001_DQDEHDXXCX",
  22. "/szc/szzh/sjswszzh/zhcx/v1/DescribeSbmxcx2",
  23. "/szc/szzh/sbss/ssmx/zlbs/v1/queryZlbscjb",
  24. "/szc/szzh/sbss/ssmx/sb/v1/getBbidList",
  25. "/szc/szzh/sbss/ssmx/preview/v1/previewPdfData",
  26. "/szc/szzh/sjswszzh/zhcx/v1/DescribeSbmxxqcx",
  27. "/szc/szzh/sjswszzh/zhcx/v1/exportSbmxxqcx",
  28. "/szc/szzh/sbss/ssmx/sb/v1/downloadPdf",
  29. "/mhzx/api/mh/wddb/v1/wddbquerybbsmxx",
  30. }
  31. func NeedRsvmpAPi(uri string) bool {
  32. for _, v := range RsvmpUri {
  33. if strings.Contains(uri, v) {
  34. return true
  35. }
  36. }
  37. return false
  38. }
  39. // NeedRsvmp 规定接口需要瑞书加密地区
  40. func NeedRsvmp(BaseUrl string) bool {
  41. addressArr := strings.Split(RsvmpAddress, ",")
  42. for _, address := range addressArr {
  43. if strings.Contains(BaseUrl, address) {
  44. return true
  45. }
  46. }
  47. return false
  48. }
  49. // Rsvmp 瑞数加密服务
  50. func Rsvmp(uri string) (cookies []*http.Cookie, Posturl string) {
  51. p := map[string]string{
  52. "url": uri,
  53. "apiUrl": uri,
  54. }
  55. h := map[string]string{
  56. "x-token": XToken,
  57. "Content-Type": "application/json",
  58. }
  59. var body []byte
  60. var err error
  61. for range "...." {
  62. body, err = POSTJson(http.DefaultClient, RsServer, p, h)
  63. if err != nil {
  64. continue
  65. }
  66. logger.Info(uri + "\n" + string(body))
  67. if gjson.GetBytes(body, "status").String() == "ok" {
  68. break
  69. }
  70. }
  71. Posturl = gjson.GetBytes(body, "result.rsurl").String()
  72. u1, _ := url.Parse(uri)
  73. u2, _ := url.Parse(Posturl)
  74. Posturl = u1.Scheme + "://" + u1.Host + u2.Path + "?" + u2.Query().Encode()
  75. gjson.GetBytes(body, "result.cookie").ForEach(func(key, value gjson.Result) bool {
  76. cookie := http.Cookie{
  77. Name: key.String(),
  78. Value: value.String(),
  79. }
  80. cookies = append(cookies, &cookie)
  81. return true
  82. })
  83. return
  84. }