package refundchannel import ( "context" stderrors "errors" "gorm.io/gorm" "github.com/break/junhong_cmp_fiber/internal/model" "github.com/break/junhong_cmp_fiber/pkg/errors" ) // AuditWriter 写退款渠道调用与恢复的可审计事实。 // 实现必须与业务更新在同一事务内写入,且摘要不得包含凭证或渠道报文原文。 type AuditWriter interface { WriteRefundChannelResult(ctx context.Context, tx *gorm.DB, refund *model.RefundRequest, action string, message string) error } // CompletionNotifier 在渠道明确退款成功时补写退款完成通知事实。 // 通知载荷由退款能力拥有,本包只负责在正确的时点与事务内触发。 type CompletionNotifier interface { AppendCompletedNotification(ctx context.Context, tx *gorm.DB, refund *model.RefundRequest) error } // appErrorCode 读取应用错误码;非应用错误返回 0。 func appErrorCode(err error) int { var appErr *errors.AppError if stderrors.As(err, &appErr) { return appErr.Code } return 0 }