popPayment.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <template>
  2. <div>
  3. <van-nav-bar title="订单信息" />
  4. <van-card class="my-card" v-for="(orderDetail, index) in orderDetails" :key="index" :num="orderDetail.productNumber"
  5. :price="orderDetail.price.toFixed(2)" :title="orderDetail.productName" :thumb="showSugarPhoto(orderDetail.productNo)" />
  6. <van-submit-bar :price="amount" button-color="#07c160" button-text="支付"
  7. @click="wxPay()" />
  8. </div>
  9. </template>
  10. <script>
  11. import { useRoute } from "vue-router";
  12. import { Toast, Dialog } from 'vant';
  13. import { getOrderBySn } from '@/service/popPayment';
  14. import { onMounted, ref } from "vue";
  15. export default {
  16. name: 'popPayment',
  17. setup() {
  18. const route = useRoute();
  19. const sn = route.query.sn;
  20. const status = route.query.status;
  21. const order = ref(null);
  22. const orderDetails = ref([]);
  23. const amount = ref();
  24. // const price = ref();
  25. onMounted(async () => {
  26. if (status == 1) {
  27. Dialog.alert({
  28. message: '订单已支付',
  29. theme: 'round-button',
  30. confirmButtonColor: '#07c160',
  31. }).then(() => {
  32. if (typeof window.WeixinJSBridge !== 'undefined') {
  33. window.WeixinJSBridge.call('closeWindow');
  34. } else {
  35. window.close();
  36. }
  37. })
  38. } else {
  39. await getOrder();
  40. }
  41. });
  42. const getOrder = async () => {
  43. const { data } = await getOrderBySn({ sn: sn });
  44. if (data.code === '00000') {
  45. order.value = data.data;
  46. orderDetails.value = data.data.orderDetails;
  47. console.log("order", order.value);
  48. console.log("orderDetails", orderDetails.value[0]);
  49. amount.value = order.value.price * 100;
  50. } else { Toast.fail(data.message); }
  51. };
  52. const showSugarPhoto = (no) => {
  53. return require(`../assets/order/spunSugar/goods/${no}.png`);
  54. };
  55. const wxPay = () => {
  56. WeixinJSBridge.invoke(
  57. 'getBrandWCPayRequest', {
  58. "appId": "wxd9c7c138a055ee66", //公众号ID,由商户传入
  59. "timeStamp": route.query.timeStamp, //时间戳,自1970年以来的秒数
  60. "nonceStr": route.query.nonceStr, //随机串
  61. "package": route.query.package,
  62. "signType": "RSA", //微信签名方式:
  63. "paySign": route.query.paySign //微信签名
  64. },
  65. function (res) {
  66. if (res.err_msg == "get_brand_wcpay_request:ok") {
  67. console.log("支付成功");
  68. Toast.success('支付成功');
  69. } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
  70. console.log("取消支付");
  71. Toast('取消支付');
  72. } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
  73. console.log("支付失败");
  74. Toast.fail('支付失败');
  75. }
  76. }
  77. )
  78. };
  79. return {
  80. wxPay,
  81. getOrder,
  82. orderDetails,
  83. showSugarPhoto,
  84. // price,
  85. amount
  86. };
  87. }
  88. };
  89. </script>
  90. <style>
  91. .van-image__img{
  92. object-fit: contain !important;
  93. }
  94. </style>