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",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev -p 5005",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
@ -25,7 +25,7 @@
|
|||||||
"eslint-config-next": "13.2.4",
|
"eslint-config-next": "13.2.4",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"jwt-decode": "^3.1.2",
|
"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",
|
"next": "13.2.4",
|
||||||
"prettier": "^2.8.7",
|
"prettier": "^2.8.7",
|
||||||
"react": "18.2.0",
|
"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 RadioBox from "@Front/Components/DesignSystem/RadioBox";
|
||||||
import Button from "@Front/Components/DesignSystem/Button";
|
import Button from "@Front/Components/DesignSystem/Button";
|
||||||
import classnames from "classnames";
|
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> = {
|
export const forfeitsPrices: Record<EForfeitType, number> = {
|
||||||
[EForfeitType.standard]: 99,
|
[EForfeitType.standard]: 99,
|
||||||
@ -25,6 +28,7 @@ export enum EPaymentFrequency {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function SubscribeCheckoutTicket(props: IProps) {
|
export default function SubscribeCheckoutTicket(props: IProps) {
|
||||||
|
const router = useRouter();
|
||||||
const { forfeitType, numberOfCollaborators } = props;
|
const { forfeitType, numberOfCollaborators } = props;
|
||||||
const [paymentFrequency, setPaymentFrequency] = useState<EPaymentFrequency>(props.defaultFrequency ?? EPaymentFrequency.monthly);
|
const [paymentFrequency, setPaymentFrequency] = useState<EPaymentFrequency>(props.defaultFrequency ?? EPaymentFrequency.monthly);
|
||||||
const [multiplier, setMultiplier] = useState<number>(1);
|
const [multiplier, setMultiplier] = useState<number>(1);
|
||||||
@ -41,6 +45,20 @@ export default function SubscribeCheckoutTicket(props: IProps) {
|
|||||||
return value.toFixed(2).replace(".", ",");
|
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 (
|
return (
|
||||||
<div className={classes["root"]}>
|
<div className={classes["root"]}>
|
||||||
<div className={classes["container"]}>
|
<div className={classes["container"]}>
|
||||||
@ -169,7 +187,7 @@ export default function SubscribeCheckoutTicket(props: IProps) {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Button fullwidth className={classes["payment-button"]}>
|
<Button onClick={handleSubmitPayment} fullwidth className={classes["payment-button"]}>
|
||||||
Passer au paiement
|
Passer au paiement
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,6 +11,8 @@ import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
|||||||
import RadioBox from "@Front/Components/DesignSystem/RadioBox";
|
import RadioBox from "@Front/Components/DesignSystem/RadioBox";
|
||||||
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import useOpenable from "@Front/Hooks/useOpenable";
|
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() {
|
export default function SubscribeStandard() {
|
||||||
const [numberOfCollaborators, setNumberOfCollaborators] = useState(1);
|
const [numberOfCollaborators, setNumberOfCollaborators] = useState(1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user