Added custom URL support (DM)

This commit is contained in:
2026-01-08 16:36:32 +03:00
parent b70e95ac5c
commit d9bfa5ff7f
4 changed files with 34 additions and 12 deletions

View File

@@ -3,15 +3,26 @@ package api
import "resty.dev/v3" import "resty.dev/v3"
type Client struct { type Client struct {
token string token string
resty *resty.Client resty *resty.Client
apiBaseURL string apiBaseURL string
fiscalEndpoint string
} }
func NewClient(token string) *Client { func NewClient(token string) *Client {
return &Client{ return &Client{
token: token, token: token,
resty: resty.New(), resty: resty.New(),
apiBaseURL: "https://kasa.vchasno.ua/api/v3", apiBaseURL: "https://kasa.vchasno.ua/api/v3",
fiscalEndpoint: "/fiscal/execute",
}
}
func NewDMClient(token string, dmURL string) *Client {
return &Client{
token: token,
resty: resty.New(),
apiBaseURL: dmURL,
fiscalEndpoint: "/dm/fiscal",
} }
} }

View File

@@ -18,7 +18,7 @@ func (c *Client) executeRequest(ctx context.Context, request FiscalRequest, resp
SetContext(ctx). SetContext(ctx).
SetHeader("Authorization", c.token). SetHeader("Authorization", c.token).
SetBody(reqJson). SetBody(reqJson).
Post(c.apiBaseURL + "/fiscal/execute") Post(c.apiBaseURL + c.fiscalEndpoint)
if err != nil { if err != nil {
return fmt.Errorf("request failed: %w", err) return fmt.Errorf("request failed: %w", err)

View File

@@ -2,6 +2,7 @@ package api
type FiscalRequest struct { type FiscalRequest struct {
Source string `json:"source"` Source string `json:"source"`
Device string `json:"device,omitempty"`
Userinfo Userinfo `json:"userinfo,omitempty"` Userinfo Userinfo `json:"userinfo,omitempty"`
Fiscal Fiscal `json:"fiscal"` Fiscal Fiscal `json:"fiscal"`
} }

View File

@@ -25,11 +25,13 @@ type Client struct {
defaults *DefaultParams defaults *DefaultParams
} }
// !! If you are using Device Manager, set the CustomURL to "http(s)://HOST/api/v3".
type Config struct { type Config struct {
Token string Token string
Cashier string Cashier string
Source string Source string
Defaults *DefaultParams Defaults *DefaultParams
CustomURL string
} }
type DefaultParams struct { type DefaultParams struct {
@@ -65,8 +67,16 @@ func NewClient(config Config) *Client {
defaults.DefaultTimeout = 30 * time.Second defaults.DefaultTimeout = 30 * time.Second
} }
apicfg := &api.Client{}
if config.CustomURL == "" {
apicfg = api.NewClient(config.Token)
} else {
apicfg = api.NewDMClient(config.Token, config.CustomURL)
}
return &Client{ return &Client{
api: api.NewClient(config.Token), api: apicfg,
cashier: config.Cashier, cashier: config.Cashier,
source: config.Source, source: config.Source,
defaults: defaults, defaults: defaults,