@sourceloop/ctrl-plane-subscription-service
Version:
Subscription management microservice for SaaS control plane.
37 lines (33 loc) • 1.23 kB
text/typescript
import {intercept} from '@loopback/core';
import {repository} from '@loopback/repository';
import {post, requestBody} from '@loopback/rest';
import {authorize} from 'loopback4-authorization';
import {WEBHOOK_VERIFIER} from '../keys';
import {InvoiceRepository} from '../repositories';
import {BillingCustomerRepository} from '../repositories/billing-customer.repository';
import {IContent, IPayload} from '../types';
export class WebhookController {
constructor(
(BillingCustomerRepository)
public billingCustomerRepository: BillingCustomerRepository,
(InvoiceRepository)
public invoiceRepository: InvoiceRepository,
) {}
({
permissions: ['*'],
})
(WEBHOOK_VERIFIER)
('/webhooks/billing-payment')
async handleWebhook(() payload: IPayload): Promise<void> {
const content = payload.content;
await this.handlePayment(content);
}
private async handlePayment(content: IContent): Promise<void> {
const invoice = await this.invoiceRepository.find({
where: {invoiceId: content.invoice.id},
});
await this.invoiceRepository.updateById(invoice[0].id, {
invoiceStatus: content.invoice.status,
});
}
}