From 17333df7afbd4243f966d8b282e3b76879614c7f Mon Sep 17 00:00:00 2001 From: Stephan D Date: Fri, 12 Dec 2025 11:05:12 +0100 Subject: [PATCH] fx/ingestor currencies map fixed --- api/billing/fees/go.mod | 2 +- api/billing/fees/go.sum | 4 +- api/fx/ingestor/go.mod | 2 +- api/fx/ingestor/go.sum | 4 +- .../ingestor/internal/market/cbr/connector.go | 88 +++++++++---------- api/fx/oracle/go.mod | 2 +- api/fx/oracle/go.sum | 4 +- api/fx/storage/go.mod | 2 +- api/fx/storage/go.sum | 4 +- api/gateway/chain/go.mod | 2 +- api/gateway/chain/go.sum | 4 +- api/gateway/mntx/go.mod | 2 +- api/gateway/mntx/go.sum | 4 +- api/ledger/go.mod | 2 +- api/ledger/go.sum | 4 +- api/notification/go.mod | 2 +- api/notification/go.sum | 4 +- api/payments/orchestrator/go.mod | 2 +- api/payments/orchestrator/go.sum | 4 +- api/pkg/go.mod | 2 +- api/pkg/go.sum | 4 +- api/pkg/model/cryptoaddress.go | 7 +- api/pkg/model/currency.go | 14 +-- api/server/go.mod | 2 +- api/server/go.sum | 4 +- .../internal/server/accountapiimp/signup.go | 3 +- 26 files changed, 86 insertions(+), 92 deletions(-) diff --git a/api/billing/fees/go.mod b/api/billing/fees/go.mod index c25fd37..3d1eff9 100644 --- a/api/billing/fees/go.mod +++ b/api/billing/fees/go.mod @@ -50,5 +50,5 @@ require ( golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 ) diff --git a/api/billing/fees/go.sum b/api/billing/fees/go.sum index e0b6426..9b2bb2e 100644 --- a/api/billing/fees/go.sum +++ b/api/billing/fees/go.sum @@ -216,8 +216,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/fx/ingestor/go.mod b/api/fx/ingestor/go.mod index 67902a3..fc14292 100644 --- a/api/fx/ingestor/go.mod +++ b/api/fx/ingestor/go.mod @@ -51,5 +51,5 @@ require ( golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/grpc v1.77.0 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/api/fx/ingestor/go.sum b/api/fx/ingestor/go.sum index e0b6426..9b2bb2e 100644 --- a/api/fx/ingestor/go.sum +++ b/api/fx/ingestor/go.sum @@ -216,8 +216,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/fx/ingestor/internal/market/cbr/connector.go b/api/fx/ingestor/internal/market/cbr/connector.go index 1fb79eb..1aaff8e 100644 --- a/api/fx/ingestor/internal/market/cbr/connector.go +++ b/api/fx/ingestor/internal/market/cbr/connector.go @@ -214,16 +214,13 @@ func (c *cbrConnector) refreshDirectory() error { var directory valuteDirectory if err := decoder.Decode(&directory); err != nil { - c.logger.Warn( - "CBR directory decode failed", - zap.Error(err), - zap.String("endpoint", endpoint), - ) + c.logger.Warn("CBR directory decode failed", zap.Error(err), zap.String("endpoint", endpoint)) return merrors.InternalWrap(err, "cbr: decode directory") } - mapping, err := buildValuteMapping(directory.Items) + mapping, err := buildValuteMapping(c.logger.Named("mapper"), directory.Items) if err != nil { + c.logger.Warn("Failed to build currencies mapping", zap.Error(err), zap.String("endpoint", endpoint)) return err } @@ -235,23 +232,22 @@ func (c *cbrConnector) refreshDirectory() error { func (c *cbrConnector) fetchDailyRate(ctx context.Context, valute valuteInfo) (string, error) { endpoint, err := c.buildURL(c.dailyPath, nil) if err != nil { + c.logger.Warn("Failed to build daily fetch URL", zap.Error(err), zap.String("path", c.dailyPath)) return "", err } req, err := c.http.NewRequest(ctx, http.MethodGet, endpoint) if err != nil { + c.logger.Warn("Failed to request daily rate", zap.Error(err), zap.String("endpoint", endpoint)) return "", merrors.InternalWrap(err, "cbr: build daily request") } resp, err := c.http.Do(req) if err != nil { - c.logger.Warn( - "CBR daily request failed", - zap.String("currency", valute.ISOCharCode), - zap.String("endpoint", endpoint), - zap.String("referer", c.http.headerValue("Referer")), + c.logger.Warn("CBR daily request failed", + zap.Error(err), zap.String("currency", valute.ISOCharCode), + zap.String("endpoint", endpoint), zap.String("referer", c.http.headerValue("Referer")), zap.String("user_agent", c.http.headerValue("User-Agent")), - zap.Error(err), ) return "", merrors.InternalWrap(err, "cbr: daily request failed") } @@ -259,10 +255,8 @@ func (c *cbrConnector) fetchDailyRate(ctx context.Context, valute valuteInfo) (s if resp.StatusCode != http.StatusOK { c.logger.Warn( - "CBR daily returned non-OK status", - zap.Int("status", resp.StatusCode), - zap.String("currency", valute.ISOCharCode), - zap.String("endpoint", endpoint), + "CBR daily returned non-OK status", zap.Int("status", resp.StatusCode), + zap.String("currency", valute.ISOCharCode), zap.String("endpoint", endpoint), ) return "", merrors.Internal("cbr: unexpected status " + strconv.Itoa(resp.StatusCode)) } @@ -272,11 +266,8 @@ func (c *cbrConnector) fetchDailyRate(ctx context.Context, valute valuteInfo) (s var payload dailyRates if err := decoder.Decode(&payload); err != nil { - c.logger.Warn( - "CBR daily decode failed", - zap.String("currency", valute.ISOCharCode), - zap.String("endpoint", endpoint), - zap.Error(err), + c.logger.Warn("CBR daily decode failed", zap.Error(err), + zap.String("currency", valute.ISOCharCode), zap.String("endpoint", endpoint), ) return "", merrors.InternalWrap(err, "cbr: decode daily response") } @@ -410,7 +401,7 @@ type valuteMapping struct { byID map[string]valuteInfo } -func buildValuteMapping(items []valuteItem) (*valuteMapping, error) { +func buildValuteMapping(logger *zap.Logger, items []valuteItem) (*valuteMapping, error) { byISO := make(map[string]valuteInfo, len(items)) byID := make(map[string]valuteInfo, len(items)) byNum := make(map[string]string, len(items)) @@ -425,34 +416,35 @@ func buildValuteMapping(items []valuteItem) (*valuteMapping, error) { if err != nil { return nil, merrors.InvalidDataType("cbr: parse directory nominal: " + err.Error()) } - if id == "" || isoChar == "" { - return nil, merrors.InvalidDataType("cbr: directory contains entry with empty id or iso code") - } - - info := valuteInfo{ - ID: id, - ISOCharCode: isoChar, - ISONumCode: isoNum, - Name: name, - EngName: engName, - Nominal: nominal, - } - - if existing, ok := byISO[isoChar]; ok && existing.ID != id { - return nil, merrors.InvalidDataType("cbr: duplicate ISO code " + isoChar) - } - if existing, ok := byID[id]; ok && existing.ISOCharCode != isoChar { - return nil, merrors.InvalidDataType("cbr: duplicate valute id " + id) - } - if isoNum != "" { - if existingID, ok := byNum[isoNum]; ok && existingID != id { - return nil, merrors.InvalidDataType("cbr: duplicate ISO numeric code " + isoNum) + if id != "" && isoChar != "" { + info := valuteInfo{ + ID: id, + ISOCharCode: isoChar, + ISONumCode: isoNum, + Name: name, + EngName: engName, + Nominal: nominal, } - byNum[isoNum] = id - } - byISO[isoChar] = info - byID[id] = info + if existing, ok := byISO[isoChar]; ok && existing.ID != id { + return nil, merrors.InvalidDataType("cbr: duplicate ISO code " + isoChar) + } + if existing, ok := byID[id]; ok && existing.ISOCharCode != isoChar { + return nil, merrors.InvalidDataType("cbr: duplicate valute id " + id) + } + if isoNum != "" { + if existingID, ok := byNum[isoNum]; ok && existingID != id { + return nil, merrors.InvalidDataType("cbr: duplicate ISO numeric code " + isoNum) + } + byNum[isoNum] = id + } + + logger.Info("Installing currency code", zap.String("iso_code", isoChar), zap.String("id", id)) + byISO[isoChar] = info + byID[id] = info + } else { + logger.Info("Skipping invalid currency entry", zap.String("id", id), zap.String("iso_char", isoChar)) + } } if len(byISO) == 0 { diff --git a/api/fx/oracle/go.mod b/api/fx/oracle/go.mod index 36a3ecc..9932e89 100644 --- a/api/fx/oracle/go.mod +++ b/api/fx/oracle/go.mod @@ -14,7 +14,7 @@ require ( go.mongodb.org/mongo-driver v1.17.6 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/api/fx/oracle/go.sum b/api/fx/oracle/go.sum index e0b6426..9b2bb2e 100644 --- a/api/fx/oracle/go.sum +++ b/api/fx/oracle/go.sum @@ -216,8 +216,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/fx/storage/go.mod b/api/fx/storage/go.mod index 8b29672..3008cb1 100644 --- a/api/fx/storage/go.mod +++ b/api/fx/storage/go.mod @@ -28,5 +28,5 @@ require ( golang.org/x/crypto v0.46.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/text v0.32.0 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/api/fx/storage/go.sum b/api/fx/storage/go.sum index 22e4b2b..aa39483 100644 --- a/api/fx/storage/go.sum +++ b/api/fx/storage/go.sum @@ -169,7 +169,7 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/api/gateway/chain/go.mod b/api/gateway/chain/go.mod index c026172..ac6dde9 100644 --- a/api/gateway/chain/go.mod +++ b/api/gateway/chain/go.mod @@ -16,7 +16,7 @@ require ( go.mongodb.org/mongo-driver v1.17.6 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/api/gateway/chain/go.sum b/api/gateway/chain/go.sum index d3adb01..5a7f0f2 100644 --- a/api/gateway/chain/go.sum +++ b/api/gateway/chain/go.sum @@ -366,8 +366,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/gateway/mntx/go.mod b/api/gateway/mntx/go.mod index b81ea94..a9d93a9 100644 --- a/api/gateway/mntx/go.mod +++ b/api/gateway/mntx/go.mod @@ -12,7 +12,7 @@ require ( github.com/tech/sendico/pkg v0.1.0 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/api/gateway/mntx/go.sum b/api/gateway/mntx/go.sum index 559c5a4..7c92544 100644 --- a/api/gateway/mntx/go.sum +++ b/api/gateway/mntx/go.sum @@ -218,8 +218,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/ledger/go.mod b/api/ledger/go.mod index accc32f..789bd48 100644 --- a/api/ledger/go.mod +++ b/api/ledger/go.mod @@ -12,7 +12,7 @@ require ( go.mongodb.org/mongo-driver v1.17.6 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/api/ledger/go.sum b/api/ledger/go.sum index c62d293..1fd92fc 100644 --- a/api/ledger/go.sum +++ b/api/ledger/go.sum @@ -218,8 +218,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/notification/go.mod b/api/notification/go.mod index 3596fc5..61ac9d8 100644 --- a/api/notification/go.mod +++ b/api/notification/go.mod @@ -54,5 +54,5 @@ require ( golang.org/x/sys v0.39.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/grpc v1.77.0 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/api/notification/go.sum b/api/notification/go.sum index b53d743..1299ef9 100644 --- a/api/notification/go.sum +++ b/api/notification/go.sum @@ -231,8 +231,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/payments/orchestrator/go.mod b/api/payments/orchestrator/go.mod index 1ef185d..9bd224c 100644 --- a/api/payments/orchestrator/go.mod +++ b/api/payments/orchestrator/go.mod @@ -25,7 +25,7 @@ require ( go.mongodb.org/mongo-driver v1.17.6 go.uber.org/zap v1.27.1 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/api/payments/orchestrator/go.sum b/api/payments/orchestrator/go.sum index 3a65c68..5979eb7 100644 --- a/api/payments/orchestrator/go.sum +++ b/api/payments/orchestrator/go.sum @@ -219,8 +219,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/pkg/go.mod b/api/pkg/go.mod index ca7a5f7..466099a 100644 --- a/api/pkg/go.mod +++ b/api/pkg/go.mod @@ -18,7 +18,7 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/crypto v0.46.0 google.golang.org/grpc v1.77.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 ) require ( diff --git a/api/pkg/go.sum b/api/pkg/go.sum index 1336402..21528c8 100644 --- a/api/pkg/go.sum +++ b/api/pkg/go.sum @@ -273,8 +273,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/api/pkg/model/cryptoaddress.go b/api/pkg/model/cryptoaddress.go index 764abb8..6747869 100644 --- a/api/pkg/model/cryptoaddress.go +++ b/api/pkg/model/cryptoaddress.go @@ -8,9 +8,10 @@ import ( ) type CryptoAddressPaymentData struct { - Address string `bson:"address" json:"address"` - Network string `bson:"network" json:"network"` - DestinationTag *string `bson:"destinationTag,omitempty" json:"destinationTag,omitempty"` + Currency Currency `bson:"currency" json:"currency"` + Address string `bson:"address" json:"address"` + Network string `bson:"network" json:"network"` + DestinationTag *string `bson:"destinationTag,omitempty" json:"destinationTag,omitempty"` } func (m *PaymentMethod) AsCryptoAddress() (*CryptoAddressPaymentData, error) { diff --git a/api/pkg/model/currency.go b/api/pkg/model/currency.go index 6a36ff7..6e9d141 100644 --- a/api/pkg/model/currency.go +++ b/api/pkg/model/currency.go @@ -3,12 +3,13 @@ package model type Currency string const ( - CurrencyEUR Currency = "EUR" // Euro - CurrencyUSD Currency = "USD" // US Dollar - CurrencyRUB Currency = "RUB" // Russian Ruble - CurrencyUAH Currency = "UAH" // Ukrainian Hryvnia - CurrencyPLN Currency = "PLN" // Polish Złoty - CurrencyCZK Currency = "CZK" // Czech Koruna + CurrencyEUR Currency = "EUR" // Euro + CurrencyUSD Currency = "USD" // US Dollar + CurrencyRUB Currency = "RUB" // Russian Ruble + CurrencyUAH Currency = "UAH" // Ukrainian Hryvnia + CurrencyPLN Currency = "PLN" // Polish Złoty + CurrencyCZK Currency = "CZK" // Czech Koruna + CurrencyUSDT Currency = "USDT" // Czech Koruna ) // All supported currencies @@ -19,6 +20,7 @@ var SupportedCurrencies = []Currency{ CurrencyUAH, CurrencyPLN, CurrencyCZK, + CurrencyUSDT, } type Amount struct { diff --git a/api/server/go.mod b/api/server/go.mod index 4744b4d..2bba23a 100644 --- a/api/server/go.mod +++ b/api/server/go.mod @@ -32,7 +32,7 @@ require ( go.mongodb.org/mongo-driver v1.17.6 go.uber.org/zap v1.27.1 golang.org/x/net v0.48.0 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 moul.io/chizap v1.0.3 ) diff --git a/api/server/go.sum b/api/server/go.sum index b718c2c..9d93f14 100644 --- a/api/server/go.sum +++ b/api/server/go.sum @@ -365,8 +365,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/api/server/internal/server/accountapiimp/signup.go b/api/server/internal/server/accountapiimp/signup.go index 654a84e..78f0308 100644 --- a/api/server/internal/server/accountapiimp/signup.go +++ b/api/server/internal/server/accountapiimp/signup.go @@ -248,12 +248,11 @@ func (a *AccountAPI) openOrgWallet(ctx context.Context, org *model.Organization, a.logger.Warn("Chain gateway client not configured, skipping wallet creation", mzap.StorableRef(org)) return merrors.Internal("chain gateway client is not configured") } - asset := *a.chainAsset req := &chainv1.CreateManagedWalletRequest{ IdempotencyKey: uuid.NewString(), OrganizationRef: org.ID.Hex(), OwnerRef: org.ID.Hex(), - Asset: &asset, + Asset: a.chainAsset, Metadata: map[string]string{ "source": "signup", "login": sr.Account.Login, -- 2.49.1