- use Request.Body directly when handling jd msg.
This commit is contained in:
@@ -2,7 +2,6 @@ package jdapi
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"git.rosy.net.cn/baseapi"
|
||||
@@ -78,8 +77,8 @@ func (a *API) CheckCallbackValidation(values url.Values) (callbackResponse *Call
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) getCommonOrderCallbackMsg(request *http.Request, msg interface{}, needDecode bool) (callbackResponse *CallbackResponse) {
|
||||
result, err := utils.HTTPRequest2Values(request, needDecode)
|
||||
func (a *API) getCommonOrderCallbackMsg(data []byte, msg interface{}, needDecode bool) (callbackResponse *CallbackResponse) {
|
||||
result, err := utils.HTTPBody2Values(data, needDecode)
|
||||
if err != nil {
|
||||
return FormatErrorResponse
|
||||
}
|
||||
@@ -95,20 +94,20 @@ func (a *API) getCommonOrderCallbackMsg(request *http.Request, msg interface{},
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) GetOrderCallbackMsg(request *http.Request) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
func (a *API) GetOrderCallbackMsg(data []byte) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
msg = new(CallbackOrderMsg)
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(request, msg, false)
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(data, msg, false)
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
func (a *API) GetOrderApplyCancelCallbackMsg(request *http.Request) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
func (a *API) GetOrderApplyCancelCallbackMsg(data []byte) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||
msg = new(CallbackOrderMsg)
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(request, msg, true)
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(data, msg, true)
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
func (a *API) GetOrderDeliveryCallbackMsg(request *http.Request) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) {
|
||||
func (a *API) GetOrderDeliveryCallbackMsg(data []byte) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) {
|
||||
msg = new(CallbackDeliveryStatusMsg)
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(request, msg, true)
|
||||
callbackResponse = a.getCommonOrderCallbackMsg(data, msg, true)
|
||||
return msg, callbackResponse
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ package jdapi
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.rosy.net.cn/baseapi"
|
||||
@@ -122,9 +120,7 @@ func TestOrderQuery(t *testing.T) {
|
||||
|
||||
func TestGetOrderCallbackMsg(t *testing.T) {
|
||||
callbackStr := "timestamp=2018-06-27+12%3A43%3A51&sign=84096ADFAB81E224D6231269AD1F6AAB&v=1.0&jd_param_json=%7B%22billId%22%3A%22815338526000221%22%2C%22statusId%22%3A%2232000%22%2C%22timestamp%22%3A%222018-06-27+12%3A42%3A34%22%7D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
||||
request := httptest.NewRequest("POST", "http://test.jxc4.com", strings.NewReader(callbackStr))
|
||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
result, resp := jdapi.GetOrderCallbackMsg(request)
|
||||
result, resp := jdapi.GetOrderCallbackMsg([]byte(callbackStr))
|
||||
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
@@ -134,9 +130,7 @@ func TestGetOrderCallbackMsg(t *testing.T) {
|
||||
|
||||
func TestGetOrderDeliveryCallbackMsg(t *testing.T) {
|
||||
callbackStr := "timestamp=2018-06-27%2B09%253A08%253A41&sign=54D9A8515BB5650DC3B81366E3286570&v=1.0&jd_param_json=%257B%2522createPin%2522%253A%2522JD_21134dac1c251d2%2522%252C%2522deliveryCarrierName%2522%253A%2522%25E8%25BE%25BE%25E8%25BE%25BE%25E4%25B8%2593%25E9%2580%2581%2522%252C%2522deliveryCarrierNo%2522%253A%25229966%2522%252C%2522deliveryStatus%2522%253A%252210%2522%252C%2522deliveryStatusTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522inputTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522orderId%2522%253A%2522815324888000121%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
||||
request := httptest.NewRequest("POST", "http://test.jxc4.com", strings.NewReader(callbackStr))
|
||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
result, resp := jdapi.GetOrderDeliveryCallbackMsg(request)
|
||||
result, resp := jdapi.GetOrderDeliveryCallbackMsg([]byte(callbackStr))
|
||||
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
@@ -146,9 +140,7 @@ func TestGetOrderDeliveryCallbackMsg(t *testing.T) {
|
||||
|
||||
func TestGetOrderApplyCancelCallbackMsg(t *testing.T) {
|
||||
callbackStr := "timestamp=2018-06-27%2B13%253A35%253A29&sign=F1398D658514D8864FFB56F5EF2C4792&v=1.0&jd_param_json=%257B%2522billId%2522%253A%2522815339944000322%2522%252C%2522remark%2522%253A%2522%25E5%2595%2586%25E5%25AE%25B6%25E7%25BC%25BA%25E8%25B4%25A7%2522%252C%2522statusId%2522%253A%252220030%2522%252C%2522timestamp%2522%253A%25222018-06-27%2B13%253A35%253A24%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
||||
request := httptest.NewRequest("POST", "http://test.jxc4.com", strings.NewReader(callbackStr))
|
||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
result, resp := jdapi.GetOrderApplyCancelCallbackMsg(request)
|
||||
result, resp := jdapi.GetOrderApplyCancelCallbackMsg([]byte(callbackStr))
|
||||
|
||||
if resp != nil {
|
||||
t.Fatal(resp)
|
||||
|
||||
@@ -181,13 +181,8 @@ func HTTPResponse2Json(response *http.Response) (map[string]interface{}, error)
|
||||
return jsonResult, nil
|
||||
}
|
||||
|
||||
func HTTPRequest2Values(request *http.Request, needDecode bool) (url.Values, error) {
|
||||
bodyData, err := ioutil.ReadAll(request.Body)
|
||||
if err != nil {
|
||||
baseapi.SugarLogger.Errorf("ioutil.ReadAll error:%v", err)
|
||||
return nil, err
|
||||
}
|
||||
bodyStr := string(bodyData)
|
||||
func HTTPBody2Values(data []byte, needDecode bool) (url.Values, error) {
|
||||
bodyStr := string(data)
|
||||
if needDecode {
|
||||
bodyStr1, err := url.QueryUnescape(bodyStr)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user