AlipayPage.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <q-page>
  3. <div
  4. v-if="renderComponent"
  5. v-html="htmlContent"
  6. id="container"
  7. ref="pay"
  8. ></div>
  9. </q-page>
  10. </template>
  11. <script>
  12. import { onMounted, nextTick, ref } from "vue";
  13. import { orderPaymentParamStore } from "stores/orderPaymentParamStore";
  14. export default {
  15. name: "AlipayPage",
  16. setup() {
  17. const oStore = orderPaymentParamStore();
  18. const codeUrl = ref("");
  19. const orderId = ref("");
  20. const price = ref("");
  21. const htmlContent = ref("");
  22. const renderComponent = ref(true);
  23. function b64_to_utf8(str) {
  24. return window.atob(str);
  25. }
  26. const forceRerender = async () => {
  27. renderComponent.value = false;
  28. // Wait for the change to get flushed to the DOM
  29. await nextTick();
  30. // Add the component back in
  31. renderComponent.value = true;
  32. };
  33. onMounted(() => {
  34. var allParamsFromPreviousPage = oStore.getPaymentDetail;
  35. console.log("what I got from book form:");
  36. console.log(allParamsFromPreviousPage);
  37. codeUrl.value = allParamsFromPreviousPage.codeUrl;
  38. console.log("decoded");
  39. htmlContent.value = b64_to_utf8(codeUrl.value);
  40. console.log(htmlContent.value);
  41. orderId.value = allParamsFromPreviousPage.orderId;
  42. price.value = allParamsFromPreviousPage.price;
  43. forceRerender();
  44. var container = document.getElementById("container");
  45. container.innerHTML = htmlContent.value;
  46. document.write(htmlContent.value);
  47. forceRerender();
  48. });
  49. return {
  50. renderComponent,
  51. htmlContent,
  52. };
  53. },
  54. };
  55. </script>