uni-app开发公众号H5遇到的问题

引言:最近用uni-app框架开发了个中秋博饼公众号H5项目,多多少少遇见了一些问题Mark一下

uni调试时跨域(H5)

让后端配置跨域后,我们这样设置,在
在这里插入图片描述
文件中的源码视图中添加如下代码

"h5" : {
        "devServer" : {
            "https" : false,
            "disableHostCheck" : true,
            "port" : 82,		//	你的端口
            "proxy" : {
                "/index" : {
                    "target" : "http://xxxx.test.com",	//	服务器地址
                    "changeOrigin" : true,
                    "secure" : false,
                    "pathRewrite" : {
                        "^/prefix" : ""
                    }
                }
            }
        }
    }


关于海报生成(html2canvas)

在这里插入图片描述
有关生成海报进行分享,使用了html2canvas插件,上代码

getImg(call) {
	let el = this.$refs.imageWrapper;	//	获取容器
	window.pageYOffset = 0;				//	不设置会导致生成图片不完整
	
	html2canvas(el,{
		logging: true,
		allowTaint: true,
		backgroundColor: null,
		useCORS: true,
		windowWidth: el.scrollWidth,
		windowHeight: el.scrollHeight
	}).then(canvas => {
		this.imgUrl = canvas.toDataURL("image/png",1.0);
		call&&call();
	});
}

注意点:

  1. 容器中不能使用像view这样的标签 需使用div

  2. html2canvas生成时图片跨域问题解决方法 ----> 容器中图片转成base64(生成base64中遇见少数图片不能正常转换问题 加了Promise后都正常转换)
    代码:

let el = this.$refs.bg;		//	需要转换的img

urlToBase64: function(el) {
   return new Promise ((resolve,reject) => {
	 	let image = new Image();
		image.src = el.src;
		image.setAttribute('width',el.width);
		image.setAttribute('height',el.height);
	    image.onload = function() {
	        let canvas = document.createElement('canvas');
	        canvas.width = el.width;
	        canvas.height = el.height;
	        // 将图片插入画布并开始绘制
	        canvas.getContext('2d').drawImage(image, 0, 0, el.width, el.height);
	        // result
	        let result = canvas.toDataURL('image/png')
	        resolve(result);
	    };
	
	     // 图片加载失败的错误处理
	     image.onerror = () => {
	         reject(new Error('图片流异常'));
	     };
   })  
}
  1. 关于实机测试html2canvas生成不了
    html2canvas版本太高 点击转跳解决方案


实时通讯(WebSocket)

此次项目采用npm安装socket.io-client

注意点:

  1. 连接socket后不能马上发送消息 很可能当时没连接上,马上调用的需要加个600~800ms左右定时器,不然做了重连机制会导致一系列问题



uni-app使用微信JSSDK

点击转跳查看

  1. 注意扫码返回数据取值resultStr
  2. 分享点击回调微信官方废弃,只能监听成功设置分享信息,无法监听点击和分享成功后回调
wx.scanQRCode({
  needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  success: function (res) {
    var result = res.resultStr; // 扫码返回的结果
  }
});



uni-app h5打包后静态资源和路径配置


manifest.json文件中的源码视图中h5添加如下代码(此方法只针对H5端)
"router" : {
  "base" : "./",
    "mode" : "hash"
},
"publicPath" : "./",

所有的静态路径采用如: static/xxx.png
前期采用 /static可一键替换

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni.app 中使用微信公众号 H5 支付,你可以按照以下步骤进行操作: 1. 首先,确保你已经配置好了微信公众号支付功能,并且已经获取到了支付的相关参数,例如订单号、支付金额等。 2. 在 uni-app 中,可以使用 `uni.request` 或其他网络请求库来发起支付请求。你需要向微信支付接口发送一个 POST 请求,包含支付相关的参数。 例如: ```javascript uni.request({ url: 'https://api.mch.weixin.qq.com/pay/unifiedorder', // 微信支付接口地址 method: 'POST', data: { // 支付参数,例如 appid、mch_id、nonce_str、body、out_trade_no、total_fee 等 }, success: (res) => { // 请求成功的回调函数 // 解析返回的数据,获取预支付交易会话标识 prepay_id const prepayId = res.data.prepay_id; // 调用 H5 支付接口进行支付 uni.requestPayment({ provider: 'wxpay', timeStamp: '', // 时间戳 nonceStr: '', // 随机字符串 package: '', // 统一下单接口返回的 prepay_id 参数值 signType: 'MD5', paySign: '', // 签名 success: (res) => { // 支付成功的回调函数 console.log(res); }, fail: (err) => { // 支付失败的回调函数 console.log(err); } }); }, fail: (err) => { // 请求失败的回调函数 console.log(err); } }); ``` 在上述代码中,你需要根据实际情况填写支付接口地址、支付参数、预支付交易会话标识 prepay_id 以及支付的回调函数。 3. 当用户点击支付按钮后,会触发支付请求,用户将会跳转到微信支付页面完成支付操作。 请注意,以上代码仅为示例,实际使用时需要根据 uni-app 中的具体语法和微信支付接口的要求进行相应的调整和处理。同时,确保在后端服务器中进行订单处理和验证,以确保支付的安全和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值