From 1fe7e40cc81d93bc25b3c6096d79a1d6431ff950 Mon Sep 17 00:00:00 2001 From: Stephon Brown Date: Wed, 1 Oct 2025 18:32:27 -0400 Subject: [PATCH] feat(billing): add account billing client --- .../billing/clients/account-billing.client.ts | 24 +++++++++++++++++++ apps/web/src/app/billing/clients/index.ts | 1 + 2 files changed, 25 insertions(+) create mode 100644 apps/web/src/app/billing/clients/account-billing.client.ts diff --git a/apps/web/src/app/billing/clients/account-billing.client.ts b/apps/web/src/app/billing/clients/account-billing.client.ts new file mode 100644 index 00000000000..e5b97126fb3 --- /dev/null +++ b/apps/web/src/app/billing/clients/account-billing.client.ts @@ -0,0 +1,24 @@ +import { Injectable } from "@angular/core"; + +import { ApiService } from "@bitwarden/common/abstractions/api.service"; + +import { BillingAddress, TokenizedPaymentMethod } from "../payment/types"; + +@Injectable() +export class AccountBillingClient { + private endpoint = "/account/billing/vnext"; + private apiService: ApiService; + + constructor(apiService: ApiService) { + this.apiService = apiService; + } + + purchasePremiumSubscription = async ( + paymentMethod: TokenizedPaymentMethod, + billingAddress: Pick, + ): Promise => { + const path = `${this.endpoint}/subscription`; + const request = { tokenizedPaymentMethod: paymentMethod, billingAddress: billingAddress }; + await this.apiService.send("POST", path, request, true, true); + }; +} diff --git a/apps/web/src/app/billing/clients/index.ts b/apps/web/src/app/billing/clients/index.ts index ff962abcbf3..3ba2dde03a1 100644 --- a/apps/web/src/app/billing/clients/index.ts +++ b/apps/web/src/app/billing/clients/index.ts @@ -1,2 +1,3 @@ export * from "./organization-billing.client"; export * from "./subscriber-billing.client"; +export * from "./account-billing.client";