Это может быть субъективный вопрос, но я отдам его.
Уже существует ряд вопросов по SO, которые вращаются вокруг управления биллингами подписки. В настоящее время я работаю над решением SaaS, которое потребует полностью автоматизированной биллинговой системы.
То, что я не ищу, когда задаю этот вопрос, - это не советы по внедрению в отношении конкретного платежного шлюза или тому подобного. Вместо этого я хотел бы получить совет относительно того, какой подход принять.
Функциональность, в которой я нуждаюсь, - это система, которая может обрабатывать обновления, понижение, повторное выставление счетов, аннулирование и т.д. Первоначально только для одного продукта, но со временем может потребоваться, чтобы система могла обрабатывать несколько продуктов (по продуктам я означают принципиально разные продукты, а не разные варианты одного и того же продукта).
Как я вижу, существует ряд возможных подходов, когда вам нужно решение вроде этого:
- Введите собственный сервер фактурирования, который поддерживает это и отделяется от каждого продукта, чтобы он мог обрабатывать несколько независимых продуктов.
- Использовать размещенное решение Recurly, Chargify, Spreedly или CheddarGetter.
Преимущество использования размещенного решения, очевидно, в том, что вам не нужна сертификация PCI, проблема заключается в аутсорсинге, и намного быстрее встать и работать. Однако эти преимущества приносятся издержки: самая важная функция поддержки вашего продукта - то есть выставление счетов не под вашим контролем. Кроме того, у вас меньше контроля и гибкости.
Что бы вы сделали? Если мы рассмотрим требования PCI, я бы предпочел бы иметь системный код внутри компании, который мог бы выполнять такую работу. С другой стороны, я слышал из многочисленных источников, что кодирование такой системы - боль.
Любые советы заслуживают высокой оценки. Кроме того, если вы советуете самим закодировать его, какие-либо впечатления о том, как это сделать, или если есть какие-либо проекты с открытым исходным кодом (независимо от языка, то, что мне нужно, это не код, а структура), который я могу извлечь из среднее значение.