vant项目 开发遇到的问题

1.使用vant调起支付表单支付失败
解决方式:动态创建form表单提交参数。

    var tempForm = document.createElement("form");
    tempForm.id = "tempForm1";
    tempForm.method = "post";
    tempForm.action = "/scanpay/paymentGateway/";
    
    var hmhtOrderAmt = document.createElement("input"); 
    hmhtOrderAmt.type = "hidden";
    hmhtOrderAmt.name = "mhtOrderAmt";
    hmhtOrderAmt.value = this.money;
    tempForm.appendChild(hmhtOrderAmt);
    
    //添加临时form
    document.body.appendChild(tempForm);
    
    //必须手动的触发,否则只能看到页面刷新而没有打开新窗口
    tempForm.submit();
    //移除临时创建的form
    document.body.removeChild(tempForm);
```

2.使用自定义数字键盘时系统默认键盘弹起
解决方式:设置输入框为只读状态,自定义光标。

	html
       <div class="iptStyle">
          <van-field
            v-model="money"
            class="order-money-ipt"
            type="number"
            name="mhtOrderAmt"
            placeholder="0.00"
            :border="false"
            :center="true"
            readonly
            @touchstart.native.stop="showKeyboard"
            id="input"
          >
            <span slot="label" class="order-unit">¥</span>
          </van-field>
          <div v-show="outlineCss" class="ipt">{{this.money}}</div>
        </div>

       showKeyboard() {
          this.show = true;
          this.outlineCss = true;
          if (this.money.length > 0) {
          let iptElement = document.getElementById("input");
          iptElement.style.opacity = "0";
          }
       }
       
		.ipt {
           position: absolute;
           top: 50%;
           margin-top: -1.333438rem;
           left: 5.95rem;
           font-size: 2rem;
           height: 2.666875rem;
           line-height: 2.666875rem;

          &::after {
          content: "";
          animation: cursor-blinks 1.5s infinite steps(1, start);
          position: absolute;
          width: 2px;
          height: 2.666875rem;
          right: 0;
          top: 2.5px;
          background: rgb(0, 0, 0);
          border-radius: 2px;
         }
      }

3.数据加密问题RSA、AES

  (1).RSA加密解密工具类(加密公钥)
         jsencrypt.js
         /*****
           * RSA加密解密工具类
        * **/

        import encryption from "./encryption.js";  //加密

        let publicKey = "" //使用RSA签名验签工具获取公钥
        let privateKey = '' //使用RSA签名验签工具获取私钥
        
       //加密方法
       export function encrypt(data) {
       let encryptor = new JSEncrypt()
       encryptor.setPublicKey(publicKey) // 设置公钥
       return encryptor.encrypt(data) // 对需要加密的数据进行加密
       }

      export function decrypt(rsaDta) {
      let decryptor = new JSEncrypt();  // 新建JSEncrypt对象
      let b = encryption.decrypt(privateKey);
      decryptor.setPrivateKey(b); // 设置私钥
      const data = decryptor.decrypt(rsaDta); // 进行解密
      return data
      }
     
 (2).AES加密解密工具类(加密私钥)
       /*****
       * AES加密解密工具类
      * **/
     import Vue from 'vue'
     import CryptoJS from 'crypto-js'
     export default {  //加密
     encrypt(word) {
     let key = CryptoJS.enc.Utf8.parse( ' ti4TaU8dKRrsBrPYtO5lrvrALcjPL4OY ' );//后端提供
     let srcs = CryptoJS.enc.Utf8.parse(word);
     let encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
     return encrypted.toString();
    },
    //解密
   decrypt(word) {
   var key = CryptoJS.enc.Utf8.parse('ti4TaU8dKRrsBrPYtO5lrvrALcjPL4OY');//ti4TaU8dKRrsBrPYtO5lrvrALcjPL4OY 后端提供
   var decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
   return CryptoJS.enc.Utf8.stringify(decrypt).toString();
  } 
使用:
引入 import { encrypt } from "../../utils/jsencrypt.js"; //加密
加密参数  this.formData.bankCardId = encrypt(this.bankCardId);
解密同理。

4.复制参数使用深拷贝

 (1).JSON.parse(JSON.stringify(value))
            不可以拷贝undefined , function, RegExp 等类型;
 (2)Object.assign(target, source)
            不适合多层嵌套
 (3)递归拷贝
           相对于另外两种方式,此方式可拷贝类型更广泛。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值