This commit is contained in:
苏尹岚
2020-12-25 10:44:02 +08:00
parent fffd5d34c7
commit 573fe54dee
2 changed files with 66 additions and 12 deletions

View File

@@ -92,6 +92,36 @@ func (a *API) AccessAPI(url string, params map[string]interface{}) (retVal map[s
return retVal, err
}
func (a *API) AccessAPI2(url string, params map[string]interface{}) (retVal map[string]interface{}, err error) {
// 签名
auth, datetime, _ := calcAuthorization(source, a.secretID, a.secretKey)
err = platformapi.AccessPlatformAPIWithRetry(a.client,
func() *http.Request {
request, _ := http.NewRequest(http.MethodGet, utils.GenerateGetURL(url, "", params), nil)
request.Header.Set("X-Source", source)
request.Header.Set("X-Date", datetime)
request.Header.Set("Authorization", auth)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
return request
},
a.config,
func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) {
if jsonResult1 == nil {
return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil")
}
if err == nil {
if !jsonResult1["Result"].(map[string]interface{})["success"].(bool) {
errLevel = platformapi.ErrLevelGeneralFail
err = utils.NewErrorCode(jsonResult1["Result"].(map[string]interface{})["errMsg"].(string), "false")
baseapi.SugarLogger.Debugf("txcloud AccessAPI failed, jsonResult1:%s", utils.Format4Output(jsonResult1, true))
}
retVal = jsonResult1
}
return errLevel, err
})
return retVal, err
}
type GetWaybillDetailInfoResult struct {
Code string `json:"code"`
No string `json:"no"`
@@ -126,16 +156,32 @@ func (a *API) GetWaybillDetailInfo(vendorWaybillID, comType string) (getWaybillD
return getWaybillDetailInfoResult, err
}
func (a *API) Address(vendorWaybillID, comType string) (getWaybillDetailInfoResult *GetWaybillDetailInfoResult, err error) {
params := map[string]interface{}{
"num": vendorWaybillID,
}
if comType != "" {
params["com"] = comType
}
result, err := a.AccessAPI("https://service-5hof02so-1300683954.gz.apigw.tencentcs.com/release/kuaidi", params)
if err == nil {
utils.Map2StructByJson(result, &getWaybillDetailInfoResult, false)
}
return getWaybillDetailInfoResult, err
type AddressDistinguishResult struct {
RequestID string `json:"RequestId"`
Result struct {
Data struct {
AddressDetail string `json:"addressDetail"`
City string `json:"city"`
CityCode int `json:"cityCode"`
District string `json:"district"`
DistrictCode int `json:"districtCode"`
DivisionZip string `json:"divisionZip"`
MobileNO string `json:"mobileNO"`
PersonalName string `json:"personalName"`
Province string `json:"province"`
ProvinceCode int `json:"provinceCode"`
} `json:"data"`
Success bool `json:"success"`
} `json:"Result"`
}
func (a *API) AddressDistinguish(address string) (addressDistinguishResult *AddressDistinguishResult, err error) {
params := map[string]interface{}{
"address": address,
}
result, err := a.AccessAPI2("https://service-7daeqy5n-1301652365.bj.apigw.tencentcs.com/release/address_parse", params)
if err == nil {
utils.Map2StructByJson(result, &addressDistinguishResult, false)
}
return addressDistinguishResult, err
}