Subscription
This commit is contained in:
parent
75a279711a
commit
6c687b5dde
931
package-lock.json
generated
931
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,7 @@
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev -p 5005",
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
@ -25,7 +25,7 @@
|
||||
"eslint-config-next": "13.2.4",
|
||||
"form-data": "^4.0.0",
|
||||
"jwt-decode": "^3.1.2",
|
||||
"le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.119",
|
||||
"le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.126",
|
||||
"next": "13.2.4",
|
||||
"prettier": "^2.8.7",
|
||||
"react": "18.2.0",
|
||||
|
40
src/front/Api/LeCoffreApi/Admin/Stripe/Stripe.ts
Normal file
40
src/front/Api/LeCoffreApi/Admin/Stripe/Stripe.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import { EType } from "le-coffre-resources/dist/Admin/Subscription";
|
||||
import BaseAdmin from "../BaseAdmin";
|
||||
|
||||
export interface IPostStripeParams {
|
||||
type: EType;
|
||||
nb_seats: number;
|
||||
}
|
||||
|
||||
export type IPostStripeResponse = {
|
||||
url: string;
|
||||
};
|
||||
|
||||
export default class Stripe extends BaseAdmin {
|
||||
private static instance: Stripe;
|
||||
private readonly baseURl = this.namespaceUrl.concat("/stripe");
|
||||
|
||||
private constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
public static getInstance() {
|
||||
if (!this.instance) {
|
||||
return new Stripe();
|
||||
} else {
|
||||
return this.instance;
|
||||
}
|
||||
}
|
||||
|
||||
public async post(body: IPostStripeParams) {
|
||||
const url = new URL(this.baseURl);
|
||||
try {
|
||||
console.log(body);
|
||||
|
||||
return await this.postRequest<IPostStripeResponse>(url, body as any);
|
||||
} catch (err) {
|
||||
this.onError(err);
|
||||
return Promise.reject(err);
|
||||
}
|
||||
}
|
||||
}
|
@ -5,6 +5,9 @@ import { useEffect, useState } from "react";
|
||||
import RadioBox from "@Front/Components/DesignSystem/RadioBox";
|
||||
import Button from "@Front/Components/DesignSystem/Button";
|
||||
import classnames from "classnames";
|
||||
import { EType } from "le-coffre-resources/dist/Admin/Subscription";
|
||||
import Stripe from "@Front/Api/LeCoffreApi/Admin/Stripe/Stripe";
|
||||
import { useRouter } from "next/router";
|
||||
|
||||
export const forfeitsPrices: Record<EForfeitType, number> = {
|
||||
[EForfeitType.standard]: 99,
|
||||
@ -25,6 +28,7 @@ export enum EPaymentFrequency {
|
||||
}
|
||||
|
||||
export default function SubscribeCheckoutTicket(props: IProps) {
|
||||
const router = useRouter();
|
||||
const { forfeitType, numberOfCollaborators } = props;
|
||||
const [paymentFrequency, setPaymentFrequency] = useState<EPaymentFrequency>(props.defaultFrequency ?? EPaymentFrequency.monthly);
|
||||
const [multiplier, setMultiplier] = useState<number>(1);
|
||||
@ -41,6 +45,20 @@ export default function SubscribeCheckoutTicket(props: IProps) {
|
||||
return value.toFixed(2).replace(".", ",");
|
||||
};
|
||||
|
||||
const handleSubmitPayment = async () => {
|
||||
console.log("handleSubmitPayment");
|
||||
|
||||
const stripeCheckout = {
|
||||
type: EType.Standard,
|
||||
nb_seats: numberOfCollaborators,
|
||||
};
|
||||
|
||||
try {
|
||||
const newStripeCheckout = await Stripe.getInstance().post(stripeCheckout);
|
||||
router.push(newStripeCheckout.url);
|
||||
} catch (error) {}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={classes["root"]}>
|
||||
<div className={classes["container"]}>
|
||||
@ -169,7 +187,7 @@ export default function SubscribeCheckoutTicket(props: IProps) {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<Button fullwidth className={classes["payment-button"]}>
|
||||
<Button onClick={handleSubmitPayment} fullwidth className={classes["payment-button"]}>
|
||||
Passer au paiement
|
||||
</Button>
|
||||
</div>
|
||||
|
@ -11,6 +11,8 @@ import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||
import RadioBox from "@Front/Components/DesignSystem/RadioBox";
|
||||
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||
import useOpenable from "@Front/Hooks/useOpenable";
|
||||
// import Stripe from "@Front/Api/LeCoffreApi/Admin/Stripe/Stripe";
|
||||
// import { EType } from "le-coffre-resources/dist/Admin/Subscription";
|
||||
|
||||
export default function SubscribeStandard() {
|
||||
const [numberOfCollaborators, setNumberOfCollaborators] = useState(1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user