|
- package utils
-
- import (
- "applet/app/cfg"
- "encoding/json"
- "errors"
- "fmt"
- "sort"
- "time"
- )
-
- // 调用开放平台的封装
- type OpenPlatformReqClient struct {
- AppKey string
- AppSecret string
- Method string
- Version string
- Timestamp string
- Nonce string
- Sign string
- BizData map[string]interface{}
- params map[string]string
- ReturnData ReturnDataResp
- }
-
- type ReturnDataResp struct {
- Code int `json:"code"`
- Msg string `json:"msg"`
- Data interface{} `json:"data"`
- }
-
- func NewOpenPlatformReqClient(appKey, method, version, appSecret string, bizData map[string]interface{}) (*OpenPlatformReqClient, error) {
- if appKey == "" || appSecret == "" || method == "" || version == "" {
- return nil, errors.New("appKey,method,version not allow empty")
- }
- nowStr := AnyToString(time.Now().Unix())
- nonce := UUIDString()
- return &OpenPlatformReqClient{
- AppKey: appKey,
- AppSecret: appSecret,
- Method: method,
- Version: version,
- Nonce: nonce,
- Timestamp: nowStr,
- params: map[string]string{"app_key": appKey, "method": method, "version": version, "timestamp": nowStr, "nonce": nonce},
- BizData: bizData,
- }, nil
- }
-
- func (client *OpenPlatformReqClient) CurlOpen() error {
- if client.params == nil {
- return errors.New("params not allow empty")
- }
- url := cfg.ZhiosOpen.URL + "/api/open/gw"
- fmt.Printf("%#v\n", string(Serialize(client.params)))
- resp, err := CurlPost(url, Serialize(client.params), nil)
- if err != nil {
- return err
- }
- err = json.Unmarshal(resp, &client.ReturnData)
- if err != nil {
- return err
- }
- return nil
- }
-
- /*func (client *OpenPlatformReqClient) CreateParams() *OpenPlatformReqClient {
- client.params["timestamp"] = client.Timestamp
- client.params["nonce"] = client.Nonce
- //client.params["biz_data"] = SerializeStr(client.BizData)
- return client
- }*/
-
- func (client *OpenPlatformReqClient) SetBizDataToParams() *OpenPlatformReqClient {
- client.params["biz_data"] = SerializeStr(client.BizData)
- return client
- }
-
- func (client *OpenPlatformReqClient) SetParams(key, value string) *OpenPlatformReqClient {
- client.params[key] = value
- return client
- }
-
- func (client *OpenPlatformReqClient) GetParams(key string) string {
- return client.params[key]
- }
-
- func (client *OpenPlatformReqClient) CreateSign() *OpenPlatformReqClient {
- /*if client.BizData != nil {
- for key := range client.BizData {
- client.params[key] = AnyToString2(client.BizData[key])
- }
- }*/
- var keys []string
- for key := range client.params {
- keys = append(keys, key)
- }
- sort.Strings(keys)
- str := ""
- for _, key := range keys {
- str += fmt.Sprintf("%v=%v&", key, client.params[key])
- }
- str = client.AppSecret + str[:len(str)-1] + client.AppSecret
- fmt.Printf("sign: %s\n", str)
- client.Sign = Md5(str)
- client.params["sign"] = client.Sign
- if client.BizData != nil {
- for key := range client.BizData {
- if _, ok := client.params[key]; ok {
- delete(client.params, key)
- }
- }
- }
- return client
- }
-
- func (client *OpenPlatformReqClient) VerifySign(sign string) bool {
- if sign == "" || client.Sign == "" {
- return false
- }
- if client.Sign == sign {
- return true
- }
- return false
- }
-
- func (client *OpenPlatformReqClient) ResetNonce() *OpenPlatformReqClient {
- client.Nonce = UUIDString()
- return client
- }
-
- func (client *OpenPlatformReqClient) ResetTimestamp() *OpenPlatformReqClient {
- client.Timestamp = AnyToString(time.Now().Unix())
- return client
- }
|