修改jdapi回调取消息为两步
This commit is contained in:
@@ -176,7 +176,7 @@ func Err2CallbackResponse(err error, data string) *CallbackResponse {
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) unmarshalData(strData string, msg interface{}) (callbackResponse *CallbackResponse) {
|
||||
func unmarshalData(strData string, msg interface{}) (callbackResponse *CallbackResponse) {
|
||||
err := utils.UnmarshalUseNumber([]byte(strData), msg)
|
||||
if err != nil {
|
||||
return &CallbackResponse{
|
||||
@@ -188,6 +188,19 @@ func (a *API) unmarshalData(strData string, msg interface{}) (callbackResponse *
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetCallbackMsg(request *http.Request, needDecode bool) (values url.Values, token, msgURL string, callbackResponse *CallbackResponse) {
|
||||
data, err := ioutil.ReadAll(request.Body)
|
||||
if err != nil {
|
||||
return nil, "", "", Err2CallbackResponse(err, "")
|
||||
}
|
||||
values, err = utils.HTTPBody2Values(data, needDecode)
|
||||
if err != nil {
|
||||
return nil, "", "", FormatErrorResponse
|
||||
}
|
||||
token = values.Get("token")
|
||||
return values, token, getMsgURLFromRequest(request), nil
|
||||
}
|
||||
|
||||
func (a *API) CheckCallbackValidation(values url.Values) (callbackResponse *CallbackResponse) {
|
||||
mapData := utils.URLValues2Map(values)
|
||||
sign := a.signParams(mapData)
|
||||
@@ -198,56 +211,37 @@ func (a *API) CheckCallbackValidation(values url.Values) (callbackResponse *Call
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) getCommonOrderCallbackMsg(request *http.Request, msg interface{}, needDecode bool) (callbackResponse *CallbackResponse) {
|
||||
data, err := ioutil.ReadAll(request.Body)
|
||||
if err != nil {
|
||||
return Err2CallbackResponse(err, "")
|
||||
}
|
||||
// baseapi.SugarLogger.Debug(string(data))
|
||||
result, err := utils.HTTPBody2Values(data, needDecode)
|
||||
if err != nil {
|
||||
return FormatErrorResponse
|
||||
}
|
||||
if callbackResponse = a.CheckCallbackValidation(result); callbackResponse != nil {
|
||||
func (a *API) getCommonOrderCallbackMsg(values url.Values, msg interface{}) (callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.CheckCallbackValidation(values); callbackResponse != nil {
|
||||
return callbackResponse
|
||||
}
|
||||
|
||||
jdParamJSON := result.Get(paramJson)
|
||||
jdParamJSON := values.Get(paramJson)
|
||||
// baseapi.SugarLogger.Debug(jdParamJSON)
|
||||
if callbackResponse = a.unmarshalData(jdParamJSON, msg); callbackResponse != nil {
|
||||
if callbackResponse = unmarshalData(jdParamJSON, msg); callbackResponse != nil {
|
||||
return callbackResponse
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) GetOrderCallbackMsg(request *http.Request) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
msg = new(CallbackOrderMsg)
|
||||
if callbackResponse = a.getCommonOrderCallbackMsg(request, msg, false); callbackResponse == nil {
|
||||
msg.MsgURL = getMsgURLFromRequest(request)
|
||||
func (a *API) GetOrderCallbackMsg(values url.Values, msgURL string) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
|
||||
msg.MsgURL = msgURL
|
||||
}
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
func (a *API) GetOrderApplyCancelCallbackMsg(request *http.Request) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
msg = new(CallbackOrderMsg)
|
||||
if callbackResponse = a.getCommonOrderCallbackMsg(request, msg, true); callbackResponse == nil {
|
||||
msg.MsgURL = getMsgURLFromRequest(request)
|
||||
func (a *API) GetOrderDeliveryCallbackMsg(values url.Values, msgURL string) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
|
||||
msg.MsgURL = msgURL
|
||||
}
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
func (a *API) GetOrderDeliveryCallbackMsg(request *http.Request) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.getCommonOrderCallbackMsg(request, &msg, true); callbackResponse == nil {
|
||||
msg.MsgURL = getMsgURLFromRequest(request)
|
||||
}
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
func (a *API) GetStoreStockCallbackMsg(request *http.Request) (msg *CallbackStoreStockMsg, callbackResponse *CallbackResponse) {
|
||||
func (a *API) GetStoreStockCallbackMsg(values url.Values, msgURL string) (msg *CallbackStoreStockMsg, callbackResponse *CallbackResponse) {
|
||||
msg = new(CallbackStoreStockMsg)
|
||||
msg.MsgURL = getMsgURLFromRequest(request)
|
||||
msg.MsgURL = msgURL
|
||||
var tmpMsg map[string]interface{}
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(request, &tmpMsg, true)
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(values, &tmpMsg)
|
||||
if callbackResponse == nil {
|
||||
msg.StationNo = utils.Interface2String(tmpMsg["stationNo"])
|
||||
msg.SkuId = utils.Str2Int64(utils.Interface2String(tmpMsg["skuId"]))
|
||||
|
||||
@@ -149,6 +149,10 @@ func NewPageOnly(cookie string, config ...*platformapi.APIConfig) *API {
|
||||
return api
|
||||
}
|
||||
|
||||
func (a *API) GetToken() (token string) {
|
||||
return a.token
|
||||
}
|
||||
|
||||
func (a *API) AccessAPI2(apiStr string, jdParams map[string]interface{}, traceInfo string) (retVal map[string]interface{}, err error) {
|
||||
params := make(map[string]interface{})
|
||||
params["v"] = "1.0"
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
@@ -51,8 +52,12 @@ func TestOrderQuery(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetOrderCallbackMsg(t *testing.T) {
|
||||
callbackStr := "timestamp=2018-06-27+12%3A43%3A51&sign=84096ADFAB81E224D6231269AD1F6AAB&v=1.0&jd_param_json=%7B%22billId%22%3A%22815338526000221%22%2C%22statusId%22%3A%2232000%22%2C%22timestamp%22%3A%222018-06-27+12%3A42%3A34%22%7D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
||||
result, resp := api.GetOrderCallbackMsg(utils.BuildRequest(http.MethodPost, "", callbackStr, ""))
|
||||
callbackStr := strings.TrimSpace(`
|
||||
timestamp=2019-12-03+06%3A28%3A40&sign=84AF173723A89E95AD7D0CFECA293683&v=1.0&jd_param_json=%7B%22billId%22%3A%22929053552000142%22%2C%22statusId%22%3A%2232000%22%2C%22timestamp%22%3A%222019-12-03+06%3A28%3A37%22%7D&token=77e703b7-7997-441b-a12a-2e522efb117a&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json
|
||||
|
||||
`)
|
||||
values, _, msgURL, resp := GetCallbackMsg(utils.BuildRequest(http.MethodPost, "", callbackStr, ""), false)
|
||||
result, resp := api.GetOrderCallbackMsg(values, msgURL)
|
||||
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
@@ -61,8 +66,12 @@ func TestGetOrderCallbackMsg(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetOrderDeliveryCallbackMsg(t *testing.T) {
|
||||
callbackStr := "timestamp=2018-06-27%2B09%253A08%253A41&sign=54D9A8515BB5650DC3B81366E3286570&v=1.0&jd_param_json=%257B%2522createPin%2522%253A%2522JD_21134dac1c251d2%2522%252C%2522deliveryCarrierName%2522%253A%2522%25E8%25BE%25BE%25E8%25BE%25BE%25E4%25B8%2593%25E9%2580%2581%2522%252C%2522deliveryCarrierNo%2522%253A%25229966%2522%252C%2522deliveryStatus%2522%253A%252210%2522%252C%2522deliveryStatusTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522inputTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522orderId%2522%253A%2522815324888000121%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
||||
result, resp := api.GetOrderDeliveryCallbackMsg(utils.BuildRequest(http.MethodPost, "", callbackStr, ""))
|
||||
callbackStr := strings.TrimSpace(`
|
||||
timestamp=2018-06-27%2B09%253A08%253A41&sign=54D9A8515BB5650DC3B81366E3286570&v=1.0&jd_param_json=%257B%2522createPin%2522%253A%2522JD_21134dac1c251d2%2522%252C%2522deliveryCarrierName%2522%253A%2522%25E8%25BE%25BE%25E8%25BE%25BE%25E4%25B8%2593%25E9%2580%2581%2522%252C%2522deliveryCarrierNo%2522%253A%25229966%2522%252C%2522deliveryStatus%2522%253A%252210%2522%252C%2522deliveryStatusTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522inputTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522orderId%2522%253A%2522815324888000121%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json
|
||||
|
||||
`)
|
||||
values, _, msgURL, resp := GetCallbackMsg(utils.BuildRequest(http.MethodPost, "", callbackStr, ""), true)
|
||||
result, resp := api.GetOrderDeliveryCallbackMsg(values, msgURL)
|
||||
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
@@ -71,8 +80,12 @@ func TestGetOrderDeliveryCallbackMsg(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetOrderApplyCancelCallbackMsg(t *testing.T) {
|
||||
callbackStr := "timestamp=2018-06-27%2B13%253A35%253A29&sign=F1398D658514D8864FFB56F5EF2C4792&v=1.0&jd_param_json=%257B%2522billId%2522%253A%2522815339944000322%2522%252C%2522remark%2522%253A%2522%25E5%2595%2586%25E5%25AE%25B6%25E7%25BC%25BA%25E8%25B4%25A7%2522%252C%2522statusId%2522%253A%252220030%2522%252C%2522timestamp%2522%253A%25222018-06-27%2B13%253A35%253A24%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
||||
result, resp := api.GetOrderApplyCancelCallbackMsg(utils.BuildRequest(http.MethodPost, "", callbackStr, ""))
|
||||
callbackStr := strings.TrimSpace(`
|
||||
timestamp=2018-06-27%2B13%253A35%253A29&sign=F1398D658514D8864FFB56F5EF2C4792&v=1.0&jd_param_json=%257B%2522billId%2522%253A%2522815339944000322%2522%252C%2522remark%2522%253A%2522%25E5%2595%2586%25E5%25AE%25B6%25E7%25BC%25BA%25E8%25B4%25A7%2522%252C%2522statusId%2522%253A%252220030%2522%252C%2522timestamp%2522%253A%25222018-06-27%2B13%253A35%253A24%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json
|
||||
|
||||
`)
|
||||
values, _, msgURL, resp := GetCallbackMsg(utils.BuildRequest(http.MethodPost, "", callbackStr, ""), true)
|
||||
result, resp := api.GetOrderApplyCancelCallbackMsg(values, msgURL)
|
||||
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
|
||||
Reference in New Issue
Block a user