Fixed webhooks by env
This commit is contained in:
parent
55519a845a
commit
dacb9f0b90
@ -24,10 +24,14 @@ export default class StripeWebhooks extends ApiController {
|
||||
const event = req.body;
|
||||
|
||||
switch (event.type) {
|
||||
case "invoice.payment_succeeded":
|
||||
if (event.data.object.billing_reason !== "subscription_update") break;
|
||||
//Manage plan switch + recurring payment
|
||||
case "invoice.payment_succeeded":
|
||||
if (event.data.object.billing_reason !== "subscription_update" && event.data.object.billing_reason !== "subscription_cycle") break;
|
||||
const stripeSubscription = await this.stripeService.getClient().subscriptions.retrieve(event.data.object.subscription);
|
||||
if(stripeSubscription.metadata['env'] !== this.backendVariables.ENV) break;
|
||||
|
||||
const existingSubscription = await this.subscriptionsService.get({where : {stripe_subscription_id : stripeSubscription.id}});
|
||||
|
||||
if(!existingSubscription[0]) break;
|
||||
|
||||
const subscriptionUpdate: any = {};
|
||||
@ -42,19 +46,30 @@ export default class StripeWebhooks extends ApiController {
|
||||
subscriptionUpdate.type = "UNLIMITED";
|
||||
}
|
||||
|
||||
const subscriptionEntityUpdate = Subscription.hydrate<Subscription>(subscriptionUpdate);
|
||||
const subscriptionEntityUpdate = Subscription.hydrate<Subscription>(subscriptionUpdate);
|
||||
|
||||
await validateOrReject(subscriptionEntityUpdate, { groups: ["updateSubscription"], forbidUnknownValues: false });
|
||||
await validateOrReject(subscriptionEntityUpdate, { groups: ["updateSubscription"], forbidUnknownValues: false });
|
||||
|
||||
await this.subscriptionsService.update(existingSubscription[0].uid ,subscriptionEntityUpdate);
|
||||
|
||||
|
||||
//Manage subscription creation and first payment
|
||||
case "checkout.session.completed":
|
||||
if (event.data.object.status !== "complete") break;
|
||||
|
||||
const subscription = JSON.parse(event.data.object.metadata.subscription);
|
||||
const env = event.data.object.metadata.env;
|
||||
|
||||
if (env !== this.backendVariables.ENV) break;
|
||||
|
||||
subscription.stripe_subscription_id = event.data.object.subscription;
|
||||
|
||||
await this.stripeService.getClient().subscriptions.update(subscription.stripe_subscription_id, {
|
||||
metadata: {
|
||||
env: env,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
const subscriptionInfo = await this.stripeService
|
||||
.getClient()
|
||||
.subscriptions.retrieve(subscription.stripe_subscription_id);
|
||||
@ -65,10 +80,14 @@ export default class StripeWebhooks extends ApiController {
|
||||
const subscriptionEntity = Subscription.hydrate<Subscription>(subscription);
|
||||
|
||||
await validateOrReject(subscriptionEntity, { groups: ["createSubscription"], forbidUnknownValues: false });
|
||||
|
||||
await this.subscriptionsService.create(subscriptionEntity);
|
||||
break;
|
||||
|
||||
//Manage plan expiration
|
||||
case "customer.subscription.deleted":
|
||||
const currentSubscription = await this.stripeService.getClient().subscriptions.retrieve(event.data.object.id);
|
||||
if(currentSubscription.metadata['env'] !== this.backendVariables.ENV) break;
|
||||
const subscriptionToDelete = await this.subscriptionsService.get({where : {stripe_subscription_id : event.data.object.id}});
|
||||
if(!subscriptionToDelete[0]) break;
|
||||
await this.subscriptionsService.delete(subscriptionToDelete[0].uid);
|
||||
|
@ -30,6 +30,7 @@ export default class StripeService {
|
||||
cancel_url: this.variables.APP_HOST + "/subscription/error",
|
||||
metadata: {
|
||||
subscription: JSON.stringify(subscription),
|
||||
env: this.variables.ENV,
|
||||
},
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user