|
@@ -1,9 +1,111 @@
|
|
|
<template>
|
|
|
- <q-page> wechatpay </q-page>
|
|
|
+ <q-page>
|
|
|
+ <div class="row">
|
|
|
+ <div class="text-center text-h5 col-12" style="background-color: #e7e7e7">
|
|
|
+ Product Name: {{ productName }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row justify-center" style="min-height: 500px">
|
|
|
+ <div
|
|
|
+ class="column shadow-7 rounded-borders"
|
|
|
+ style="
|
|
|
+ position: relative;
|
|
|
+ width: 340px;
|
|
|
+ max-width: 95%;
|
|
|
+ min-height: 450px;
|
|
|
+ height: 600;
|
|
|
+ background-color: yellow;
|
|
|
+ background-image: url('https://photoprism.hichinatravel.com/api/v1/t/d6f91f961d96953e9a61f331f328468caddd05b7/32mcf2k4/fit_2048');
|
|
|
+ background-size: cover;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div class="col-2"></div>
|
|
|
+ <div class="col-2 row justify-center">
|
|
|
+ <div class="text-left col-7">Total Price: {{ price }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="col row justify-center">
|
|
|
+ <div class="col-8">
|
|
|
+ <QRCodeVue3 :width="220" :height="220" :value="htmlContent" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </q-page>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import QRCodeVue3 from "qrcode-vue3";
|
|
|
+import { onMounted, ref, getCurrentInstance } from "vue";
|
|
|
+import { api } from "boot/axios";
|
|
|
+import { orderPaymentParamStore } from "stores/orderPaymentParamStore";
|
|
|
+import { useQuasar } from "quasar";
|
|
|
export default {
|
|
|
name: "WechatpayPage",
|
|
|
+ components: {
|
|
|
+ QRCodeVue3: QRCodeVue3,
|
|
|
+ },
|
|
|
+ setup() {
|
|
|
+ const instance = getCurrentInstance();
|
|
|
+ const app = instance.appContext.app;
|
|
|
+ const gp = app.config.globalProperties;
|
|
|
+ const $q = useQuasar();
|
|
|
+
|
|
|
+ const oStore = orderPaymentParamStore();
|
|
|
+
|
|
|
+ const refreshIntervalId = ref("");
|
|
|
+
|
|
|
+ const codeUrl = ref("");
|
|
|
+ const orderId = ref("");
|
|
|
+ const price = ref("");
|
|
|
+ const productName = ref("");
|
|
|
+ const htmlContent = ref("");
|
|
|
+
|
|
|
+ function checkPaymentStatus() {
|
|
|
+ api
|
|
|
+ .get("/api/v1/order/wechatpaystatus/" + orderId.value)
|
|
|
+ .then((response) => {
|
|
|
+ console.log("status is:");
|
|
|
+ console.log(response.data);
|
|
|
+ if ("SUCCESS" == response.data) {
|
|
|
+ // jump to my order page
|
|
|
+ clearInterval(refreshIntervalId.value);
|
|
|
+ gp.$goPage("/my-orders");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ console.log("Error getting /api/v1/order/wechatpaystatus");
|
|
|
+ console.log(e);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function b64_to_utf8(str) {
|
|
|
+ return window.atob(str);
|
|
|
+ }
|
|
|
+
|
|
|
+ onMounted(() => {
|
|
|
+ var allParamsFromPreviousPage = oStore.getPaymentDetail;
|
|
|
+ productName.value = allParamsFromPreviousPage.productName;
|
|
|
+ if (productName.value === "") {
|
|
|
+ gp.$goPage("/");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ console.log("what I got from book form:");
|
|
|
+ console.log(allParamsFromPreviousPage);
|
|
|
+ codeUrl.value = allParamsFromPreviousPage.codeUrl;
|
|
|
+ console.log("decoded");
|
|
|
+ htmlContent.value = b64_to_utf8(codeUrl.value);
|
|
|
+ console.log(htmlContent.value);
|
|
|
+ orderId.value = allParamsFromPreviousPage.orderId;
|
|
|
+ price.value = allParamsFromPreviousPage.price;
|
|
|
+ refreshIntervalId.value = setInterval(() => {
|
|
|
+ checkPaymentStatus();
|
|
|
+ }, 3000);
|
|
|
+ });
|
|
|
+ return {
|
|
|
+ htmlContent,
|
|
|
+ productName,
|
|
|
+ price,
|
|
|
+ };
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|