new payment by id method + shell scripts update + mntx removed

This commit is contained in:
Stephan D
2026-03-16 15:43:36 +01:00
parent 23ae8a8089
commit 2fcb150fbf
36 changed files with 348 additions and 26 deletions

View File

@@ -80,13 +80,14 @@ func (s *svc) GetPayment(ctx context.Context, in GetPaymentInput) (payment *agg.
logger.Debug("Completed Get payment", fields...)
}(time.Now())
if in.OrganizationRef.IsZero() {
return nil, merrors.InvalidArgument("organization_ref is required")
}
paymentRef := strings.TrimSpace(in.PaymentRef)
if paymentRef == "" {
return nil, merrors.InvalidArgument("payment_ref is required")
}
if in.OrganizationRef.IsZero() {
payment, err = s.repo.GetByPaymentRefGlobal(ctx, paymentRef)
return payment, err
}
payment, err = s.repo.GetByPaymentRef(ctx, in.OrganizationRef, paymentRef)
return payment, err
}

View File

@@ -9,6 +9,7 @@ import (
"github.com/tech/sendico/payments/orchestrator/internal/service/orchestrationv2/pquery"
"github.com/tech/sendico/payments/orchestrator/internal/service/orchestrationv2/prmap"
"github.com/tech/sendico/pkg/merrors"
paginationv1 "github.com/tech/sendico/pkg/proto/common/pagination/v1"
orchestrationv2 "github.com/tech/sendico/pkg/proto/payments/orchestration/v2"
"go.uber.org/zap"
@@ -39,7 +40,10 @@ func (s *svc) GetPayment(ctx context.Context, req *orchestrationv2.GetPaymentReq
logger.Debug("Completed Get payment", fields...)
}(time.Now())
_, orgID, err := parseOrganization(req.GetMeta())
if req == nil {
return nil, merrors.InvalidArgument("request is required")
}
_, orgID, hasOrg, err := parseOptionalOrganization(req.GetMeta())
if err != nil {
return nil, err
}
@@ -48,10 +52,11 @@ func (s *svc) GetPayment(ctx context.Context, req *orchestrationv2.GetPaymentReq
return nil, err
}
payment, err := s.query.GetPayment(ctx, pquery.GetPaymentInput{
OrganizationRef: orgID,
PaymentRef: paymentRef,
})
queryInput := pquery.GetPaymentInput{PaymentRef: paymentRef}
if hasOrg {
queryInput.OrganizationRef = orgID
}
payment, err := s.query.GetPayment(ctx, queryInput)
if err != nil {
return nil, err
}
@@ -59,7 +64,10 @@ func (s *svc) GetPayment(ctx context.Context, req *orchestrationv2.GetPaymentReq
if err != nil {
return nil, err
}
resp = &orchestrationv2.GetPaymentResponse{Payment: protoPayment}
resp = &orchestrationv2.GetPaymentResponse{
Payment: protoPayment,
OrganizationRef: payment.OrganizationRef.Hex(),
}
return resp, nil
}

View File

@@ -35,6 +35,21 @@ func parseOrganization(meta *sharedv1.RequestMeta) (string, bson.ObjectID, error
return orgRef, orgID, nil
}
func parseOptionalOrganization(meta *sharedv1.RequestMeta) (string, bson.ObjectID, bool, error) {
if meta == nil {
return "", bson.NilObjectID, false, nil
}
orgRef := strings.TrimSpace(meta.GetOrganizationRef())
if orgRef == "" {
return "", bson.NilObjectID, false, nil
}
orgID, err := bson.ObjectIDFromHex(orgRef)
if err != nil {
return "", bson.NilObjectID, false, merrors.InvalidArgument("meta.organization_ref must be a valid objectID")
}
return orgRef, orgID, true, nil
}
func parsePaymentRef(value string) (string, error) {
ref := strings.TrimSpace(value)
if ref == "" {

View File

@@ -67,6 +67,25 @@ func TestExecutePayment_EndToEndSyncSettled(t *testing.T) {
if got, want := getResp.GetPayment().GetPaymentRef(), resp.GetPayment().GetPaymentRef(); got != want {
t.Fatalf("payment_ref mismatch: got=%q want=%q", got, want)
}
if got, want := getResp.GetOrganizationRef(), env.orgID.Hex(); got != want {
t.Fatalf("organization_ref mismatch: got=%q want=%q", got, want)
}
getRespGlobal, err := env.svc.GetPayment(context.Background(), &orchestrationv2.GetPaymentRequest{
PaymentRef: resp.GetPayment().GetPaymentRef(),
})
if err != nil {
t.Fatalf("GetPayment(global) returned error: %v", err)
}
if getRespGlobal.GetPayment() == nil {
t.Fatal("expected payment from global GetPayment")
}
if got, want := getRespGlobal.GetPayment().GetPaymentRef(), resp.GetPayment().GetPaymentRef(); got != want {
t.Fatalf("global payment_ref mismatch: got=%q want=%q", got, want)
}
if got, want := getRespGlobal.GetOrganizationRef(), env.orgID.Hex(); got != want {
t.Fatalf("global organization_ref mismatch: got=%q want=%q", got, want)
}
timeline, err := env.observer.PaymentTimeline(context.Background(), oobs.PaymentTimelineInput{
PaymentRef: resp.GetPayment().GetPaymentRef(),