Browse Source

添加其它支付方式

lex 1 year ago
parent
commit
df224c4566
4 changed files with 85 additions and 21 deletions
  1. 6 0
      src/shims-vue.d.ts
  2. 57 16
      src/views/adapay/pay-result/index.tsx
  3. 20 3
      src/views/student-register/index.tsx
  4. 2 2
      vite.config.ts

+ 6 - 0
src/shims-vue.d.ts

@@ -8,3 +8,9 @@ declare module 'vudio.js';
 declare module 'numeral';
 
 declare module 'howler';
+
+declare global {
+  interface Window {
+    AlipayJSBridge: any;
+  }
+}

+ 57 - 16
src/views/adapay/pay-result/index.tsx

@@ -28,14 +28,12 @@ export default defineComponent({
       price: route.query.price as any,
       orderNo: route.query.orderNo as any,
       userId: route.query.userId as any,
-      payInfo: {} as any
+      payInfo: {} as any,
+      isYeePay: false // 是否为易宝支付
     });
 
-    console.log(state.errorText);
-
     const init = () => {
       const query = route.query;
-      console.log(query);
       // 判断是否有支付对象
       if (!query.orderNo || !query.pay_channel) {
         showConfirmDialog({
@@ -83,11 +81,12 @@ export default defineComponent({
             }
           }
         );
-
+        state.isYeePay = data.paymentVender?.indexOf('yeepay') !== -1;
+        console.log(data, 'data');
         scanCodePay(data.reqParams);
       } catch (e) {
         //
-        console.log(e);
+        // console.log(e);
         // 接口报错也跳转到支付回调页
         window.location.replace(
           location.origin +
@@ -97,22 +96,64 @@ export default defineComponent({
       }
     };
 
+    // 由于js的载入是异步的,所以可以通过该方法,当AlipayJSBridgeReady事件发生后,再执行callback方法
+    const ready = (callback: any) => {
+      if ((window as any).AlipayJSBridge) {
+        callback && callback();
+      } else {
+        document.addEventListener('AlipayJSBridgeReady', callback, false);
+      }
+    };
+    const tradePay = (tradeNO: any) => {
+      ready(function () {
+        // 通过传入交易号唤起快捷调用方式(注意tradeNO大小写严格)
+        (window as any).AlipayJSBridge.call(
+          'tradePay',
+          {
+            tradeNO: tradeNO
+          },
+          function (data: any) {
+            if ('9000' == data.resultCode) {
+              window.location.replace(
+                location.origin +
+                  '/classroom-app/#/payment-result?orderNo=' +
+                  state.orderNo
+              );
+            } else {
+              window.location.replace(
+                location.origin +
+                  '/classroom-app/#/payment-result?orderNo=' +
+                  state.orderNo
+              );
+            }
+            //使用的支付宝内置api实现关闭H5
+            (window as any).AlipayJSBridge.call('closeWebview');
+          }
+        );
+      });
+    };
     const scanCodePay = (data: any) => {
       // 判断支付方式 如果是 test 模式 支付用测试url 否则用生产url
       if (state.pay_channel == 'alipay_qr') {
-        const url =
-          data.prod_mode === 'false'
-            ? data?.expend?.qrcode_url +
-              '?payment_id=' +
-              data.id +
-              '&pay_channel=' +
-              data.pay_channel
-            : data?.expend?.qrcode_url;
-        window.location.href = url;
+        if (state.isYeePay) {
+          tradePay(data.tradeNO);
+        } else {
+          const url =
+            data.prod_mode === 'false'
+              ? data?.expend?.qrcode_url +
+                '?payment_id=' +
+                data.id +
+                '&pay_channel=' +
+                data.pay_channel
+              : data?.expend?.qrcode_url;
+          window.location.href = url;
+        }
       } else if (state.pay_channel == 'alipay_wap') {
         window.location.href = data?.expend?.pay_info;
       } else if (state.pay_channel == 'wx_pub') {
-        const tempPayInfo = data?.expend
+        const tempPayInfo = state.isYeePay
+          ? JSON.parse(data.prePayTn)
+          : data?.expend
           ? JSON.parse(data?.expend?.pay_info)
           : data;
         state.payInfo = tempPayInfo;

+ 20 - 3
src/views/student-register/index.tsx

@@ -39,6 +39,7 @@ export default defineComponent({
     studentRegisterStore.setShoolId(route.query.sId as any);
     const forms = reactive({
       schoolId: route.query.sId as any,
+      paymentType: '', // 支付类型
       popupShow: false,
       popupRegister: false,
       details: [] as any[],
@@ -210,7 +211,7 @@ export default defineComponent({
           {
             hideLoading: false,
             data: {
-              // paymentType: 'adapay',
+              paymentType: forms.paymentType,
               bizId: forms.schoolId, // 乐团编号
               orderType: 'SCHOOL_REGISTER',
               paymentCashAmount: calcPrice.value.amount || 0,
@@ -238,8 +239,24 @@ export default defineComponent({
       }
     };
 
-    onMounted(() => {
-      getRegisterGoods();
+    onMounted(async () => {
+      try {
+        // 获取支付类型
+        const { data } = await request.get(
+          '/edu-app/open/paramConfig/queryByParamName',
+          {
+            requestType: 'form',
+            params: {
+              paramName: 'payment_service_provider'
+            }
+          }
+        );
+        if (data.id) {
+          forms.paymentType = data.paramValue || '';
+        }
+
+        getRegisterGoods();
+      } catch {}
     });
 
     return () => (

+ 2 - 2
vite.config.ts

@@ -13,9 +13,9 @@ function resolve(dir: string) {
 }
 // https://vitejs.dev/config/
 // https://github.com/vitejs/vite/issues/1930 .env
-const proxyUrl = 'https://test.lexiaoya.cn/';
+// const proxyUrl = 'https://test.lexiaoya.cn/';
 // const proxyUrl = 'https://dev.kt.colexiu.com/';
-// const proxyUrl = 'http://192.168.3.14:7989/';
+const proxyUrl = 'http://192.168.3.143:7989/';
 export default defineConfig({
   base: './',
   plugins: [