TestPayment.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <script setup lang="ts">
  2. import { ref, reactive, computed } from "vue";
  3. import type { PaymentData } from "@/interfaces";
  4. import { useMainStore } from "@/stores/main";
  5. const mainStore = useMainStore();
  6. const credit = ref(0);
  7. function increment() {
  8. credit.value++;
  9. }
  10. function decrement() {
  11. if (credit.value > 0) {
  12. credit.value--;
  13. }
  14. }
  15. const epayment = ref("ecpay");
  16. async function ecpay() {
  17. const data: PaymentData = {
  18. item: `Credit 60 X${credit.value}`,
  19. amount: 500 * credit.value,
  20. };
  21. if (data.amount <= 0) {
  22. return;
  23. }
  24. const originalHTML = await mainStore.TestPayment(data, "zh");
  25. console.log(originalHTML);
  26. let formHTML = originalHTML?.replace(
  27. '<script type="text/javascript">document.getElementById("data_set").submit();</scr',
  28. ""
  29. );
  30. formHTML = formHTML?.replace("ipt>", "");
  31. const payFormElement = document.getElementById("pay-form");
  32. payFormElement!.innerHTML = formHTML!;
  33. const ecpayForm: HTMLFormElement = <HTMLFormElement>(
  34. document.getElementById("data_set")
  35. );
  36. ecpayForm.submit();
  37. }
  38. </script>
  39. <template>
  40. <v-col>
  41. <span>Credit 60</span>
  42. <span>$500</span>
  43. <v-btn icon="remove" @click="decrement"></v-btn>
  44. {{ credit }}
  45. <v-btn icon="add" @click="increment"></v-btn>
  46. <span>{{ 500 * credit }}</span>
  47. </v-col>
  48. <div>
  49. <span>付款方式</span>
  50. <v-row>
  51. <span>ecpay</span>
  52. </v-row>
  53. </div>
  54. <v-btn @click="ecpay">往前</v-btn>
  55. <div id="pay-form"></div>
  56. </template>
  57. <style lang="scss"></style>