Подписки: Разрешить пользователям покупать одноразовые товары несколько раз

Итак, я создал продукт «CreateServer», который (когда-нибудь) позволит кому-либо приобрести установку Discourse. При покупке пользователь добавляется в группу CreateServer. Когда пользователь создаёт сервер, он удаляется из этой группы. Всё отлично.

Но если кто-то захочет получить второй сервер, это невозможно, так как продукт уже был куплен. Есть ли способ разрешить покупку одного и того же продукта несколько раз? Или, возможно, моё решение — изменить через плагин запись о покупке подписки, чтобы пользователь мог купить её снова. Плагин уже удаляет пользователя из группы CreateServer после установки…

Что-то вроде:

product = DiscourseSubscriptions::Customer.find_by(user_id: 2, product_id: create_server_id)
product.product_id = 'install fulfilled'
product.save

Это позволит пользователю купить продукт снова. Как вы думаете, это не сломает что-то ещё?

3 лайка

Если вы используете разовые платежи, изменение идентификатора продукта, скорее всего, не должно ничего сломать, за исключением возможности просмотра истории платежей.

Однако я не против добавить возможность для пользователей покупать продукты с разовой оплатой более одного раза.

5 лайков

Насколько это сложно? Я был несколько удивлён этим. Если кто-то может, скажем, купить новую подписку взамен истёкшей ранее?

3 лайка

Повторная разовая покупка была бы отличным решением.. Это в какой-то степени снизило бы необходимость в функции подписки «плати сколько хочешь», которой сейчас нет: Subscriptions: Pay What You Want Support .. Или, возможно, есть возможность объединить эти две функции? :slight_smile:

2 лайка

Джей, верно ли это также в том случае, если первая подписка была отменена, а клиент вернулся позже, чтобы купить то же самое снова? То есть ежемесячная подписка была отменена после одного цикла, а клиент вернулся через год.

1 лайк

Нет — после отмены подписки и её обработки службой подписок пользователи могут вернуться и приобрести её снова. Если у них ещё действует активная подписка (хотя автоматическое продление может быть отключено), они не смогут этого сделать.

3 лайка

Тогда не могли бы разовые покупки автоматически помечаться как неактивные?

1 лайк

Покупки в один клик в Stripe работают по совершенно другому механизму, поэтому мне нужно будет это изучить. У меня есть идея, но большая часть моей работы над плагином отложена до Нового года.

5 лайков

Ах! Теперь всё понятно. У меня не было времени внимательно разобраться, так как в моём плагине есть миллион других движущихся частей, которые я тоже не до конца понимаю.

Мне бы очень не хотелось, чтобы это оказалось неправдой! :christmas_tree: :tada:

5 лайков

Привет, Джастин. Я снова возвращаюсь к этому вопросу. На практике немногие покупатели приобретают несколько установок, поэтому я решил не беспокоиться о множественных покупках. Но потом я понял, что тестирование покупки установки сервера затруднительно, если пользователь может сделать это только один раз…

Похоже, что именно serialize_product определяет, является ли продукт подпиской, что, в свою очередь, определяет возможность его покупки.

Кажется, здесь нужно сделать так, чтобы subscribed не устанавливалось в true, если купленный продукт является одноразовым? Мне не сразу понятно, как это реализовать, поскольку эта информация, похоже, находится как минимум на уровне соединения таблиц (или, возможно, требует отдельного запроса?).

Пока я решил проблему, взломав шаблоны, чтобы всегда отображать ссылку/кнопку оплаты (что-то вроде {{#if product.subscribed_JP_disabled}}), что позволяет мне совершать множественные покупки, насколько это возможно.

6 лайков

Круто — это в моём списке, но сначала я реализую несколько функций с более высоким спросом, а именно купоны.

5 лайков

Привет!

Меня тоже очень интересует эта функция. Жду обновления! :wink:

3 лайка

Спасибо за ваш голос и с днём рождения!

Это в моих планах на ближайшее время :slight_smile:

6 лайков

PR по этому вопросу уже здесь:

7 лайков

Извините за задержку, но теперь это объединено!

5 лайков