Jelajahi Sumber

测试考场的支付功能

JXDS18FUJT 1 tahun lalu
induk
melakukan
98490e65f0

+ 34 - 2
src/views/courseCatalog/components/courseCatalog/index.tsx

@@ -4,6 +4,35 @@ import api from '~/api'
 import vip_angle from "./../../../../assets/images/vip_angle.png";
 import try_angle from "./../../../../assets/images/try_angle.png";
 export const CourseCatalog: React.FC = (props: any) => {
+    const wxPay = () => {
+        // WX.config()
+        let query = new URLSearchParams(window.location.search)
+        let ran = navigator.userAgent
+        let isAndroid = ran.indexOf('Android') > -1 || ran.indexOf('Linux') > -1
+        let isIOS = !!ran.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
+        api.studentWxGzhPrepareOrder({
+            "foreType": 2,
+            "goodsId": query.get('id') || "",
+            "goodsType": 1,
+            "phoneType": isIOS?1:2
+        }).then(res => {
+            if (WeixinJSBridge) {
+                WeixinJSBridge.invoke("getBrandWCPayRequest", res.data.data, async function (res: any) {
+                    if (res.err_msg == "get_brand_wcpay_request:ok") {
+                        // 使用以上方式判断前端返回,微信团队郑重提示:
+                        //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
+                        console.log('支付成功')
+                    }
+                });
+            }
+            else {
+                alert('请用微信浏览器打开网页')
+            }
+
+            //  WX.chooseWXPay({...res.data.data})
+        })
+        // wx.chooseWXPay()
+    }
     const [list, setList] = useState([{
         "createTime": "2023-05-09 21:43:53",
         "updateTime": "2023-05-11 13:42:22",
@@ -44,7 +73,7 @@ export const CourseCatalog: React.FC = (props: any) => {
             <div className="video">
                 {list.map(Item => {
                     return (<a
-                  
+
                         href={Item.videoUrl}
                         className="video-item"
                         key={Item.id}
@@ -75,7 +104,10 @@ export const CourseCatalog: React.FC = (props: any) => {
 
                 className="pay"
             >
-                <div className="pay-text">
+                <div onClick={()=>{
+                    wxPay()
+
+                }} className="pay-text">
                     <span
                     >立即支付&nbsp;&nbsp;¥{price}</span>
 

+ 24 - 4
src/views/examRoadVideo/index.tsx

@@ -4,7 +4,9 @@ import { Picker, Popup, Search } from 'react-vant';
 import { SearchOutline } from 'antd-mobile-icons'
 import api from "~/api";
 import { Link } from "react-router-dom";
+import { Toast } from 'react-vant';
 export const ExamRoadVideo: React.FC = (props: any) => {
+
   const [keyWord, setKeyWord] = useState('');
   const [city, setCity] = useState({
     city: "",
@@ -48,6 +50,18 @@ export const ExamRoadVideo: React.FC = (props: any) => {
   }[]>([])
   const getExamListByName = (name?: string) => {
     () => {
+      setProvince({
+        province: "",
+        provinceId: ""
+      })
+      setCounty({
+        county: "",
+        countyId: ""
+      })
+      setCity({
+        city: "",
+        cityId: ""
+      })
       api.studentExamInfoList({
         name: name
       }).then(res => {
@@ -151,7 +165,11 @@ export const ExamRoadVideo: React.FC = (props: any) => {
             <input
               readOnly
               value={city.city}
-              onClick={() => { setCityVisible(true) }}
+              onClick={() => {
+                province.provinceId ? setCityVisible(true) : Toast.fail({
+                  message: "请先选择省份"
+                })
+              }}
               placeholder="地市"
               className="header-city"
               type="text"
@@ -159,7 +177,9 @@ export const ExamRoadVideo: React.FC = (props: any) => {
 
             <input
               onClick={() => {
-                setCountyVisible(true)
+                city.cityId ? setCountyVisible(true) : Toast.fail({
+                  message: "请先选择城市"
+                })
               }}
 
               value={county.county}
@@ -189,7 +209,7 @@ export const ExamRoadVideo: React.FC = (props: any) => {
             }) => {
 
               setCity(item || { city: '', cityId: '' }); setCityVisible(false);
-              getCountyByCityId(item.cityId);
+              getCountyByCityId(item.cityId || '0000');
 
             }} onCancel={() => { setCityVisible(false); }}></Picker>
           </Popup>
@@ -224,7 +244,7 @@ export const ExamRoadVideo: React.FC = (props: any) => {
           {
 
             examList.map(item => {
-              return (<Link key={item.id} to={'/courseCatalog?id=' + item.id+'&price='+(Number(item.price)/100)}><div
+              return (<Link key={item.id} to={'/courseCatalog?id=' + item.id + '&price=' + (Number(item.price) / 100)}><div
                 key={item.id}
                 className="list-item"
 

+ 5 - 2
src/views/home/index.tsx

@@ -33,7 +33,7 @@ export const Home: React.FC = (props: any) => {
       "goodsType": 1,
       "phoneType": 2
     }).then(res => {
-      if (WeixinJSBridge) { 
+      if (WeixinJSBridge) {
         WeixinJSBridge.invoke("getBrandWCPayRequest", res.data.data, async function (res: any) {
           if (res.err_msg == "get_brand_wcpay_request:ok") {
             // 使用以上方式判断前端返回,微信团队郑重提示:
@@ -120,7 +120,10 @@ export const Home: React.FC = (props: any) => {
               <div>熟记考场</div>
               <div>考试不用慌</div>
             </span>
-            <div  className='look'>去看考场</div>
+            <Link to={'/examRoadVideo'}>
+              <div className='look'>去看考场</div>
+            </Link>
+
           </div>
         </div>
       </div>