Sfoglia il codice sorgente

add ecpay at admin

tomoya 1 anno fa
parent
commit
198de31918

+ 6 - 1
frontend/src/api.ts

@@ -134,5 +134,10 @@ export const api = {
   },
   async getVideos(token: string) {
     return axios.get<Video[]>(`${apiUrl}/api/v1/videos/`, authHeaders(token));
-  }
+  },
+  async ecpayPaymentHTML(token: string, amount: number) {
+    const formData = new FormData();
+    formData.append("amount", amount.toString());
+    return axios.post<string>(`${apiUrl}/api/v1/payment/ecpayVideoCharge`, formData, authHeaders(token))
+  },
 };

+ 11 - 0
frontend/src/stores/main.ts

@@ -453,6 +453,17 @@ export const useMainStore = defineStore("MainStoreId", {
       } catch (error) {
         await mainStore.checkApiError(error);
       }
+    },
+    async ecpayPaymentHTML(amount:number) {
+      const mainStore = useMainStore();
+      try {
+        const response = await api.ecpayPaymentHTML(mainStore.token, amount)
+        if (response) {
+          return response.data;
+        } 
+      }catch (error) {
+        await mainStore.checkApiError(error);
+      }
     }
   }
 });

+ 32 - 4
frontend/src/views/main/admin/TestECPay.vue

@@ -12,19 +12,33 @@
       </v-card-actions>
     </v-card>
   </v-container>
+  <div id="pay-form"></div>
 </template>
 <script setup lang="ts">
-import { ref} from 'vue';
+import { ref } from 'vue';
 import { required } from '@/utils';
 import { useAdminStore } from '@/stores/admin';
 import axios from "axios"; 
+import { useMainStore } from "@/stores/main";
+
+const mainStore = useMainStore();
 
 async function ECPaySubmit() {
+  /*
+  const timestamp = Date.now()
+  const date = new Date(timestamp);
+  const year = date.getFullYear();
+  const month = date.getMonth() + 1;
+  const day = date.getDate();
+  const hour = date.getHours();
+  const minute = date.getMinutes();
+  const second = date.getSeconds();
+
   console.log("ECPay button pushed")
   const formData = new URLSearchParams();
-  formData.append("MerchantID", "3002607") //必填
+  formData.append("MerchantID", "3226141") //必填
   formData.append("MerchantTradeNo", "AAA000") //必填
-  formData.append("MerchantTradeDate", "2023/05/15 10:35:10") //必填
+  formData.append("MerchantTradeDate", `${year}/${month}/${day} ${hour}:${minute}:${second}`) //必填
   formData.append("PaymentType", "aio") //必填
   formData.append("TotalAmount", "600") //必填
   formData.append("TradeDesc", "choozmo SaaS") //必填
@@ -49,7 +63,21 @@ async function ECPaySubmit() {
   formData.append("CustomField4", "")
   formData.append("Language", "")
   return axios.post("https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/V5", formData)
-  
+  */
+  const originalHTML = await mainStore.ecpayPaymentHTML(500)
+  console.log(originalHTML)
+  let formHTML = originalHTML?.replace('<script type="text/javascript">document.getElementById("data_set").submit();</scr', '')
+  formHTML = formHTML?.replace('ipt>','')
+  console.log(formHTML)
+  const payFormElement = document.getElementById('pay-form');
+  payFormElement!.innerHTML = formHTML!
+  const ecpayForm:HTMLFormElement = <HTMLFormElement>document.getElementById('data_set')
+  console.log(ecpayForm)
+  ecpayForm.submit()
 
+    
+
+  
+  
 }
 </script>