优化jdapi.CallbackMsg
This commit is contained in:
@@ -112,7 +112,7 @@ type CallbackResponse struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CallbackMsg struct {
|
type CallbackMsg struct {
|
||||||
MsgURL string `json:"-"`
|
MsgURL string `json:"msgURL"`
|
||||||
|
|
||||||
AppKey string `json:"app_key"`
|
AppKey string `json:"app_key"`
|
||||||
Token string `json:"token"`
|
Token string `json:"token"`
|
||||||
@@ -122,11 +122,11 @@ type CallbackMsg struct {
|
|||||||
V string `json:"v"`
|
V string `json:"v"`
|
||||||
|
|
||||||
JdParamJSON string `json:"jd_param_json"`
|
JdParamJSON string `json:"jd_param_json"`
|
||||||
Param interface{} `json:"param"`
|
Param interface{} `json:"-"` // 这里json必须是-,否则会导致json encode时死递归
|
||||||
}
|
}
|
||||||
|
|
||||||
type CallbackOrderMsg struct {
|
type CallbackOrderMsg struct {
|
||||||
MsgURL string `json:"msgURL"`
|
*CallbackMsg
|
||||||
BillID string `json:"billId"`
|
BillID string `json:"billId"`
|
||||||
OutBillID string `json:"outBillId"`
|
OutBillID string `json:"outBillId"`
|
||||||
StatusID string `json:"statusId"`
|
StatusID string `json:"statusId"`
|
||||||
@@ -135,6 +135,7 @@ type CallbackOrderMsg struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CallbackDeliveryStatusMsg struct {
|
type CallbackDeliveryStatusMsg struct {
|
||||||
|
*CallbackMsg
|
||||||
OrderID string `json:"orderId"`
|
OrderID string `json:"orderId"`
|
||||||
DeliveryStatusTime string `json:"deliveryStatusTime"`
|
DeliveryStatusTime string `json:"deliveryStatusTime"`
|
||||||
DeliveryManNo string `json:"deliveryManNo"`
|
DeliveryManNo string `json:"deliveryManNo"`
|
||||||
@@ -151,6 +152,7 @@ type CallbackDeliveryStatusMsg struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CallbackStoreStockMsg struct {
|
type CallbackStoreStockMsg struct {
|
||||||
|
*CallbackMsg
|
||||||
StationNo string `json:"stationNo"`
|
StationNo string `json:"stationNo"`
|
||||||
SkuID int64 `json:"skuId"`
|
SkuID int64 `json:"skuId"`
|
||||||
Have bool `json:"have"`
|
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) {
|
func (a *API) GetOrderCallbackMsg(values url.Values, msgURL string) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||||
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
|
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
|
||||||
msg.MsgURL = msgURL
|
msg.CallbackMsg = &CallbackMsg{
|
||||||
|
MsgURL: msgURL,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return msg, callbackResponse
|
return msg, callbackResponse
|
||||||
}
|
}
|
||||||
@@ -302,17 +306,23 @@ func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, mapData m
|
|||||||
callbackMsg.MsgURL = msgURL
|
callbackMsg.MsgURL = msgURL
|
||||||
if msgURL == CallbackMsgDeliveryCarrierModify {
|
if msgURL == CallbackMsgDeliveryCarrierModify {
|
||||||
var deliveryMsg *CallbackDeliveryStatusMsg
|
var deliveryMsg *CallbackDeliveryStatusMsg
|
||||||
err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &deliveryMsg)
|
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &deliveryMsg); err == nil {
|
||||||
callbackMsg.Param = deliveryMsg
|
callbackMsg.Param = deliveryMsg
|
||||||
|
deliveryMsg.CallbackMsg = callbackMsg
|
||||||
|
}
|
||||||
} else if msgURL == CallbackMsgStockIsHave {
|
} else if msgURL == CallbackMsgStockIsHave {
|
||||||
var mapData map[string]interface{}
|
var mapData map[string]interface{}
|
||||||
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &mapData); err == nil {
|
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &mapData); err == nil {
|
||||||
callbackMsg.Param = map2StockCallbackMsg(mapData)
|
stockMsg := map2StockCallbackMsg(mapData)
|
||||||
|
callbackMsg.Param = stockMsg
|
||||||
|
stockMsg.CallbackMsg = callbackMsg
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
var orderMsg *CallbackOrderMsg
|
var orderMsg *CallbackOrderMsg
|
||||||
err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderMsg)
|
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderMsg); err == nil {
|
||||||
callbackMsg.Param = orderMsg
|
callbackMsg.Param = orderMsg
|
||||||
|
orderMsg.CallbackMsg = callbackMsg
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -13,10 +13,11 @@ import (
|
|||||||
func TestGetCallbackMsg(t *testing.T) {
|
func TestGetCallbackMsg(t *testing.T) {
|
||||||
for _, strPair := range [][]string{
|
for _, strPair := range [][]string{
|
||||||
[]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{
|
[]string{
|
||||||
CallbackMsgPushDeliveryStatus,
|
CallbackMsgPushDeliveryStatus,
|
||||||
@@ -32,10 +33,11 @@ func TestGetCallbackMsg(t *testing.T) {
|
|||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
callbackStr := strings.TrimSpace(strPair[1])
|
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 {
|
if resp != nil {
|
||||||
t.Fatal(resp)
|
t.Fatal(resp)
|
||||||
}
|
}
|
||||||
|
sugarLogger.Debug(callbackMsg.MsgURL)
|
||||||
resp = api.CheckCallbackValidation2(mapData, callbackMsg.Sign)
|
resp = api.CheckCallbackValidation2(mapData, callbackMsg.Sign)
|
||||||
if resp != nil {
|
if resp != nil {
|
||||||
t.Fatal(resp)
|
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) {
|
func TestSimulateSendNewOrderMsg(t *testing.T) {
|
||||||
orderInfo := &CallbackOrderMsg{
|
orderInfo := &CallbackOrderMsg{
|
||||||
BillID: "813344594000041",
|
BillID: "813344594000041",
|
||||||
|
|||||||
@@ -153,6 +153,10 @@ func (a *API) GetToken() (token string) {
|
|||||||
return a.token
|
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) {
|
func (a *API) AccessAPI2(apiStr string, jdParams map[string]interface{}, traceInfo string) (retVal map[string]interface{}, err error) {
|
||||||
params := make(map[string]interface{})
|
params := make(map[string]interface{})
|
||||||
params["v"] = "1.0"
|
params["v"] = "1.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user