66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package mtwmapi
|
||
|
||
import (
|
||
"net/http"
|
||
"net/url"
|
||
"strings"
|
||
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
)
|
||
|
||
const (
|
||
MsgTypeWaybillStatus = "waybillStatus"
|
||
MsgTypeNewOrder = "newOrder"
|
||
MsgTypeOrderAccepted = "orderAccepted"
|
||
MsgTypeOrderFinished = "orderFinished"
|
||
MsgTypeOrderFinancial = "orderFinancial"
|
||
MsgTypeOrderCanceled = "orderCancled"
|
||
MsgTypeUserUrgeOrder = "userUrgeOrder"
|
||
MsgTypePrivateNumberDowngrade = "numberDowngrade"
|
||
MsgTypeOrderModified = "orderModified"
|
||
MsgTypeOrderRefund = "orderRefund"
|
||
MsgTypeOrderPartialRefund = "orderPartialRefund"
|
||
)
|
||
|
||
type CallbackResponse struct {
|
||
Data string `json:"data"`
|
||
}
|
||
|
||
// !!!特别注意,Data中的数据
|
||
type CallbackMsg struct {
|
||
Data url.Values
|
||
Cmd string
|
||
}
|
||
|
||
var (
|
||
SuccessResponse = &CallbackResponse{Data: "ok"}
|
||
SignatureIsNotOk = &CallbackResponse{Data: "sign failed"}
|
||
)
|
||
|
||
func Err2CallbackResponse(err error, data string) *CallbackResponse {
|
||
if err == nil {
|
||
return SuccessResponse
|
||
}
|
||
if data == "" {
|
||
data = err.Error()
|
||
}
|
||
return &CallbackResponse{
|
||
Data: data,
|
||
}
|
||
}
|
||
|
||
func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackResponse *CallbackResponse) {
|
||
data := utils.URLValues2Map(request.PostForm)
|
||
fullURL := strings.TrimRight(a.callbackURL+request.URL.Path, "/")
|
||
sign := a.signParams(fullURL+"?", data)
|
||
if sign != data[signKey] {
|
||
return nil, SignatureIsNotOk
|
||
}
|
||
cmd := strings.Trim(request.URL.EscapedPath(), "/")
|
||
msg = &CallbackMsg{
|
||
Cmd: cmd,
|
||
Data: request.PostForm,
|
||
}
|
||
return msg, nil
|
||
}
|