2016-01-19 2 views
1

Я создаю новое приложение SaaS и хочу следовать принципам DDD.Где «Биллинг» принадлежит проекту DDD php?

Im на этапе, когда Im набросал идеи, и я столкнулся с этой проблемой. Я надеюсь, что люди могут дать мне несколько мыслей. Я не думаю, что в этом есть право или неправильно. Но я люблю слышать ваши мысли ...

По сути, я не уверен, где Биллинг принадлежит и как его наилучшим образом реализовать.

Я не знаю, должен ли пользователь знать интерфейс биллинга. Обязанности пользователей должны выполнять выставление счетов?

Я думаю, что это справедливо для пользовательского объекта, чтобы узнать, есть ли у них подписка, но не как ее реализовано.

На этом этапе Im думает, что на уровне домена будет указываться BillingInterace, и реализация будет жить на уровне инфраструктуры. (Для начала используйте Stripe)

Вы создали бы биллинговую службу и передали бы пользовательский объект для создания учетной записи пользователя на полосе и выполнения функций биллинга?

Или бы вы закодировали черту, которая попадает на пользовательскую сущность, чтобы пользователь мог сам выписать счет ($ user-> charge() - или что-то еще).

Надеюсь, что имеет смысл. Я просто ищу, чтобы бросить некоторые идеи, поскольку я не могу найти приличное руководство онлайн с этим материалом.

Спасибо! Ли

ответ

2

Обязанности пользователей - выполнять выставление счетов?

Я так не считаю.

На этом этапе Im думает, что на уровне домена будет указываться BillingInterace, и реализация будет жить на уровне инфраструктуры.

Является ли платежная часть домена (бизнеса)? Если да, то он должен быть там.

Может быть, биллинг может быть совокупный корень или услуга домена . Взгляните на номер this, в котором ваш Billing может быть PurchaseOrder (агрегат). И в this, что объясняет услуги домена.

+0

Спасибо за ответ! Да, я согласен с тем, что не пользовательская работа оплачивается. Они должны иметь некоторое представление о статусе подписки, но не о том, как это работает за кулисами. Бизнес занимается выставлением счетов, только в том случае, если неоплачиваемый пользователь не получает предлагаемые услуги. Но это не работа с доменами, чтобы беспокоиться о том, как это делается, только чтобы это можно было сделать. –