manage facturation
This commit is contained in:
parent
098d42d419
commit
eae078f23a
@ -10,6 +10,10 @@ export type IPostStripeResponse = {
|
|||||||
url: string;
|
url: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type IGetClientPortalSessionResponse = {
|
||||||
|
url: string;
|
||||||
|
};
|
||||||
|
|
||||||
export default class Stripe extends BaseAdmin {
|
export default class Stripe extends BaseAdmin {
|
||||||
private static instance: Stripe;
|
private static instance: Stripe;
|
||||||
private readonly baseURl = this.namespaceUrl.concat("/stripe");
|
private readonly baseURl = this.namespaceUrl.concat("/stripe");
|
||||||
@ -37,4 +41,14 @@ export default class Stripe extends BaseAdmin {
|
|||||||
return Promise.reject(err);
|
return Promise.reject(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getClientPortalSession(stripe_subscription_id: string) {
|
||||||
|
const url = new URL(this.baseURl.concat(`/${stripe_subscription_id}`));
|
||||||
|
try {
|
||||||
|
return await this.getRequest<IGetClientPortalSessionResponse>(url);
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Subscription } from "le-coffre-resources/dist/Admin";
|
||||||
import BaseAdmin from "../../../../../common/Api/LeCoffreApi/Admin/BaseAdmin";
|
import BaseAdmin from "../../../../../common/Api/LeCoffreApi/Admin/BaseAdmin";
|
||||||
|
|
||||||
export interface IPostSubscriptionsParams {
|
export interface IPostSubscriptionsParams {
|
||||||
@ -20,6 +21,18 @@ export default class Subscriptions extends BaseAdmin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async get(q: any) {
|
||||||
|
const url = new URL(this.baseURl);
|
||||||
|
const query = { q };
|
||||||
|
if (q) Object.entries(query).forEach(([key, value]) => url.searchParams.set(key, JSON.stringify(value)));
|
||||||
|
try {
|
||||||
|
return await this.getRequest<Subscription>(url);
|
||||||
|
} catch (err) {
|
||||||
|
this.onError(err);
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description : Create a Document
|
* @description : Create a Document
|
||||||
*/
|
*/
|
||||||
|
@ -46,8 +46,6 @@ export default function SubscribeCheckoutTicket(props: IProps) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleSubmitPayment = async () => {
|
const handleSubmitPayment = async () => {
|
||||||
console.log("handleSubmitPayment");
|
|
||||||
|
|
||||||
const stripeCheckout = {
|
const stripeCheckout = {
|
||||||
type: EType.Standard,
|
type: EType.Standard,
|
||||||
nb_seats: numberOfCollaborators,
|
nb_seats: numberOfCollaborators,
|
||||||
|
@ -8,12 +8,17 @@ import useOpenable from "@Front/Hooks/useOpenable";
|
|||||||
import MessageBox from "@Front/Components/Elements/MessageBox";
|
import MessageBox from "@Front/Components/Elements/MessageBox";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
|
import Subscriptions from "@Front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions";
|
||||||
|
import JwtService from "@Front/Services/JwtService/JwtService";
|
||||||
|
import Stripe from "@Front/Api/LeCoffreApi/Admin/Stripe/Stripe";
|
||||||
|
import { useRouter } from "next/router";
|
||||||
|
|
||||||
export enum EForfeitType {
|
export enum EForfeitType {
|
||||||
"standard",
|
"standard",
|
||||||
"unlimited",
|
"unlimited",
|
||||||
}
|
}
|
||||||
export default function SubscriptionFacturation() {
|
export default function SubscriptionFacturation() {
|
||||||
|
const router = useRouter();
|
||||||
const [forfeitType, _setForfeitType] = useState(EForfeitType.standard);
|
const [forfeitType, _setForfeitType] = useState(EForfeitType.standard);
|
||||||
const { close: closeCancelSubscription, isOpen: isCancelSubscriptionOpen, open: openCancelSubscription } = useOpenable();
|
const { close: closeCancelSubscription, isOpen: isCancelSubscriptionOpen, open: openCancelSubscription } = useOpenable();
|
||||||
const { close: closeConfirmation, isOpen: isConfirmationOpen, open: openConfirmation } = useOpenable();
|
const { close: closeConfirmation, isOpen: isConfirmationOpen, open: openConfirmation } = useOpenable();
|
||||||
@ -24,6 +29,17 @@ export default function SubscriptionFacturation() {
|
|||||||
return;
|
return;
|
||||||
}, [closeCancelSubscription, openConfirmation]);
|
}, [closeCancelSubscription, openConfirmation]);
|
||||||
|
|
||||||
|
const manageBilling = async () => {
|
||||||
|
console.log("handleSubmitPayment");
|
||||||
|
|
||||||
|
try {
|
||||||
|
const jwt = JwtService.getInstance().decodeJwt();
|
||||||
|
const subscription = await Subscriptions.getInstance().get({ officeId: jwt?.office_Id });
|
||||||
|
const stripe_client_portal = await Stripe.getInstance().getClientPortalSession(subscription.stripe_subscription_id!);
|
||||||
|
router.push(stripe_client_portal.url);
|
||||||
|
} catch (error) {}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DefaultTemplate title="Nouvelle souscription">
|
<DefaultTemplate title="Nouvelle souscription">
|
||||||
<div className={classes["root"]}>
|
<div className={classes["root"]}>
|
||||||
@ -141,7 +157,7 @@ export default function SubscriptionFacturation() {
|
|||||||
Arrêter l'abonnement
|
Arrêter l'abonnement
|
||||||
</Typography>
|
</Typography>
|
||||||
</Button>
|
</Button>
|
||||||
<Button>Gérer la facturation</Button>
|
<Button onClick={manageBilling}>Gérer la facturation</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Confirm
|
<Confirm
|
||||||
|
Loading…
x
Reference in New Issue
Block a user