fixed tgsettle logging
This commit is contained in:
@@ -139,75 +139,115 @@ func (s *Service) consumeProcessor(processor np.EnvelopeProcessor) {
|
||||
|
||||
func (s *Service) SubmitTransfer(ctx context.Context, req *chainv1.SubmitTransferRequest) (*chainv1.SubmitTransferResponse, error) {
|
||||
if req == nil {
|
||||
s.logger.Warn("Submit transfer rejected", zap.String("reason", "request is required"))
|
||||
return nil, merrors.InvalidArgument("submit_transfer: request is required")
|
||||
}
|
||||
idempotencyKey := strings.TrimSpace(req.GetIdempotencyKey())
|
||||
if idempotencyKey == "" {
|
||||
s.logger.Warn("Submit transfer rejected", zap.String("reason", "idempotency_key is required"))
|
||||
return nil, merrors.InvalidArgument("submit_transfer: idempotency_key is required")
|
||||
}
|
||||
amount := req.GetAmount()
|
||||
if amount == nil || strings.TrimSpace(amount.GetAmount()) == "" || strings.TrimSpace(amount.GetCurrency()) == "" {
|
||||
s.logger.Warn("Submit transfer rejected", zap.String("reason", "amount is required"), zap.String("idempotency_key", idempotencyKey))
|
||||
return nil, merrors.InvalidArgument("submit_transfer: amount is required")
|
||||
}
|
||||
intent, err := intentFromSubmitTransfer(req, s.rail, s.chatID)
|
||||
if err != nil {
|
||||
s.logger.Warn("Submit transfer rejected", zap.Error(err), zap.String("idempotency_key", idempotencyKey))
|
||||
return nil, err
|
||||
}
|
||||
logFields := []zap.Field{
|
||||
zap.String("idempotency_key", intent.IdempotencyKey),
|
||||
zap.String("payment_intent_id", intent.PaymentIntentID),
|
||||
zap.String("quote_ref", intent.QuoteRef),
|
||||
zap.String("rail", intent.OutgoingLeg),
|
||||
zap.String("organization_ref", strings.TrimSpace(req.GetOrganizationRef())),
|
||||
zap.String("source_wallet_ref", strings.TrimSpace(req.GetSourceWalletRef())),
|
||||
}
|
||||
if intent.RequestedMoney != nil {
|
||||
logFields = append(logFields,
|
||||
zap.String("amount", strings.TrimSpace(intent.RequestedMoney.Amount)),
|
||||
zap.String("currency", strings.TrimSpace(intent.RequestedMoney.Currency)),
|
||||
)
|
||||
}
|
||||
logFields = append(logFields, transferDestinationLogFields(req.GetDestination())...)
|
||||
if s.repo == nil || s.repo.Payments() == nil {
|
||||
s.logger.Warn("Payment gateway storage unavailable", logFields...)
|
||||
return nil, merrors.Internal("payment gateway storage unavailable")
|
||||
}
|
||||
existing, err := s.repo.Payments().FindByIdempotencyKey(ctx, idempotencyKey)
|
||||
if err != nil {
|
||||
s.logger.Warn("Submit transfer lookup failed", append(logFields, zap.Error(err))...)
|
||||
return nil, err
|
||||
}
|
||||
if existing != nil {
|
||||
s.logger.Info("Submit transfer idempotent hit", append(logFields, zap.String("status", strings.TrimSpace(existing.Status)))...)
|
||||
return &chainv1.SubmitTransferResponse{Transfer: transferFromExecution(existing, req)}, nil
|
||||
}
|
||||
if err := s.onIntent(ctx, intent); err != nil {
|
||||
s.logger.Warn("Submit transfer intent handling failed", append(logFields, zap.Error(err))...)
|
||||
return nil, err
|
||||
}
|
||||
s.logger.Info("Submit transfer accepted", logFields...)
|
||||
return &chainv1.SubmitTransferResponse{Transfer: transferFromRequest(req)}, nil
|
||||
}
|
||||
|
||||
func (s *Service) GetTransfer(ctx context.Context, req *chainv1.GetTransferRequest) (*chainv1.GetTransferResponse, error) {
|
||||
if req == nil {
|
||||
s.logger.Warn("Get transfer rejected", zap.String("reason", "request is required"))
|
||||
return nil, merrors.InvalidArgument("get_transfer: request is required")
|
||||
}
|
||||
transferRef := strings.TrimSpace(req.GetTransferRef())
|
||||
if transferRef == "" {
|
||||
s.logger.Warn("Get transfer rejected", zap.String("reason", "transfer_ref is required"))
|
||||
return nil, merrors.InvalidArgument("get_transfer: transfer_ref is required")
|
||||
}
|
||||
logFields := []zap.Field{zap.String("transfer_ref", transferRef)}
|
||||
if s.repo == nil || s.repo.Payments() == nil {
|
||||
s.logger.Warn("Payment gateway storage unavailable", logFields...)
|
||||
return nil, merrors.Internal("payment gateway storage unavailable")
|
||||
}
|
||||
existing, err := s.repo.Payments().FindByIdempotencyKey(ctx, transferRef)
|
||||
if err != nil {
|
||||
s.logger.Warn("Get transfer lookup failed", append(logFields, zap.Error(err))...)
|
||||
return nil, err
|
||||
}
|
||||
if existing != nil {
|
||||
s.logger.Info("Get transfer resolved from execution", append(logFields,
|
||||
zap.String("payment_intent_id", strings.TrimSpace(existing.PaymentIntentID)),
|
||||
zap.String("status", strings.TrimSpace(existing.Status)),
|
||||
)...)
|
||||
return &chainv1.GetTransferResponse{Transfer: transferFromExecution(existing, nil)}, nil
|
||||
}
|
||||
if s.hasPending(transferRef) {
|
||||
s.logger.Info("Get transfer pending", logFields...)
|
||||
return &chainv1.GetTransferResponse{Transfer: transferPending(transferRef)}, nil
|
||||
}
|
||||
s.logger.Warn("Get transfer not found", logFields...)
|
||||
return nil, status.Error(codes.NotFound, "transfer not found")
|
||||
}
|
||||
|
||||
func (s *Service) onIntent(ctx context.Context, intent *model.PaymentGatewayIntent) error {
|
||||
if intent == nil {
|
||||
s.logger.Warn("Payment gateway intent rejected", zap.String("reason", "intent is nil"))
|
||||
return merrors.InvalidArgument("payment gateway intent is nil", "intent")
|
||||
}
|
||||
intent = normalizeIntent(intent)
|
||||
if intent.IdempotencyKey == "" {
|
||||
s.logger.Warn("Payment gateway intent rejected", zap.String("reason", "idempotency_key is required"))
|
||||
return merrors.InvalidArgument("idempotency_key is required", "idempotency_key")
|
||||
}
|
||||
if intent.PaymentIntentID == "" {
|
||||
s.logger.Warn("Payment gateway intent rejected", zap.String("reason", "payment_intent_id is required"), zap.String("idempotency_key", intent.IdempotencyKey))
|
||||
return merrors.InvalidArgument("payment_intent_id is required", "payment_intent_id")
|
||||
}
|
||||
if intent.RequestedMoney == nil || strings.TrimSpace(intent.RequestedMoney.Amount) == "" || strings.TrimSpace(intent.RequestedMoney.Currency) == "" {
|
||||
s.logger.Warn("Payment gateway intent rejected", zap.String("reason", "requested_money is required"), zap.String("idempotency_key", intent.IdempotencyKey))
|
||||
return merrors.InvalidArgument("requested_money is required", "requested_money")
|
||||
}
|
||||
if s.repo == nil || s.repo.Payments() == nil {
|
||||
s.logger.Warn("Payment gateway storage unavailable", zap.String("idempotency_key", intent.IdempotencyKey))
|
||||
return merrors.Internal("payment gateway storage unavailable")
|
||||
}
|
||||
|
||||
@@ -226,6 +266,7 @@ func (s *Service) onIntent(ctx context.Context, intent *model.PaymentGatewayInte
|
||||
|
||||
confirmReq, err := s.buildConfirmationRequest(intent)
|
||||
if err != nil {
|
||||
s.logger.Warn("Failed to build confirmation request", zap.Error(err), zap.String("idempotency_key", intent.IdempotencyKey), zap.String("payment_intent_id", intent.PaymentIntentID))
|
||||
return err
|
||||
}
|
||||
if err := s.sendConfirmationRequest(confirmReq); err != nil {
|
||||
@@ -237,10 +278,12 @@ func (s *Service) onIntent(ctx context.Context, intent *model.PaymentGatewayInte
|
||||
|
||||
func (s *Service) onConfirmationResult(ctx context.Context, result *model.ConfirmationResult) error {
|
||||
if result == nil {
|
||||
s.logger.Warn("Confirmation result rejected", zap.String("reason", "result is nil"))
|
||||
return merrors.InvalidArgument("confirmation result is nil", "result")
|
||||
}
|
||||
requestID := strings.TrimSpace(result.RequestID)
|
||||
if requestID == "" {
|
||||
s.logger.Warn("Confirmation result rejected", zap.String("reason", "request_id is required"))
|
||||
return merrors.InvalidArgument("confirmation request_id is required", "request_id")
|
||||
}
|
||||
intent := s.lookupIntent(requestID)
|
||||
@@ -314,9 +357,11 @@ func (s *Service) buildConfirmationRequest(intent *model.PaymentGatewayIntent) (
|
||||
|
||||
func (s *Service) sendConfirmationRequest(request *model.ConfirmationRequest) error {
|
||||
if request == nil {
|
||||
s.logger.Warn("Confirmation request rejected", zap.String("reason", "request is nil"))
|
||||
return merrors.InvalidArgument("confirmation request is nil", "request")
|
||||
}
|
||||
if s.producer == nil {
|
||||
s.logger.Warn("Messaging producer not configured")
|
||||
return merrors.Internal("messaging producer is not configured")
|
||||
}
|
||||
env := confirmations.ConfirmationRequest(string(mservice.PaymentGateway), request)
|
||||
@@ -330,6 +375,12 @@ func (s *Service) sendConfirmationRequest(request *model.ConfirmationRequest) er
|
||||
zap.Int32("timeout_seconds", request.TimeoutSeconds))
|
||||
return err
|
||||
}
|
||||
s.logger.Info("Published confirmation request",
|
||||
zap.String("request_id", request.RequestID),
|
||||
zap.String("payment_intent_id", request.PaymentIntentID),
|
||||
zap.String("quote_ref", request.QuoteRef),
|
||||
zap.String("rail", request.Rail),
|
||||
zap.Int32("timeout_seconds", request.TimeoutSeconds))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -355,7 +406,14 @@ func (s *Service) publishExecution(intent *model.PaymentGatewayIntent, result *m
|
||||
zap.String("payment_intent_id", intent.PaymentIntentID),
|
||||
zap.String("quote_ref", intent.QuoteRef),
|
||||
zap.String("status", string(result.Status)))
|
||||
return
|
||||
}
|
||||
s.logger.Info("Published gateway execution result",
|
||||
zap.String("request_id", result.RequestID),
|
||||
zap.String("idempotency_key", intent.IdempotencyKey),
|
||||
zap.String("payment_intent_id", intent.PaymentIntentID),
|
||||
zap.String("quote_ref", intent.QuoteRef),
|
||||
zap.String("status", string(result.Status)))
|
||||
}
|
||||
|
||||
func (s *Service) trackIntent(requestID string, intent *model.PaymentGatewayIntent) {
|
||||
|
||||
Reference in New Issue
Block a user