lex-xin 4 månader sedan
förälder
incheckning
48d45675f0

+ 9 - 0
miniprogram/api/login.ts

@@ -48,6 +48,15 @@ export const api_executePayment = (params: any) => {
   } as any);
 };
 
+/** 查询待支付信息 */
+export const api_userPaymentOrderUnpaid = (params: any) => {
+  return request({
+    url: `/edu-app/userPaymentOrder/unpaid`,
+    method: "get",
+    data: params,
+  } as any);
+};
+
 /** 获取配置参数 */
 export const api_queryByParamName = (params: any) => {
   return request({

+ 2 - 2
miniprogram/pages/index/index.less

@@ -66,7 +66,7 @@ page {
   .showPrice {
     display: flex;
     justify-content: space-between;
-    align-items: flex-end;
+    align-items: center;
   }
   .left {
     flex: 1 auto;
@@ -93,7 +93,7 @@ page {
     color: #AAAAAA;
     line-height: 44rpx;
     text-decoration: line-through;
-    padding-bottom: 14rpx;
+    padding-top: 14rpx;
   }
   .right {
     padding-bottom: 14rpx;

+ 2 - 2
miniprogram/pages/index/index.ts

@@ -139,9 +139,9 @@ Page({
         return
       }
       let info = JSON.stringify({
-        ...that.data.selected,
-        status: 'ing'
+        ...that.data.selected
       });
+      console.log(that.data.selected, "that.data.selected")
       info = encodeURIComponent(info);
       wx.navigateTo({
         url: `../orders/order-detail?orderInfo=${info}`,

+ 1 - 1
miniprogram/pages/login/login.less

@@ -37,7 +37,7 @@
     &[disabled][type=primary] {
       color: #fff;
       background: linear-gradient( 270deg, #FF204B 0%, #FE5B71 100%);
-      opacity: 0.8;
+      opacity: 0.7;
     }
   }
 

+ 2 - 1
miniprogram/pages/login/login.ts

@@ -89,8 +89,9 @@ Page({
   },
   onProtocol(e: any) {
     console.log(e)
+    const { dataset } = e.currentTarget
     wx.navigateTo({
-      url: '../protocol/register'
+      url: '../protocol/register?type=' + dataset.type
     })
   },
   /**

+ 2 - 1
miniprogram/pages/login/login.wxml

@@ -12,7 +12,8 @@
     <view class="protocol-section">
       <image wx:if="{{isAgree}}" bind:tap="onAgree" src="./images/radio-active.png" class="radio"></image>
       <image wx:else bind:tap="onAgree" src="./images/radio-default.png" class="radio"></image>
-      <text bind:tap="onAgree">我已阅读并同意</text><text class="protocol" bind:tap="onProtocol" data-type="register">《小程序服务协议》</text><text class="protocol">《平台交易规则》</text><text class="protocol" bind:tap="onProtocol" data-type="privacy">《隐私政策》</text>
+      <text bind:tap="onAgree">我已阅读并同意</text><text class="protocol" bind:tap="onProtocol" data-type="register">《小程序服务协议》</text><text class="protocol" bind:tap="onProtocol" data-type="privacy">《隐私政策》</text>
+      <!-- <text class="protocol">《平台交易规则》</text> -->
     </view>
   </view>
 </view>

+ 40 - 34
miniprogram/pages/orders/order-detail.ts

@@ -1,11 +1,9 @@
 // pages/orders/order-detail.ts
-
-import { api_executeOrder, api_executePayment, api_queryByParamName } from "../../api/login";
+import { api_executeOrder, api_executePayment, api_queryByParamName, api_userPaymentOrderUnpaid } from "../../api/login";
 
 // 获取应用实例
 const app = getApp<IAppOption>()
 Page({
-
   /**
    * 页面的初始数据
    */
@@ -30,6 +28,7 @@ Page({
     this.queryPayType()
     if (options.orderInfo) {
       const goods = JSON.parse(decodeURIComponent(options.orderInfo));
+      console.log(goods, 'goods')
       this.setData({
         goodsInfo: goods,
         status: goods.status
@@ -39,8 +38,9 @@ Page({
   // 获取后台配置的支付方式
   async queryPayType() {
     try {
+      // wxlite_payment_service_provider
       const { data } = await api_queryByParamName({
-        paramName: 'payment_service_provider'
+        paramName: 'wxlite_payment_service_provider'
       });
       if (data.code == 200) {
         const paramValue = data.data.paramValue ? JSON.parse(data.data.paramValue) : {}
@@ -67,31 +67,42 @@ Page({
       title: "订单提交中...",
     });
     try {
-      const { salePrice, shopId, name, id } = this.data.goodsInfo
-      const { data } = await api_executeOrder({
-        "orderType": "WECHAT_MINI",
-        "paymentType": this.data.paymentType,
-        "paymentCashAmount": salePrice,
-        "paymentCouponAmount": 0,
-        "shopId": shopId,
-        "opneId": app.globalData.userInfo?.liteOpenid,
-        "goodsInfos": [{
-          "goodsId": id,
-          "goodsNum": 1,
-          "goodsType": "ACTIVATION_CODE",
-          "paymentCashAmount": salePrice,
-          "paymentCouponAmount": 0
-        }],
-        "orderName": name,
-        "orderDesc": name
-      })
-      console.log(data, 'data')
-
-      if (data.code === 200) {
-        const { paymentConfig, paymentType, orderNo } = data.data
-        this.onExecutePay(paymentConfig, paymentType, orderNo)
+      const { salePrice, shopId, name, id, orderNo } = this.data.goodsInfo
+      if(orderNo) {
+        const {data} = await api_userPaymentOrderUnpaid({
+          orderNo: orderNo,
+          paymentType: 'WECHAT_MINI'
+        })
+        if (data.code === 200) {
+          const { paymentConfig, paymentType, orderNo } = data.data.paymentConfig
+          this.onExecutePay(paymentConfig, paymentType, orderNo)
+        } else {
+          this.onPayError()
+        }
       } else {
-        this.onPayError()
+        const { data } = await api_executeOrder({
+          "orderType": "WECHAT_MINI",
+          "paymentType": this.data.paymentType,
+          "paymentCashAmount": salePrice,
+          "paymentCouponAmount": 0,
+          "shopId": shopId,
+          "opneId": app.globalData.userInfo?.liteOpenid,
+          "goodsInfos": [{
+            "goodsId": id,
+            "goodsNum": 1,
+            "goodsType": "ACTIVATION_CODE",
+            "paymentCashAmount": salePrice,
+            "paymentCouponAmount": 0
+          }],
+          "orderName": name,
+          "orderDesc": name
+        })
+        if (data.code === 200) {
+          const { paymentConfig, paymentType, orderNo } = data.data
+          this.onExecutePay(paymentConfig, paymentType, orderNo)
+        } else {
+          this.onPayError()
+        }
       }
     } catch {
       wx.hideLoading()
@@ -102,7 +113,7 @@ Page({
       success: async (wxres: any) => {
         const res = await api_executePayment({
           merOrderNo: paymentConfig.merOrderNo,
-          paymentChannel: 'wx_lite',
+          paymentChannel: this.data.paymentChannel || 'wx_lite',
           paymentType,
           userId: app.globalData.userInfo?.id,
           code: wxres.code,
@@ -134,11 +145,6 @@ Page({
       paySign: prePayInfo.paySign,
       signType: prePayInfo.signType ? prePayInfo.signType : 'MD5',
       success(resInfo) {
-        console.log('支付成功', resInfo, {
-          orderNo, 
-          paymentConfig,
-          paymentType
-        })
         wx.showToast({ title: '支付成功', icon: 'success' });
         wx.redirectTo({
           url: '/pages/orders/order-result?orderNo=' + orderNo

+ 1 - 1
miniprogram/pages/orders/order-detail.wxml

@@ -52,6 +52,6 @@
       </view>
     </view>
 
-    <button type="primary" bind:tap="onSubmit">继续支付</button>
+    <button type="primary" bind:tap="onSubmit">{{ goodsInfo.orderNo ? '继续支付' : '立即支付' }}</button>
   </view>
 </view>

+ 32 - 3
miniprogram/pages/orders/orders.ts

@@ -74,7 +74,7 @@ Page({
         opneId: app.globalData.userInfo?.liteOpenid,
         page: currentPage,
         rows: this.data.rows,
-        wechatOrderStatus: tabIdx == 0 ? "" : tabIdx == 1 ? "WAIT_PAY" : tabIdx == 2 ? "WAIT_USE" : tabIdx == 3 ? "SUCCESS" : tabIdx == 4 ? "CLOSED" : "",
+        wechatOrderStatus: tabIdx == 0 ? "" : tabIdx == 1 ? "WAIT_PAY" : tabIdx == 2 ? "WAIT_USE" : tabIdx == 3 ? "PAID" : tabIdx == 4 ? "CLOSED" : "",
       })
       if (data.code == 200) {
         const { rows, total } = data.data;
@@ -166,8 +166,37 @@ Page({
     }
   },
   onPay(e: any) {
-    const { currentTarget } = e
-    const item = this.data.recordList.find((item: any) => item.id === e.currentTarget)
+    const { dataset } = e.currentTarget
+    const item: any = this.data.recordList.find((item: any) => item.id === dataset.id)
+    console.log(dataset, item, 'item')
+    if(item) {
+      const studentPaymentOrderDetails = item.studentPaymentOrderDetails[0]
+      const prices: any = this.formatPrice(item.paymentCashAmount)
+      const params = {
+        // buyNum: "0",
+        decimalPart: prices.decimalPart,
+        // id: "1856596669912584193",
+        integerPart: prices.integerPart,
+        userPaymentOrderDetailId: studentPaymentOrderDetails.userPaymentOrderDetailId,
+        name: studentPaymentOrderDetails.goodsName,
+        num: studentPaymentOrderDetails.goodsNum,
+        originalPrice: studentPaymentOrderDetails.originalPrice,
+        period: studentPaymentOrderDetails.activationCodeInfo.type,
+        pic: studentPaymentOrderDetails.goodsUrl,
+        salePrice: item.paymentCashAmount,
+        // shopId: "1815717514476302337",
+        orderNo: item.orderNo,
+        wechatStatus: item.wechatStatus,
+        // stockNum: "10",
+        typeName: studentPaymentOrderDetails.typeName
+      }
+      let info = JSON.stringify(params);
+      console.log(params, "params")
+      info = encodeURIComponent(info);
+      wx.navigateTo({
+        url: `../orders/order-detail?orderInfo=${info}`,
+      })
+    }
   },
   onOne() {
     wx.redirectTo({

+ 3 - 1
miniprogram/pages/protocol/register.json

@@ -1,5 +1,7 @@
 {
   "usingComponents": {
     "navigation-bar": "/components/navigation-bar/navigation-bar"
-  }
+  },
+  "navigationStyle": "custom",
+  "navigationBarBackgroundColor": "#fff"
 }

+ 16 - 4
miniprogram/pages/protocol/register.ts

@@ -1,18 +1,30 @@
 // pages/protocol/register.ts
+// 获取应用实例
+const app = getApp<IAppOption>()
 Page({
-
   /**
    * 页面的初始数据
    */
   data: {
-
+    src: app.globalData.baseUrl + '/classroom-app/#/preview-protocol'
   },
 
   /**
    * 生命周期函数--监听页面加载
    */
-  onLoad() {
-
+  onLoad(options: any) {
+    console.log(options)
+    if(options.type) {
+      if(options.type === "privacy") {
+        this.setData({
+          src: app.globalData.baseUrl + '/classroom-app/#/privacy-protocol'
+        })
+      } else if(options.type === "register") {
+        this.setData({
+          src: app.globalData.baseUrl + '/classroom-app/#/preview-protocol'
+        })
+      }
+    }
   },
 
   /**

+ 1 - 2
miniprogram/pages/protocol/register.wxml

@@ -1,5 +1,4 @@
 <!--pages/protocol/register.wxml-->
 <view class="container">
-  <navigation-bar title="协议" ></navigation-bar>
-  <web-view src="https://dev.kt.colexiu.com/classroom-app/#/privacy-protocol"></web-view>
+    <web-view src="{{ src }}"></web-view>
 </view>