浏览代码

农行支付修改

‘chenzhilei’ 4 周之前
父节点
当前提交
0601f09e64
共有 4 个文件被更改,包括 138 次插入16 次删除
  1. 24 0
      src/api/wx-jsapi.js
  2. 1 0
      src/data/payConfig.js
  3. 84 13
      src/views/public-pages/Cashier.vue
  4. 29 3
      src/views/public-pages/PaymentSuccess.vue

+ 24 - 0
src/api/wx-jsapi.js

@@ -23,3 +23,27 @@ export function queryOrderState(tradeNo) {
     params: { tradeNo },
   })
 }
+
+export function updatePayNo(params) {
+  return request({
+    url: '/wxApi/updatePayNo',
+    method: 'GET',
+    params,
+  })
+}
+
+export function queryNongOrderState(params) {
+  return request({
+    url: '/wxApi/queryNongOrderState',
+    method: 'get',
+    params
+  })
+}
+
+export function queryNongOrderPayOrder(data) {
+  return request({
+    url: '/wxApi/queryNongOrderPayOrder',
+    method: 'get',
+    data
+  })
+}

+ 1 - 0
src/data/payConfig.js

@@ -0,0 +1 @@
+export const payAddress = "http://218.93.214.118:6080/"

+ 84 - 13
src/views/public-pages/Cashier.vue

@@ -55,7 +55,7 @@
       </van-popup>
 
       <div style="margin-top: 32px">
-        <van-button block type="success" @click="weChatPay" :disabled="countdownFinished">微信支付</van-button>
+        <van-button block type="success" @click="weChatPay" :disabled="countdownFinished">支付</van-button>
       </div>
     </div>
   </window-size>
@@ -63,12 +63,14 @@
 
 <script setup>
 import store from "@/store";
+import axios from 'axios';
 import {computed, onMounted, ref} from "vue";
 import {getMyCoupons} from "@/api/coupon";
-import {createPayOrder, queryOrderState} from "@/api/wx-jsapi";
+import {createPayOrder, queryOrderState,updatePayNo,queryNongOrderState} from "@/api/wx-jsapi";
 import router from "@/router";
 import PaymentCountdown from '@/components/countdown-for-payment/index.vue'
 import {getDeptPos} from "@/api/appointment";
+import {payAddress} from "@/data/payConfig";
 
 const countdownFinished = ref(false)
 const createOrderRequest = store.getters.getCreateOrderRequest
@@ -135,21 +137,88 @@ function weChatPay() {
 }
 
 function executePaymentAction(order) {
-  WeixinJSBridge.invoke('getBrandWCPayRequest', {
-    appId: order.appId,
-    timeStamp: order.timeStamp,
-    nonceStr: order.serialNo,
-    package: order.prepayId,
-    signType: order.signType,
-    paySign: order.paySign,
-    totalFee: order.cashpayAmt
-  }, () => {
-    queryOrderTradeState(order.tradeNo)
+  // WeixinJSBridge.invoke('getBrandWCPayRequest', {
+  //   appId: order.appId,
+  //   timeStamp: order.timeStamp,
+  //   nonceStr: order.serialNo,
+  //   package: order.prepayId,
+  //   signType: order.signType,
+  //   paySign: order.paySign,
+  //   totalFee: order.cashpayAmt
+  // }, () => {
+  //   queryOrderTradeState(order.tradeNo)
+  // })
+  let params = {
+    payType:"1",
+    amount:createOrderRequest.totalFee * 100,
+    subject:"挂号费",
+    returnUrl:document.location.origin+"/paymentSuccess?tradeNo="+createOrderRequest.tradeNo,
+    body:"挂号费"
+  }
+  // unifiedOrder(params).then((order) => {
+  //   console.log("unifiedOrder",order)
+  //   // createOrderRequest.tradeNo = order.tradeNo
+  //   // store.dispatch({
+  //   //   type: 'storeYjReqNo',
+  //   //   yjReqNo: null
+  //   // })
+  //   // if (Number(createOrderRequest.cashpayAmt) === 0) {
+  //   //   queryOrderTradeState(order.tradeNo)
+  //   // } else {
+  //   //   executePaymentAction(order)
+  //   // }
+  // })
+
+  queryNongOrderPayOrder(params).then((res) => {
+    console.log("unifiedOrder",res)
+    updatePayNoMethod(res.data.data.payOrderId,res.data.data.mchOrderNo,createOrderRequest.tradeNo).then(updateResult=>{
+      if (updateResult > 0) {
+        window.open(res.payData)
+      } else {
+        showToast({
+          message: '更新订单失败,请重试!',
+          position: 'center'
+        })
+      }
+    })
   })
+
+  // axios.post(
+  //     payAddress+"NongPay/unifiedOrder",
+  //     params, // 请求体数据
+  //     { headers: { 'Content-Type': 'application/json' } } // 请求头
+  //   ).then(res=>{
+  //     console.log("unifiedOrder",res)
+  //     updatePayNoMethod(res.data.data.payOrderId,res.data.data.mchOrderNo,createOrderRequest.tradeNo).then(updateResult=>{
+  //       if (updateResult > 0) {
+  //         window.open(res.payData)
+  //       } else {
+  //         showToast({
+  //           message: '更新订单失败,请重试!',
+  //           position: 'center'
+  //         })
+  //       }
+  //     })
+  //   }).catch(err=>{
+  //     console.log("err",err)
+  //   })
 }
 
+function updatePayNoMethod(payOrderId,mchOrderNo,tradeNo) {
+  let params = {payOrderId,mchOrderNo,tradeNo};
+  return updatePayNo(params)
+}
 function queryOrderTradeState(tradeNo) {
-  queryOrderState(tradeNo).then((response) => {
+  // queryOrderStateByTradeNo({tradeNo:tradeNo}).then((response) => {
+  //   createOrderRequest.payTime = response
+  //   store.dispatch({
+  //     type: 'storeCreateOrderRequest',
+  //     createOrderRequest
+  //   }).then(() => {
+  //     router.push('/paymentSuccess');
+  //   })
+  // })
+  queryNongOrderState({tradeNo:tradeNo}).then((response) => {
     createOrderRequest.payTime = response
     store.dispatch({
       type: 'storeCreateOrderRequest',
@@ -193,6 +262,8 @@ onMounted(() => {
     });
   }
   console.log(createOrderRequest)
+  // queryOrderTradeState("202507291753771052643")
+  // router.push('/paymentSuccess');
 })
 </script>
 

+ 29 - 3
src/views/public-pages/PaymentSuccess.vue

@@ -1,12 +1,17 @@
 <template>
   <div class="payment-success">
-    <van-nav-bar title="支付完成" @click-right="autoSubmit(closePage)">
+    <van-button style="width: 100%;height:100%;" text="显示遮罩层" v-if="loading">
+      <van-loading />
+    </van-button>
+    <van-nav-bar title="支付完成" @click-right="autoSubmit(closePage)" v-else>
       <template #right>
         <van-icon name="close" size="18" /><span class="nav-bar-text">关闭</span>
       </template>
     </van-nav-bar>
+    
+    
 
-    <div class="main-box">
+    <div class="main-box" v-else>
       <div class="icon-wrapper">
         <svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" class="icon-success">
           <path fill="currentColor" d="M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z"></path>
@@ -116,18 +121,21 @@
     <van-popup v-model:show="showOrderDetail" position="top" :style="{ height: '100%' }">
       <wx-order-detail @close="showOrderDetail = false" />
     </van-popup>
+    
   </div>
 </template>
 
 <script setup>
 import {useRouter} from "vue-router";
 import store from "@/store";
-import {ref} from "vue";
+import {onMounted, ref} from "vue";
 import WxOrderDetail from '@/components/wx-order-detail/index.vue'
 import DoctorGrade from '@/components/doctor-grade/index.vue'
+import {queryNongOrderState} from "@/api/wx-jsapi";
 
 const router = useRouter()
 const doctorGrade = ref(null)
+const loading = ref(true)
 const createOrderRequest = store.getters.getCreateOrderRequest
 if (createOrderRequest.orderType !== 6 && !createOrderRequest.patientId) {
   router.push('/404')
@@ -153,6 +161,24 @@ const showOrderDetail = ref(false)
 function checkMyOrder() {
   showOrderDetail.value = true
 }
+function queryOrderState() {
+  queryNongOrderState({tradeNo:createOrderRequest.tradeNo}).then((response) => {
+  // queryNongOrderState({tradeNo:tradeNo}).then((response) => {
+    // createOrderRequest.payTime = response
+    if ("SUCCESS" == response.data) {
+      store.dispatch({
+        type: 'storeCreateOrderRequest',
+        createOrderRequest
+      }).then(() => {
+        this.loading = false;
+      })
+    }
+    
+  })
+}
+onMounted(() => {
+  queryOrderState()
+})
 </script>
 
 <style lang="scss">