|
- package tool
-
- import (
- "applet/app/utils"
- "encoding/json"
- "errors"
- "fmt"
- "sort"
- "time"
- )
-
- type CurlResponse struct {
- Status string `json:"status"`
- Data interface{} `json:"data"`
- Msg string `json:"msg"`
- }
-
- const (
- RequestUrl = "http://router.itaokecms.com/api?app_key=%s&v=1.0&format=json&sign_method=md5&method=%s×tamp=%s&domain=%s&client=%s&partner_id=%s&sign=%s"
- AppKey = "1091808433"
- AppSecret = "bed35c10-ecf1-2d06-477b-f821c227198b"
- Domain = "hairuyi.com"
- PartnerId = "top-sdk-php-20190618"
- )
-
- func SendPost(url string, args interface{}) (data CurlResponse, err error) {
- post, err := utils.CurlPost(url, utils.Serialize(args), map[string]string{})
- utils.FilePutContents("cloud_issuance_send", "resp"+string(post))
- err = json.Unmarshal(post, &data)
- if err != nil {
- return
- }
- if data.Status != "0000" {
- err = errors.New(data.Msg)
- return
- }
- return data, err
- }
-
- func HttpBuild(methodName, clientIP string, params map[string]string) (httpUrl string) {
- timestamp := utils.AnyToString(time.Now().Unix())
- params["app_key"] = AppKey
- params["v"] = "1.0"
- params["format"] = "json"
- params["sign_method"] = "md5"
- params["method"] = methodName
- params["timestamp"] = timestamp
- params["domain"] = Domain
- params["client"] = clientIP
- params["partner_id"] = PartnerId
- sign := httpBuildQuery(params, true)
- sign = AppSecret + httpBuildQuery(params, true) + AppSecret
- sign = utils.MD5ToUpper32(sign)
- httpUrl = fmt.Sprintf(RequestUrl, AppKey, methodName, timestamp, Domain, clientIP, PartnerId, sign)
- return
- }
-
- func httpBuildQuery(args map[string]string, sortAsc ...bool) string {
- str := ""
- if len(args) == 0 {
- return str
- }
- if len(sortAsc) > 0 {
- keys := make([]string, 0, len(args))
- for k := range args {
- keys = append(keys, k)
- }
- if sortAsc[0] {
- sort.Strings(keys)
- } else {
- sort.Sort(sort.Reverse(sort.StringSlice(keys)))
- }
- for _, k := range keys {
- str += k + args[k]
- }
- } else {
- for k, v := range args {
- str += k + v
- }
- }
- return str
- }
|