diff --git a/packages/server/src/api/controllers/PaymentServices/PaymentServicesController.ts b/packages/server/src/api/controllers/PaymentServices/PaymentServicesController.ts index dc3126db8..8d02eaffa 100644 --- a/packages/server/src/api/controllers/PaymentServices/PaymentServicesController.ts +++ b/packages/server/src/api/controllers/PaymentServices/PaymentServicesController.ts @@ -34,6 +34,12 @@ export class PaymentServicesController extends BaseController { this.validationResult, asyncMiddleware(this.updatePaymentMethod.bind(this)) ); + router.delete( + '/:paymentMethodId', + [param('paymentMethodId').exists()], + this.validationResult, + this.deletePaymentMethod.bind(this) + ); return router; } @@ -141,4 +147,33 @@ export class PaymentServicesController extends BaseController { next(error); } } + + /** + * Deletes the given payment method. + * @param {Request<{ paymentMethodId: number }>} req - Request. + * @param {Response} res - Response. + * @param {NextFunction} next - Next function. + * @return {Promise} + */ + private async deletePaymentMethod( + req: Request<{ paymentMethodId: number }>, + res: Response, + next: NextFunction + ) { + const { tenantId } = req; + const { paymentMethodId } = req.params; + + try { + await this.paymentServicesApp.deletePaymentMethod( + tenantId, + paymentMethodId + ); + return res.status(204).send({ + id: paymentMethodId, + message: 'The payment method has been deleted.', + }); + } catch (error) { + next(error); + } + } } diff --git a/packages/webapp/src/containers/Preferences/PaymentMethods/PreferencesPaymentMethodsPage.tsx b/packages/webapp/src/containers/Preferences/PaymentMethods/PreferencesPaymentMethodsPage.tsx index 8ca2c3302..b23bc278a 100644 --- a/packages/webapp/src/containers/Preferences/PaymentMethods/PreferencesPaymentMethodsPage.tsx +++ b/packages/webapp/src/containers/Preferences/PaymentMethods/PreferencesPaymentMethodsPage.tsx @@ -124,10 +124,11 @@ function StripePaymentMethod() { )} - - + {isAccountActive && ( + + )} {!isAccountCreated && (