Update paymentcompleted.vue

This commit is contained in:
Karl Carriere
2025-01-06 12:36:32 -05:00
parent 629a3e29d3
commit cb3d0b13ac
5 changed files with 53 additions and 45 deletions

View File

@@ -124,5 +124,14 @@
"amount": "amount", "amount": "amount",
"message": "Message (optional)", "message": "Message (optional)",
"send": "send" "send": "send"
},
"paymentConfirmation": {
"success": {
"title": "Payment completed",
"message": "Your payment was successful. Thank you for supporting ",
"usernameDefault": "this user.",
"receipt": "A receipt has been sent to your email address.",
"continue": "Continue"
}
} }
} }

View File

@@ -124,5 +124,14 @@
"amount": "Montant", "amount": "Montant",
"message": "Message (facultatif)", "message": "Message (facultatif)",
"send": "Envoyez" "send": "Envoyez"
},
"paymentConfirmation": {
"success": {
"title": "Paiement complété",
"message": "Votre paiement a été effectué avec succès. Merci de soutenir ",
"usernameDefault": "cet utilisateur.",
"receipt": "Un reçu a été envoyé à votre adresse courriel.",
"continue": "Continuer"
}
} }
} }

View File

@@ -1,5 +1,6 @@
import { useAuthStore } from '@/stores/authStore.js'; import { useAuthStore } from '@/stores/authStore.js';
import CTA01 from '@/views/CTA01.vue'; import CTA01 from '@/views/CTA01.vue';
import PaymentFailed from '@/views/PaymentFailed.vue';
import CreatorList from '@/views/browser/CreatorList.vue'; import CreatorList from '@/views/browser/CreatorList.vue';
import ContentEditorPage from '@/views/contents/ContentEditorPage.vue'; import ContentEditorPage from '@/views/contents/ContentEditorPage.vue';
import ContentPage from '@/views/contents/ContentPage.vue'; import ContentPage from '@/views/contents/ContentPage.vue';
@@ -22,7 +23,6 @@ import ProfilePage from '@/views/profile/ProfilePage.vue';
import { createRouter, createWebHistory } from 'vue-router'; import { createRouter, createWebHistory } from 'vue-router';
import LoginView from '../views/LoginView.vue'; import LoginView from '../views/LoginView.vue';
import PaymentCompleted from '../views/PaymentCompleted.vue'; import PaymentCompleted from '../views/PaymentCompleted.vue';
import PaymentFailed from "@/views/PaymentFailed.vue";
import Home from '../views/main/Home.vue'; import Home from '../views/main/Home.vue';
import Wallet from '../views/main/Wallet.vue'; import Wallet from '../views/main/Wallet.vue';
@@ -135,18 +135,14 @@ const routes = [
meta: { notAuthenticated: true }, meta: { notAuthenticated: true },
}, },
{ {
path: '/paymentcompleted', path: '/paymentcompleted/:creatorId',
name: 'PaymentCompleted', name: 'PaymentCompleted',
component: PaymentCompleted, component: PaymentCompleted,
}, },
{ {
path: '/paymentfailed', path: '/paymentfailed',
name: 'PaymentFailed', name: 'PaymentFailed',
component: PaymentFailed, component: PaymentFailed,
}, },
{ {
path: '/wallet', path: '/wallet',

View File

@@ -2,10 +2,13 @@
<v-container class="py-10"> <v-container class="py-10">
<v-row class="d-flex flex-column align-center"> <v-row class="d-flex flex-column align-center">
<v-col cols="10"> <v-col cols="10">
<v-card class="elevation-3" style="background-color: white; border-radius: 12px;"> <v-card
class="elevation-3"
style="background-color: white; border-radius: 12px"
>
<!-- Title Section --> <!-- Title Section -->
<v-card-title class="text-center text-h4 font-weight-bold mb-4"> <v-card-title class="text-center text-h4 font-weight-bold mb-4">
Paiement complété {{ $t('paymentConfirmation.success.title') }}
</v-card-title> </v-card-title>
<!-- Check Icon --> <!-- Check Icon -->
@@ -15,27 +18,22 @@
<!-- Thank You Message --> <!-- Thank You Message -->
<v-card-text class="text-center mb-4"> <v-card-text class="text-center mb-4">
<p class="text-h6">Merci de supporter</p> <p class="text-h6">
<p class="text-h5 font-weight-bold">{{ creatorName }}</p> {{ $t('paymentConfirmation.success.message') }}
<span class="text-h5 font-weight-bold" v-if="creatorUserName">{{
creatorUserName
}}</span>
<span class="text-h6" v-else>{{
$t('paymentConfirmation.success.usernameDefault')
}}</span>
</p>
</v-card-text> </v-card-text>
<!-- Email Input and Receipt Button --> <!-- Email Input and Receipt Button -->
<v-card-text> <v-card-text class="text-center mb-4">
<v-row class="d-flex flex-column align-center"> <p class="text-h6">
<v-col cols="12" sm="10" md="8" lg="6"> {{ $t('paymentConfirmation.success.receipt') }}
<v-text-field </p>
v-model="email"
label="Entrez votre email pour recevoir le reçu"
variant="underlined"
hide-details
></v-text-field>
</v-col>
<v-col cols="12" class="text-center">
<v-btn color="primary" class="text-white" @click="getReceipt">
Télécharger le reçu
</v-btn>
</v-col>
</v-row>
</v-card-text> </v-card-text>
<!-- Continue Button --> <!-- Continue Button -->
@@ -43,9 +41,9 @@
<v-btn <v-btn
color="primary" color="primary"
class="text-white px-5 py-3" class="text-white px-5 py-3"
@click="router.push({ path: `/${creatorUserName}` })" @click="router.push({ path: `/@${creatorUserName}` })"
> >
Continuer {{ $t('paymentConfirmation.success.continue') }}
</v-btn> </v-btn>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
@@ -63,27 +61,23 @@
</template> </template>
<script setup> <script setup>
import { ref, onBeforeMount } from 'vue';
import { useRouter } from 'vue-router';
import { useClient } from '@/plugins/api.js'; import { useClient } from '@/plugins/api.js';
import { onBeforeMount, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
const router = useRouter(); const router = useRouter();
const client = useClient(); const client = useClient();
const route = useRoute();
const queryString = window.location.search; const creatorId = route.params.creatorId;
const urlParams = new URLSearchParams(queryString);
const creatorId = urlParams.get('creatorId');
const creatorName = ref('');
const creatorUserName = ref(''); const creatorUserName = ref('');
const email = ref(''); const email = ref('');
const errorSnackBar = ref(false); const errorSnackBar = ref(false);
onBeforeMount(async () => { onBeforeMount(async () => {
try { try {
const response = await client.get(`/api/Users?UserId=${creatorId}`); const response = await client.get(`/api/creators/${creatorId}`);
creatorName.value = `${response.data.firstName} ${response.data.lastName}`; creatorUserName.value = response.data.name;
creatorUserName.value = response.data.userName;
} catch (error) { } catch (error) {
console.error('Failed to fetch creator data:', error); console.error('Failed to fetch creator data:', error);
} }

View File

@@ -207,8 +207,8 @@ onBeforeUnmount(() => {
v-if="creator" v-if="creator"
:creator-id="creator.id" :creator-id="creator.id"
:creator-name="creator.name" :creator-name="creator.name"
:on-success-url="baseURL + '/paymentcompleted'" :on-success-url="baseURL + '/paymentcompleted/' + creator.id"
:on-cancelled-url="baseURL + '/@' + creatorName" :on-cancelled-url="baseURL + '/paymentfailed/' + creator.id"
></donation-button-banner> ></donation-button-banner>
</div> </div>
</div> </div>