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

@@ -6,6 +6,7 @@ type Client struct {
token string
resty *resty.Client
apiBaseURL string
fiscalEndpoint string
}
func NewClient(token string) *Client {
@@ -13,5 +14,15 @@ func NewClient(token string) *Client {
token: token,
resty: resty.New(),
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).
SetHeader("Authorization", c.token).
SetBody(reqJson).
Post(c.apiBaseURL + "/fiscal/execute")
Post(c.apiBaseURL + c.fiscalEndpoint)
if err != nil {
return fmt.Errorf("request failed: %w", err)

View File

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

View File

@@ -25,11 +25,13 @@ type Client struct {
defaults *DefaultParams
}
// !! If you are using Device Manager, set the CustomURL to "http(s)://HOST/api/v3".
type Config struct {
Token string
Cashier string
Source string
Defaults *DefaultParams
CustomURL string
}
type DefaultParams struct {
@@ -65,8 +67,16 @@ func NewClient(config Config) *Client {
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{
api: api.NewClient(config.Token),
api: apicfg,
cashier: config.Cashier,
source: config.Source,
defaults: defaults,