shenwu před 5 měsíci
rodič
revize
f6352e4a30

+ 8 - 4
src/pages/book/BookArticle/index.tsx

@@ -7,7 +7,6 @@ import './index.less';
 import TopNavBar from '@src/components/TopNavBar/index';
 import Taro, { useShareAppMessage } from '@tarojs/taro';
 import BookConfigPuP from '@src/components/bookConfigPup';
-import { BookStore } from '@src/store/book';
 import useApi from '@src/Hook/useApi';
 import { getReadLog, setReadLog } from '@src/utils/loginSto';
 import GlobalModal from '@src/components/bottomModal';
@@ -62,7 +61,7 @@ const BookArticle: React.FC<BookArticleProps> = ({ store }) => {
             } catch (e) {
                 console.error('Error loading book config:', e);
             }
-            onReport()
+            // onReport()
             //假如存在阅读记录获取对应章节的条数
             let readLogId = getReadLog(openBookData?.bookId)
             getBookContent({ pageNum: 1, pageSize: readLogId ? Number(readLogId?.split('-')[1]) : 2 }).then((res: any) => {
@@ -94,7 +93,7 @@ const BookArticle: React.FC<BookArticleProps> = ({ store }) => {
     }
     // 页面卸载的操作
     useEffect(() => {
-        reportRead()
+        // reportRead()
         return () => {
             console.log("卸载", newReadLogIdRef.current);
             openBookData && setReadLog({ [openBookData.bookId]: newReadLogIdRef.current })//离开时存放当前位置
@@ -189,7 +188,7 @@ const BookArticle: React.FC<BookArticleProps> = ({ store }) => {
                         for (let item of res?.data?.data?.records) {
                             let needPay = item.needPay //是否付费解锁
                             let isPay = item.isPay //是否已付费
-                            let vipFree = userInfoStore?.isVip && item?.vipFree
+                            let vipFree = userInfoStore?.isVip && item?.vipFree //
                             // 不是VIP 并且 没有显示支付 并且 本段落需要支付 并且 本段落没有支付解锁
                             if (!vipFree && !showPay && needPay && !isPay) {
                                 setShowPay(true)
@@ -197,6 +196,11 @@ const BookArticle: React.FC<BookArticleProps> = ({ store }) => {
                                 setPayBook(item)
                                 break
                             }
+                            // 假如开通了vip但showPay没有关闭
+                            if (showPay && vipFree) {
+                                setShowPay(false)
+                                break
+                            }
                         }
                     }
                     setIsLoad(false)

+ 0 - 12
src/pages/book/bookDetails/index.tsx

@@ -19,20 +19,8 @@ interface Props {
 class BookDetails extends Component<Props> {
     state: state = {
     }
-    // onShareAppMessage() {
-    //     return {
-    //         title: '我的好朋友',
-    //         path: 'pages/book/bookDetails/index?bookId' + this.props.store.bookStore.openBookData?.bookId,
-    //         imageUrl: this.props.store.bookStore.openBookData?.picUrl
-    //     }
-    // }
 
     componentDidShow(options) {
-        // Taro.showShareMenu({
-        //     showShareItems: ["shareAppMessage"],
-        //     success: (res) => { log("成功") },
-        //     fail: (err) => { log("err") }
-        // });
         let params = Taro.getCurrentInstance()?.router?.params
         // 获取书籍详情
         if (params?.bookId) {

+ 50 - 12
src/server/wx/pay.ts

@@ -7,7 +7,7 @@ type PublicData = {
     orderCondition: string,//支付场景
 }
 /**现金购买-预下单*/
-export function cashBuy(data: PublicData, callbackFn?: (b:boolean) => void) {
+export function cashBuy(data: PublicData, callbackFn?: (b: boolean) => void) {
     return new Promise(async (resolve, reject) => {
         try {
             // 初始化
@@ -16,7 +16,7 @@ export function cashBuy(data: PublicData, callbackFn?: (b:boolean) => void) {
                 method: 'POST',
                 data,
                 success: async (res) => {
-                    let r = await whcatPay(res.data?.data?.wechatMchPayInfo)
+                    let r = await whcatPay(res.data?.data?.wechatMchPayInfo, res.data?.data?.orderNo)
                     console.log("支付操作完成!!", r)
                     callbackFn?.(true)
                     resolve(r)
@@ -31,7 +31,7 @@ export function cashBuy(data: PublicData, callbackFn?: (b:boolean) => void) {
     })
 }
 /**书币购买*/
-export function virtualBuy(data: PublicData, callbackFn?: (b:boolean) => void) {
+export function virtualBuy(data: PublicData, callbackFn?: (b: boolean) => void) {
     return new Promise(async (resolve, reject) => {
         try {
             // 初始化
@@ -40,7 +40,7 @@ export function virtualBuy(data: PublicData, callbackFn?: (b:boolean) => void) {
                 method: 'POST',
                 data,
                 success: async (res) => {
-                    getUserInfo()//刷新个人信息
+                    await getUserInfo()//刷新个人信息
                     callbackFn?.(true)
                     resolve(res)
                 },
@@ -58,7 +58,7 @@ interface Data extends PublicData {
     templateIndex: number,//下标
 }
 /**模板购买-预下单*/
-export function templateBuy(data: Data, callbackFn?: (b:boolean) => void) {
+export function templateBuy(data: Data, callbackFn?: (b: boolean) => void) {
     return new Promise(async (resolve, reject) => {
         try {
             // 初始化
@@ -66,11 +66,11 @@ export function templateBuy(data: Data, callbackFn?: (b:boolean) => void) {
                 url: '/app/pay/buyOfTemplate',
                 method: 'POST',
                 data,
-                success:async (res) => {
-                    let r = await whcatPay(res.data?.data?.wechatMchPayInfo)
+                success: async (res) => {
+                    let r = await whcatPay(res.data?.data?.wechatMchPayInfo, res.data?.data?.orderNo)
                     console.log("支付操作完成!!", r)
-                    getUserInfo()//刷新个人信息
-                    getRechargeTemplate()//刷新模板
+                    await getUserInfo()//刷新个人信息
+                    await getRechargeTemplate()//刷新模板
                     callbackFn?.(true)
                     resolve(r)
                 },
@@ -92,8 +92,10 @@ type WhcatPay = {
     signType: any,//签名算法
     paySign: string,//签名
 }
-export function whcatPay(params: WhcatPay) {
-    console.log("微信支付:", params)
+export function whcatPay(params: WhcatPay, orderNo: string) {
+    console.log("微信支付:", params, { orderNo })
+    let time: any = null
+    let num = 0
     return new Promise(async (resolve, reject) => {
         try {
             // 初始化
@@ -105,7 +107,23 @@ export function whcatPay(params: WhcatPay) {
                         title: '支付成功!',
                         icon: 'success'
                     });
-                    resolve(true)
+                    if (time) {
+                        clearInterval(time)
+                    }
+                    time = setInterval(async () => {
+                        let data: any = await queryOrder(orderNo)
+                        if (data && data?.orderStatus === 2) {
+                            resolve(true)
+                            clearInterval(time)
+                            num = 0
+                        }
+                        num += 1
+                        if (num > 10) {
+                            resolve(true)
+                            clearInterval(time)
+                            num = 0
+                        }
+                    }, 1000)
                 },
                 fail: (err) => {
                     console.log("支付失败:", err)
@@ -127,4 +145,24 @@ export function whcatPay(params: WhcatPay) {
             reject(error);
         }
     })
+}
+/**查询订单结果*/
+export function queryOrder(orderNo) {
+    return new Promise(async (resolve, reject) => {
+        try {
+            // 初始化
+            Taro.request({
+                url: `/app/pay/orderInfo/${orderNo}`,
+                method: 'GET',
+                success: (res) => {
+                    resolve(res.data?.data)
+                },
+                fail: (err) => {
+                    reject(err);
+                }
+            })
+        } catch (error) {
+            reject(error);
+        }
+    })
 }