// 增加商品 func (c *Client) MerchantProductAdd(_product *product.Product) (productId string, err error) { if _product == nil { err = errors.New("_product == nil") return } _product.Id = "" // 这个时候还没有 product id token, err := c.Token() if err != nil { return } _url := merchantProductAddURL(token) var result struct { Error ProductId string `json:"product_id"` } if err = c.postJSON(_url, _product, &result); err != nil { return } if result.ErrCode != 0 { err = &result.Error return } productId = result.ProductId return }
// 增加商品 // NOTE: 无需指定 Id 和 Status 字段 func (c *Client) MerchantProductAdd(_product *product.Product) (productId string, err error) { if _product == nil { err = errors.New("_product == nil") return } // 无需指定 Id 和 Status 字段 _product.Id = "" _product.Status = 0 var result struct { Error ProductId string `json:"product_id"` } hasRetry := false RETRY: token, err := c.Token() if err != nil { return } _url := merchantProductAddURL(token) if err = c.postJSON(_url, _product, &result); err != nil { return } switch result.ErrCode { case errCodeOK: productId = result.ProductId return case errCodeTimeout: if !hasRetry { hasRetry = true timeoutRetryWait() goto RETRY } fallthrough default: err = &result.Error return } }