210 Commits

Author SHA1 Message Date
Justin DiRose
6ce6e85ef4
Make rubocop happy 2020-08-19 15:11:16 -05:00
Justin DiRose
a868e6b838
FEATURE: Cancel payments at end of subscription vs immediately
Previously, when a user canceled a subscription, the access would revoke
immediately on Discourse vs. at the end of the billing period. This
commit changes the behavior to remove membership at the end of the
billing period using Stripe's `cancel_at_period_end` attribute on the
Subscription object.

This commit now requires the setup of webhooks for subscription
processing to occur correctly.
2020-08-19 14:37:47 -05:00
Justin DiRose
9491f558ea
FEATURE: Add support for 3D Secure payments (#19)
Adds an additional checkout flow to support authentication of payment methods.
2020-07-24 15:07:18 -05:00
Justin DiRose
587661fafb
FEATURE: Allow one-time purchases on products (#18)
Building off the foundation of using the Prices API, this PR adds the ability to create a one-time purchase plan for any product, which then can add a user to the specified plan group.

Some things to be aware of:

    One-time purchases cannot have trials.
    One-time purchases use the Invoice API instead of Subscriptions. Invoices are created then charged immediately.
    Users should receive emails for these invoices directly from Stripe just like subscriptions.
2020-07-22 11:06:34 -05:00
Justin DiRose
c9ff55b46a
REFACTOR: Use the Prices API in place of Plans (#17)
Stripe has a newer API called Prices where you can create a price for any product and it can either be recurring or one-time. The easy part is existing Plans work with the Prices API by passing a Plan ID, but objects are returned in the slightly-different Prices API object format.

This commit is a refactor to the new API to handle the data in its new form, and lays the foundation for a one time payment plan to be added to any subscriptions product.
2020-07-15 08:44:40 -05:00
Justin DiRose
fb4f50478d
REFACTOR: Use engine to load files, add constraint (#14) 2020-07-06 11:11:04 -05:00
Justin DiRose
4830468e32
DEV: Fixes for rubocop 2020-06-09 12:37:46 -05:00
Justin DiRose
c30daa1b86
FIX: Couldn't dig the payments 2020-06-09 12:26:31 -05:00
Justin DiRose
029232e881
FIX: Stripe returned limited number of plans 2020-06-09 12:06:46 -05:00
Justin DiRose
9c46794e80
DEV: Remove deprecations & improve error handling (#12)
- Replace deprecated methods on client
- Fix broken dropdowns due to select kit 2 upgrade
- Graceful error handling when Stripe keys are not configured but plugin enabled
2020-05-28 10:32:57 -05:00
Justin DiRose
fb4fac197b
REFACTOR: Use models to store data (#11)
* REFACTOR: Use api to add subscribe link

* FIX: I18n subscribe link

* REFACTOR: Use models to store some data

This enables the plugin to show only subscription information which was
generated on Discourse. Subscription data storage is limited to the
external identifiers Stripe generates so we can interact with the API.

* DEV: Test/linting fixes/rake task
2020-05-22 11:20:05 -05:00
Rimian Perkins
cc389d2423 add the user to the group if subscription is completing 2020-01-26 10:49:51 +11:00
Rimian Perkins
ebe891c09b fix event hash for subscription 2020-01-25 15:06:05 +11:00
Rimian Perkins
83e7ae2711 spec unsubscribe webhook 2020-01-15 10:20:21 +11:00
Rimian Perkins
dca6c7ddc9 deletes the customer on subscription cancel 2020-01-14 23:38:26 +11:00
Rimian Perkins
190ca28089 rm subscription event 2020-01-14 20:58:34 +11:00
Rimian Perkins
b83da467d0 respond to incomplete payment 2020-01-14 18:46:48 +11:00
Rimian Perkins
95413ee161 get the payload, signature and secret for webhook 2020-01-14 15:37:53 +11:00
Rimian Perkins
0543b3a6a3 basic hook 2020-01-13 11:10:06 +11:00
Rimian Perkins
431279a4f7 Add empty webhook url and upgrade stripe gem 2020-01-10 10:24:09 +11:00
Rimian Perkins
52db93ecd8 user payments page 2019-12-17 16:31:58 +11:00
Rimian Perkins
fcfd2be41b create a customer when a payment happens 2019-12-17 10:03:00 +11:00
Rimian Perkins
7d3ca0421a rm old donation form 2019-12-16 10:59:59 +11:00
Rimian Perkins
57fb508514 buttons for selecting price and one time payment 2019-12-13 10:41:14 +11:00
Rimian Perkins
831e64317b refactor models, routes and buttons 2019-12-12 12:59:26 +11:00
Rimian Perkins
41b0667350 fix rubocop newer version 2019-12-12 09:59:38 +11:00
Rimian Perkins
80b721ddd8 rename some settings 2019-12-04 11:53:05 +11:00
Rimian Perkins
b397ba5a68 name space module 2019-12-04 11:23:45 +11:00
Rimian Perkins
95a263535e rename server translation 2019-12-04 09:33:39 +11:00
Rimian Perkins
d8a3ae5554 fix broken unauthenticated page 2019-12-03 14:31:15 +11:00
Rimian Perkins
57a18f5a4e whoops did not set currency 2019-11-30 17:24:49 +11:00
Rimian Perkins
709aebb593 set the currency in the plan 2019-11-30 16:39:28 +11:00
Rimian Perkins
3b7ff90672 user removed from the group in admin 2019-11-29 10:37:32 +11:00
Rimian Perkins
36865c5ea1 remove the user from the group in user controller 2019-11-29 09:24:56 +11:00
Rimian Perkins
3904310432 group concern 2019-11-29 09:01:56 +11:00
Rimian Perkins
ad77fc749b test subcription deletes 2019-11-29 08:15:46 +11:00
Rimian Perkins
2eab43d4a0 delete customer when subscription destroyed 2019-11-29 08:00:13 +11:00
Rimian Perkins
298e70b32a delete customer record 2019-11-28 20:44:38 +11:00
Rimian Perkins
0fddb5e3b9 backend returns if user is already subscribed 2019-11-28 17:43:03 +11:00
Rimian Perkins
ca00b530aa show the product name in subscription lists 2019-11-27 10:48:30 +11:00
Rimian Perkins
3e4fd76891 show product and plan nickname in admin 2019-11-26 12:55:49 +11:00
Rimian Perkins
7340bf5bc5 fix customer id not found 2019-11-26 11:09:54 +11:00
Rimian Perkins
e4093e5a69 fix null delete subscription error 2019-11-14 12:07:24 +11:00
Rimian Perkins
6590d8051c delete subscriptions in admin 2019-11-14 10:51:04 +11:00
Rimian Perkins
8aed6b8d30 add link to user 2019-11-13 14:21:21 +11:00
Rimian Perkins
84fd12a9a3 add user data to subscription metadata 2019-11-13 10:19:49 +11:00
Rimian Perkins
59638daad9 render error message when customer not found 2019-11-13 07:53:48 +11:00
Rimian Perkins
b2c5842aa6 only delete the right subscription 2019-11-12 12:43:23 +11:00
Rimian Perkins
0b90caac2d rm request to empty model 2019-11-07 15:49:10 +11:00
Rimian Perkins
098b58c60c remove payments 2019-11-07 15:19:48 +11:00