new payment by id method + shell scripts update + mntx removed
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 == "" {
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user