Привет!
Хэш сервис не должен принимать order. Есть 2 алгоритма и каждый из вызовов принимает разные данные. Смотри на то, что написано в Main в { }. То, что внутри идет в хэш сервис. Например, $"{order.Id}{_secretKey}" строка должна пойти в хэш сервис.
В строке "pay.system1 ru/order?amount=12000RUB&hash=" число 12000 это order.Amount. Нужно использовать интерполяцию внутри системы.
Не используй котрежи и публичные поля - Order
И декоратора у тебя тут нет! Декоратор это паттерн в котором реализация IInterface принимает в себя IInterface. Получается матрешка. Этот паттерн тут не нужен
Моё исправленное решение и ответ:
Изменил хеширование, теперь сервисы принимают строку
Изменил формирование ссылки
Заменил публичные поля на свойства в Order (я просто думал что код из задания не нужно менять)
Про декоратор думал, что это просто любые интерфейсы, теперь разобрался
https://gist.github.com/NoNameDeleted/67241dbff6793a1d984b26c65ed6476e
Паттерны это конечно сложная тема, особенно напрягает что там всё как то размыто и у всех разное представление о них, и на практике знание паттернов никак не помогает, можно их использовать не зная что они существуют. Так что думаю это не проблема