- ebai callback.
This commit is contained in:
65
platformapi/ebaiapi/callback.go
Normal file
65
platformapi/ebaiapi/callback.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package ebaiapi
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"git.rosy.net.cn/baseapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
)
|
||||
|
||||
type CallbackResponse ResponseResult
|
||||
|
||||
type CallbackMsg struct {
|
||||
Cmd string
|
||||
TimeStamp int64
|
||||
Body map[string]interface{}
|
||||
}
|
||||
|
||||
func Err2CallbackResponse(err error, data interface{}) *CallbackResponse {
|
||||
if err == nil {
|
||||
return &CallbackResponse{
|
||||
Error: "success",
|
||||
ErrNo: 0,
|
||||
Data: data,
|
||||
}
|
||||
}
|
||||
return &CallbackResponse{
|
||||
Error: fmt.Sprintf("error:%v, data:%v", err, data),
|
||||
ErrNo: -1,
|
||||
Data: data,
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) unmarshalData(data []byte, msg interface{}) (callbackResponse *CallbackResponse) {
|
||||
err := utils.UnmarshalUseNumber(data, msg)
|
||||
if err != nil {
|
||||
return Err2CallbackResponse(err, nil)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) CheckCallbackValidation(request *http.Request) (callbackResponse *CallbackResponse) {
|
||||
sign := a.signParams(request.PostForm)
|
||||
if sign != request.FormValue(signKey) {
|
||||
msg := fmt.Sprintf("Signature is not ok, mine:%v, get:%v", sign, request.FormValue(signKey))
|
||||
baseapi.SugarLogger.Info(msg)
|
||||
return Err2CallbackResponse(errors.New(msg), nil)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackResponse *CallbackResponse) {
|
||||
request.ParseForm()
|
||||
if callbackResponse = a.CheckCallbackValidation(request); callbackResponse != nil {
|
||||
return nil, callbackResponse
|
||||
}
|
||||
msg = new(CallbackMsg)
|
||||
if callbackResponse = a.unmarshalData([]byte(request.FormValue("body")), &msg.Body); callbackResponse != nil {
|
||||
return nil, callbackResponse
|
||||
}
|
||||
msg.Cmd = request.FormValue("cmd")
|
||||
msg.TimeStamp = utils.MustInterface2Int64(request.FormValue("timestamp"))
|
||||
return msg, nil
|
||||
}
|
||||
Reference in New Issue
Block a user