Files
zeekay 7d727874d5 chore: rebrand Formance Payments -> Hanzo Payments (hanzo-fi)
- go.mod module path + all self-imports: github.com/formancehq/payments -> github.com/hanzo-fi/payments
  (1590 .go files / 3152 refs; 20 modules: root, pkg/client, pkg/domain, 18 ce/plugins).
  External dep kept: formancehq/go-libs.
- plugins: each ce/plugins/* consumed a *published* pkg/domain; added local
  'replace .../pkg/domain => ../../../pkg/domain' (consistent with root) so every
  standalone plugin module builds in-monorepo. compile-plugin.sh MOD var rebranded too.
- branding: README, LICENSE (dual MIT+EE; upstream copyright retained + Hanzo added),
  goreleaser (release images -> registry.hanzo.ai/hanzo-fi, OCI labels, homepage),
  proto go_package, renovate, speakeasy gen.yaml, connector-template *.gotpl.
- CI: removed Numary/Formance workflows + composite action; added canonical hanzo.yml +
  cicd.yml (hanzoai/ci, gated HANZO_CI_ENABLED) + secretless ci.yml (go build/vet).
- kept as data/compat keys: wire capability enums ALLOW_FORMANCE_*, generated SDK type
  client.Formance, domain field FormanceRedirectURL, OTEL_SERVICE_NAME, upstream base image.
- verified: go build ./... (default + -tags ee) + all 20 nested modules green.
2026-07-05 13:08:55 -07:00

60 lines
1.7 KiB
Go

package qonto
import (
"context"
"encoding/json"
"fmt"
"github.com/hanzo-fi/payments/ce/plugins/qonto/client"
errorsutils "github.com/hanzo-fi/payments/pkg/domain/errors"
"math/big"
"time"
"github.com/hanzo-fi/payments/pkg/domain/models"
)
/*
*
Qonto does not have a balance API. We get the balances at the same time as we fetch the accounts, so here we just
read the data that's present in the request and format it as necessary.
*/
func (p *Plugin) fetchNextBalances(ctx context.Context, req models.FetchNextBalancesRequest) (models.FetchNextBalancesResponse, error) {
var from models.PSPAccount
if req.FromPayload == nil {
return models.FetchNextBalancesResponse{}, models.ErrMissingFromPayloadInRequest
}
if err := json.Unmarshal(req.FromPayload, &from); err != nil {
err := errorsutils.NewWrappedError(
fmt.Errorf("failed to unmarshall FromPayload"),
err,
)
return models.FetchNextBalancesResponse{}, err
}
var qontoBankAccount client.OrganizationBankAccount
if err := json.Unmarshal(from.Raw, &qontoBankAccount); err != nil {
err := errorsutils.NewWrappedError(
fmt.Errorf("failed to unmarshall FromPayload.raw"),
err,
)
return models.FetchNextBalancesResponse{}, err
}
if from.DefaultAsset == nil {
return models.FetchNextBalancesResponse{}, fmt.Errorf("missing default asset")
}
accountBalance := models.PSPBalance{
AccountReference: from.Reference,
Amount: big.NewInt(qontoBankAccount.BalanceCents),
Asset: *from.DefaultAsset,
CreatedAt: time.Now(),
}
accountBalances := []models.PSPBalance{accountBalance}
return models.FetchNextBalancesResponse{
Balances: accountBalances,
HasMore: false,
}, nil
}