+CallbackMsgVenderAuditApplyCancelOrder

This commit is contained in:
gazebo
2019-12-17 15:50:04 +08:00
parent 4085be8370
commit 8e928cda16
2 changed files with 16 additions and 111 deletions

View File

@@ -1,14 +1,11 @@
package jdapi
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strings"
"git.rosy.net.cn/baseapi"
"git.rosy.net.cn/baseapi/platformapi"
"git.rosy.net.cn/baseapi/utils"
)
@@ -37,6 +34,9 @@ const (
OrderStatusFinished = "90000"
OrderStatusCanceled = "20020"
OrderStatusVenderAgreeCancel = "20031" // 商家同意取消申请
OrderStatusVenderRejctCancel = "20032" // 商家驳回取消申请
OrderStatusUserApplyCancel = "20030" // 这个其实不是一个状态,是一个动作
OrderStatusLocked = "20010"
OrderStatusUnlocked = "20050"
@@ -87,10 +87,11 @@ const (
const (
// 订单
CallbackMsgDeliveryCarrierModify = "deliveryCarrierModify" // 订单转自送消息(是指转自送成功后,用处不大)
CallbackMsgOrderAccounting = "orderAccounting" // 订单应结消息
CallbackMsgApplyCancelOrder = "applyCancelOrder"
CallbackMsgPushDeliveryStatus = "pushDeliveryStatus"
CallbackMsgDeliveryCarrierModify = "deliveryCarrierModify" // 订单转自送消息(是指转自送成功后,用处不大)
CallbackMsgOrderAccounting = "orderAccounting" // 订单应结消息
CallbackMsgApplyCancelOrder = "applyCancelOrder"
CallbackMsgPushDeliveryStatus = "pushDeliveryStatus"
CallbackMsgVenderAuditApplyCancelOrder = "venderAuditApplyCancelOrder"
// 账务
CallbackMsgEndOrderFinance = "endOrderFinance" // 订单金额拆分完成消息
@@ -183,9 +184,10 @@ var (
FormatErrorResponse = &CallbackResponse{Code: "-1", Msg: "failed", Data: ""}
needDecodeMap = map[string]bool{
CallbackMsgApplyCancelOrder: true,
CallbackMsgPushDeliveryStatus: true,
CallbackMsgStockIsHave: true,
CallbackMsgApplyCancelOrder: true,
CallbackMsgPushDeliveryStatus: true,
CallbackMsgStockIsHave: true,
CallbackMsgVenderAuditApplyCancelOrder: true,
}
)
@@ -200,83 +202,6 @@ func Err2CallbackResponse(err error, data string) *CallbackResponse {
}
}
func unmarshalData(strData string, msg interface{}) (callbackResponse *CallbackResponse) {
err := utils.UnmarshalUseNumber([]byte(strData), msg)
if err != nil {
return &CallbackResponse{
Code: ResponseCodeAbnormalParam,
Msg: fmt.Sprintf(platformapi.ErrStrUnmarshalError, strData, err),
Data: strData,
}
}
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)
if sign != values.Get(signKey) {
baseapi.SugarLogger.Infof("Signature is not ok, mine:%v, get:%v", sign, values.Get(signKey))
return FormatErrorResponse
}
return nil
}
func (a *API) getCommonOrderCallbackMsg(values url.Values, msg interface{}) (callbackResponse *CallbackResponse) {
if callbackResponse = a.CheckCallbackValidation(values); callbackResponse != nil {
return callbackResponse
}
jdParamJSON := values.Get(paramJson)
// baseapi.SugarLogger.Debug(jdParamJSON)
if callbackResponse = unmarshalData(jdParamJSON, msg); callbackResponse != nil {
return callbackResponse
}
return nil
}
func (a *API) GetOrderCallbackMsg(values url.Values, msgURL string) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
msg.CallbackMsg = &CallbackMsg{
MsgURL: msgURL,
}
}
return msg, callbackResponse
}
func (a *API) GetOrderDeliveryCallbackMsg(values url.Values, msgURL string) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) {
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
msg.CallbackMsg = &CallbackMsg{
MsgURL: msgURL,
}
}
return msg, callbackResponse
}
func (a *API) GetStoreStockCallbackMsg(values url.Values, msgURL string) (msg *CallbackStoreStockMsg, callbackResponse *CallbackResponse) {
var tmpMsg map[string]interface{}
callbackResponse = a.getCommonOrderCallbackMsg(values, &tmpMsg)
if callbackResponse == nil {
msg = map2StockCallbackMsg(tmpMsg)
msg.CallbackMsg = &CallbackMsg{
MsgURL: msgURL,
}
}
return msg, callbackResponse
}
func map2StockCallbackMsg(mapData map[string]interface{}) (msg *CallbackStoreStockMsg) {
msg = &CallbackStoreStockMsg{
StationNo: utils.Interface2String(mapData["stationNo"]),
@@ -298,7 +223,7 @@ func getMsgURLFromRequest(request *http.Request) (msgURL string) {
return msgURL
}
func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, mapData map[string]interface{}, callbackResponse *CallbackResponse) {
func GetCallbackMsg(request *http.Request) (callbackMsg *CallbackMsg, mapData map[string]interface{}, callbackResponse *CallbackResponse) {
msgURL := getMsgURLFromRequest(request)
data, err := ioutil.ReadAll(request.Body)
if err != nil {
@@ -338,7 +263,7 @@ func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, mapData m
return callbackMsg, mapData, callbackResponse
}
func (a *API) CheckCallbackValidation2(mapData map[string]interface{}, signInData string) (callbackResponse *CallbackResponse) {
func (a *API) CheckCallbackValidation(mapData map[string]interface{}, signInData string) (callbackResponse *CallbackResponse) {
sign := a.signParams(mapData)
if sign != signInData {
baseapi.SugarLogger.Infof("Signature is not ok, mine:%s, signInData:%s", sign, signInData)

View File

@@ -33,12 +33,12 @@ func TestGetCallbackMsg(t *testing.T) {
},
} {
callbackStr := strings.TrimSpace(strPair[1])
callbackMsg, mapData, resp := GetCallbackMsg2(utils.BuildRequest(http.MethodPost, "/djsw/"+strPair[0], callbackStr, ""))
callbackMsg, mapData, resp := GetCallbackMsg(utils.BuildRequest(http.MethodPost, "/djsw/"+strPair[0], callbackStr, ""))
if resp != nil {
t.Fatal(resp)
}
sugarLogger.Debug(callbackMsg.MsgURL)
resp = api.CheckCallbackValidation2(mapData, callbackMsg.Sign)
resp = api.CheckCallbackValidation(mapData, callbackMsg.Sign)
if resp != nil {
t.Fatal(resp)
}
@@ -46,26 +46,6 @@ 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",