integrate-onpoint #5
|
@ -15,6 +15,8 @@ const (
|
||||||
|
|
||||||
webhookEventUpdateOrderStatus = "update_order_status"
|
webhookEventUpdateOrderStatus = "update_order_status"
|
||||||
webhookEventUpdateInventory = "update_inventory"
|
webhookEventUpdateInventory = "update_inventory"
|
||||||
|
|
||||||
|
CodeSuccess = "SUCCESS"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -1,14 +1,25 @@
|
||||||
package onpoint
|
package onpoint
|
||||||
|
|
||||||
import "fmt"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
// Error ...
|
// Error ...
|
||||||
type Error struct {
|
type Error struct {
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
Status string `json:"status"`
|
Code string `json:"code"`
|
||||||
|
Errors map[string][]string `json:"errors"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Error ...
|
// Error ...
|
||||||
func (e Error) Error() string {
|
func (e Error) Error() string {
|
||||||
return fmt.Sprintf("onpoint_err: status %s, message: %s", e.Status, e.Message)
|
msg := fmt.Sprintf("onpoint_err: code %s, message: %s", e.Code, e.Message)
|
||||||
|
if len(e.Errors) > 0 {
|
||||||
|
msg += "\ndetail: "
|
||||||
|
for k, v := range e.Errors {
|
||||||
|
msg += fmt.Sprintf("field %s - error %s", k, strings.Join(v, ","))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msg
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,39 +12,31 @@ import (
|
||||||
|
|
||||||
// CreateOrderRequest ...
|
// CreateOrderRequest ...
|
||||||
type CreateOrderRequest struct {
|
type CreateOrderRequest struct {
|
||||||
PartnerOrderCode string `json:"partner_order_code"`
|
OrderCode string `json:"order_code"`
|
||||||
OrderDate time.Time `json:"order_date"`
|
OrderDate time.Time `json:"order_date"`
|
||||||
ChannelCode string `json:"channel_code"`
|
PickupLocationCode string `json:"pickup_location_code"`
|
||||||
FullName string `json:"full_name"`
|
Note string `json:"note"`
|
||||||
Email string `json:"email"`
|
SubtotalPrice int `json:"subtotal_price"`
|
||||||
Phone string `json:"phone"`
|
TotalDiscounts int `json:"total_discounts"`
|
||||||
Address string `json:"address"`
|
TotalPrice int `json:"total_price"`
|
||||||
DistrictCode string `json:"district_code"`
|
PaymentMethod string `json:"payment_method"`
|
||||||
WardCode string `json:"ward_code"`
|
Items []OrderItem `json:"items"`
|
||||||
ProvinceCode string `json:"province_code"`
|
|
||||||
Note string `json:"note"`
|
|
||||||
SubtotalPrice int `json:"subtotal_price"`
|
|
||||||
ShippingFee int `json:"shipping_fee"`
|
|
||||||
TotalDiscounts int `json:"total_discounts"`
|
|
||||||
TotalPrice int `json:"total_price"`
|
|
||||||
PaymentMethod string `json:"payment_method"`
|
|
||||||
DeliveryPlatform string `json:"delivery_platform"`
|
|
||||||
Items []OrderItem `json:"items"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// OrderItem ...
|
// OrderItem ...
|
||||||
type OrderItem struct {
|
type OrderItem struct {
|
||||||
SellingPrice int `json:"selling_price"`
|
SellingPrice int `json:"selling_price"`
|
||||||
Quantity int `json:"quantity"`
|
Quantity int `json:"quantity"`
|
||||||
Uom string `json:"uom"`
|
Uom string `json:"uom"`
|
||||||
Amount int `json:"amount"`
|
Amount int `json:"amount"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
PartnerSku string `json:"partner_sku"`
|
PartnerSku string `json:"sku"`
|
||||||
|
DiscountPrice int `json:"discount_price"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateOrderDeliveryRequest ...
|
// UpdateOrderDeliveryRequest ...
|
||||||
type UpdateOrderDeliveryRequest struct {
|
type UpdateOrderDeliveryRequest struct {
|
||||||
OrderNo string `json:"order_no"` // required
|
OrderCode string `json:"order_code"` // required
|
||||||
DeliveryPlatform string `json:"delivery_platform"` // required
|
DeliveryPlatform string `json:"delivery_platform"` // required
|
||||||
DeliveryTrackingNumber string `json:"delivery_tracking_number"`
|
DeliveryTrackingNumber string `json:"delivery_tracking_number"`
|
||||||
ShippingLabel string `json:"shipping_label"`
|
ShippingLabel string `json:"shipping_label"`
|
||||||
|
@ -52,7 +44,7 @@ type UpdateOrderDeliveryRequest struct {
|
||||||
|
|
||||||
// CancelOrderRequest ...
|
// CancelOrderRequest ...
|
||||||
type CancelOrderRequest struct {
|
type CancelOrderRequest struct {
|
||||||
OrderNo string `json:"order_no"`
|
OrderNo string `json:"order_code"`
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,34 +1,18 @@
|
||||||
package onpoint
|
package onpoint
|
||||||
|
|
||||||
import "time"
|
|
||||||
|
|
||||||
// CreateOrderResponse ...
|
// CreateOrderResponse ...
|
||||||
type CreateOrderResponse struct {
|
type CreateOrderResponse struct {
|
||||||
PartnerOrderCode string `json:"partner_order_code"`
|
OrderCode string `json:"order_code"`
|
||||||
OrderNo string `json:"order_no"`
|
OnpointOrderCode string `json:"onpoint_order_code"`
|
||||||
OrderDate time.Time `json:"order_date"`
|
OrderDate string `json:"order_date"`
|
||||||
ChannelCode string `json:"channel_code"`
|
|
||||||
FullName string `json:"full_name"`
|
|
||||||
Email string `json:"email"`
|
|
||||||
Phone string `json:"phone"`
|
|
||||||
Address string `json:"address"`
|
|
||||||
FullAddress string `json:"full_address"`
|
|
||||||
District string `json:"district"`
|
|
||||||
Ward string `json:"ward"`
|
|
||||||
Province string `json:"province"`
|
|
||||||
DistrictCode string `json:"district_code"`
|
|
||||||
WardCode string `json:"ward_code"`
|
|
||||||
ProvinceCode string `json:"province_code"`
|
|
||||||
Note string `json:"note"`
|
Note string `json:"note"`
|
||||||
SubtotalPrice int `json:"subtotal_price"`
|
SubtotalPrice int `json:"subtotal_price"`
|
||||||
ShippingFee int `json:"shipping_fee"`
|
|
||||||
TotalDiscounts int `json:"total_discounts"`
|
TotalDiscounts int `json:"total_discounts"`
|
||||||
TotalPrice int `json:"total_price"`
|
TotalPrice int `json:"total_price"`
|
||||||
PaymentMethod string `json:"payment_method"`
|
PaymentMethod string `json:"payment_method"`
|
||||||
DeliveryPlatform string `json:"delivery_platform"`
|
DeliveryPlatform string `json:"delivery_platform"`
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
UpdatedAt time.Time `json:"updated_at"`
|
UpdatedAt string `json:"updated_at"`
|
||||||
InsertedAt time.Time `json:"inserted_at"`
|
|
||||||
Items []OrderItem `json:"items"`
|
Items []OrderItem `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ func (c *Client) CreateOrder(p CreateOrderRequest) (*CreateOrderResponse, error)
|
||||||
r model.CommunicationHttpResponse
|
r model.CommunicationHttpResponse
|
||||||
errRes Error
|
errRes Error
|
||||||
dataRes struct {
|
dataRes struct {
|
||||||
|
Code string `json:"code"`
|
||||||
Data CreateOrderResponse `json:"data"`
|
Data CreateOrderResponse `json:"data"`
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -150,43 +151,6 @@ func (c *Client) CancelOrder(p CancelOrderRequest) (*CancelOrderResponse, error)
|
||||||
return &dataRes.Data, nil
|
return &dataRes.Data, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetChannels ...
|
|
||||||
func (c *Client) GetChannels() ([]ChannelResponse, error) {
|
|
||||||
url := c.getBaseURL() + apiPathGetChannels
|
|
||||||
natsPayload := model.CommunicationRequestHttp{
|
|
||||||
ResponseImmediately: true,
|
|
||||||
Payload: model.HttpRequest{
|
|
||||||
URL: url,
|
|
||||||
Method: http.MethodGet,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
var (
|
|
||||||
r model.CommunicationHttpResponse
|
|
||||||
errRes Error
|
|
||||||
dataRes struct {
|
|
||||||
Data []ChannelResponse `json:"data"`
|
|
||||||
}
|
|
||||||
)
|
|
||||||
if err := c.requestHttpViaNats(natsPayload, &r); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res := r.Response
|
|
||||||
if res == nil {
|
|
||||||
return nil, fmt.Errorf("onpoint.Client.GetChannels: empty_response")
|
|
||||||
}
|
|
||||||
if res.StatusCode >= http.StatusBadRequest {
|
|
||||||
if err := r.ParseResponseData(&errRes); err != nil {
|
|
||||||
return nil, fmt.Errorf("onpoint.Client.GetChannels: parse_response_err: %v", err)
|
|
||||||
}
|
|
||||||
return nil, errRes
|
|
||||||
}
|
|
||||||
if err := r.ParseResponseData(&dataRes); err != nil {
|
|
||||||
return nil, fmt.Errorf("onpoint.Client.GetChannels: parse_response_data: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return dataRes.Data, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Client) requestHttpViaNats(data model.CommunicationRequestHttp, res interface{}) error {
|
func (c *Client) requestHttpViaNats(data model.CommunicationRequestHttp, res interface{}) error {
|
||||||
ec, err := c.natsClient.NewJSONEncodedConn()
|
ec, err := c.natsClient.NewJSONEncodedConn()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue