优化jdapi.CallbackMsg
This commit is contained in:
@@ -112,7 +112,7 @@ type CallbackResponse struct {
|
||||
}
|
||||
|
||||
type CallbackMsg struct {
|
||||
MsgURL string `json:"-"`
|
||||
MsgURL string `json:"msgURL"`
|
||||
|
||||
AppKey string `json:"app_key"`
|
||||
Token string `json:"token"`
|
||||
@@ -122,11 +122,11 @@ type CallbackMsg struct {
|
||||
V string `json:"v"`
|
||||
|
||||
JdParamJSON string `json:"jd_param_json"`
|
||||
Param interface{} `json:"param"`
|
||||
Param interface{} `json:"-"` // 这里json必须是-,否则会导致json encode时死递归
|
||||
}
|
||||
|
||||
type CallbackOrderMsg struct {
|
||||
MsgURL string `json:"msgURL"`
|
||||
*CallbackMsg
|
||||
BillID string `json:"billId"`
|
||||
OutBillID string `json:"outBillId"`
|
||||
StatusID string `json:"statusId"`
|
||||
@@ -135,6 +135,7 @@ type CallbackOrderMsg struct {
|
||||
}
|
||||
|
||||
type CallbackDeliveryStatusMsg struct {
|
||||
*CallbackMsg
|
||||
OrderID string `json:"orderId"`
|
||||
DeliveryStatusTime string `json:"deliveryStatusTime"`
|
||||
DeliveryManNo string `json:"deliveryManNo"`
|
||||
@@ -151,6 +152,7 @@ type CallbackDeliveryStatusMsg struct {
|
||||
}
|
||||
|
||||
type CallbackStoreStockMsg struct {
|
||||
*CallbackMsg
|
||||
StationNo string `json:"stationNo"`
|
||||
SkuID int64 `json:"skuId"`
|
||||
Have bool `json:"have"`
|
||||
@@ -247,7 +249,9 @@ func (a *API) getCommonOrderCallbackMsg(values url.Values, msg interface{}) (cal
|
||||
|
||||
func (a *API) GetOrderCallbackMsg(values url.Values, msgURL string) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
|
||||
msg.MsgURL = msgURL
|
||||
msg.CallbackMsg = &CallbackMsg{
|
||||
MsgURL: msgURL,
|
||||
}
|
||||
}
|
||||
return msg, callbackResponse
|
||||
}
|
||||
@@ -302,17 +306,23 @@ func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, mapData m
|
||||
callbackMsg.MsgURL = msgURL
|
||||
if msgURL == CallbackMsgDeliveryCarrierModify {
|
||||
var deliveryMsg *CallbackDeliveryStatusMsg
|
||||
err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &deliveryMsg)
|
||||
callbackMsg.Param = deliveryMsg
|
||||
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &deliveryMsg); err == nil {
|
||||
callbackMsg.Param = deliveryMsg
|
||||
deliveryMsg.CallbackMsg = callbackMsg
|
||||
}
|
||||
} else if msgURL == CallbackMsgStockIsHave {
|
||||
var mapData map[string]interface{}
|
||||
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &mapData); err == nil {
|
||||
callbackMsg.Param = map2StockCallbackMsg(mapData)
|
||||
stockMsg := map2StockCallbackMsg(mapData)
|
||||
callbackMsg.Param = stockMsg
|
||||
stockMsg.CallbackMsg = callbackMsg
|
||||
}
|
||||
} else {
|
||||
var orderMsg *CallbackOrderMsg
|
||||
err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderMsg)
|
||||
callbackMsg.Param = orderMsg
|
||||
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderMsg); err == nil {
|
||||
callbackMsg.Param = orderMsg
|
||||
orderMsg.CallbackMsg = callbackMsg
|
||||
}
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
|
||||
@@ -13,10 +13,11 @@ import (
|
||||
func TestGetCallbackMsg(t *testing.T) {
|
||||
for _, strPair := range [][]string{
|
||||
[]string{
|
||||
CallbackMsgOrderAccounting,
|
||||
"newOrder",
|
||||
`
|
||||
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
|
||||
`,
|
||||
timestamp=2019-12-07+06%3A27%3A42&sign=565F552F7BD692664A24C0F869A2FEC5&v=1.0&jd_param_json=%7B%22billId%22%3A%221100001049331247%22%2C%22statusId%22%3A%2232000%22%2C%22timestamp%22%3A%222019-12-07+06%3A27%3A38%22%7D&token=77e703b7-7997-441b-a12a-2e522efb117a&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json
|
||||
|
||||
`,
|
||||
},
|
||||
[]string{
|
||||
CallbackMsgPushDeliveryStatus,
|
||||
@@ -32,10 +33,11 @@ func TestGetCallbackMsg(t *testing.T) {
|
||||
},
|
||||
} {
|
||||
callbackStr := strings.TrimSpace(strPair[1])
|
||||
callbackMsg, mapData, resp := GetCallbackMsg2(utils.BuildRequest(http.MethodPost, strPair[0], callbackStr, ""))
|
||||
callbackMsg, mapData, resp := GetCallbackMsg2(utils.BuildRequest(http.MethodPost, "/djsw/"+strPair[0], callbackStr, ""))
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
}
|
||||
sugarLogger.Debug(callbackMsg.MsgURL)
|
||||
resp = api.CheckCallbackValidation2(mapData, callbackMsg.Sign)
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
@@ -44,6 +46,26 @@ func TestGetCallbackMsg(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOrderCallbackMsg(t *testing.T) {
|
||||
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, token, msgURL, resp := GetCallbackMsg(utils.BuildRequest(http.MethodPost, "/djsw/"+CallbackMsgOrderAccounting, callbackStr, ""), false)
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
}
|
||||
sugarLogger.Debug(token)
|
||||
sugarLogger.Debug(msgURL)
|
||||
orderMsg, resp := api.GetOrderCallbackMsg(values, msgURL)
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
}
|
||||
sugarLogger.Debug(utils.Format4Output(orderMsg, false))
|
||||
sugarLogger.Debug(orderMsg.MsgURL)
|
||||
}
|
||||
|
||||
func TestSimulateSendNewOrderMsg(t *testing.T) {
|
||||
orderInfo := &CallbackOrderMsg{
|
||||
BillID: "813344594000041",
|
||||
|
||||
@@ -153,6 +153,10 @@ func (a *API) GetToken() (token string) {
|
||||
return a.token
|
||||
}
|
||||
|
||||
func (a *API) GetAppKey() (appKey string) {
|
||||
return a.appKey
|
||||
}
|
||||
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user