小程序h5相互跳转传参

3 篇文章 0 订阅
3 篇文章 0 订阅

最近做了一个不知道怎么形容的功能...在小程序里面使用webview嵌入h5页面,一个商城,小程序里面需要把登录信息openid传给h5登录,在h5选购东西,购买生成订单,h5将order_id传给小程序,在小程序调方法付款,付完款在小程序里面把支付状态传给h5...踩坑无数,话不多说,敬我踩过的坑们!(小程序是vue3的,h5是vue2的)

一、小程序嵌入webview(h5)传参

小程序通过在链接后面挂参数传值给h5

<web-view :src="linkPath"></web-view>
let linkPath = ref('')
onTabItemTap(() => {  // 切换tabbar触发,根据个人需求写在哪个方法里面
	if (!getToken()) {
		wx.showLoading({
			title: '登录中'
		})
		wx.login({
			success(res) {
				if (res.code) {
					wx.request({
						url: `${config.base_url}/user/miniProLogin`,
						method: 'POST',
						data: {
							code: res.code
						},
						async success(resLogin) {
							uni.setStorageSync('openId', resLogin.data.data.openid)
							uni.setStorageSync('username', resLogin.data.data.username)
							wx.hideLoading()
							if (resLogin.data.code != 1) return toast('登录失败')
							setToken(resLogin.data.data.token)
							toast('登录成功', 'success')
							await go()
						}
					})
				}
			},
			fail(err) {
				wx.hideLoading()
				toast('微信登录失败')
			}
		})
	} else {
		go()
    }
})
// 跳转webview(已登录状态)
const go = () => {
		let randStr = new Date().getTime() + '' + Math.round(Math.random() * 10000); // 时间戳,避免缓存
		let path = "https://****************/h5/" // 合法域名
		let openid = uni.getStorageSync('openId')
		let username = uni.getStorageSync('username')
		let webviewUrl =
			`${path}?openid=${encodeURIComponent(openid)}&username=${encodeURIComponent(username)}&randStr=${encodeURIComponent(randStr)}`
		linkPath.value = webviewUrl
}

二、h5接收小程序传过来的参数

在app.vue的生命周期里面接收

export default {
	mixins: [auth],
	data() {
		return {
			query: {}
		}
	},
	onLaunch: function(options) {
		this.query = options.query   // 接收小程序传过来的参数
    }
}

在h5里面创建订单之后生成的order_id传给小程序

这里特别说明一下wx.miniProgram这个方法不是自带的,需要引入微信sdk,npm下载,直接引入都可以

wx.miniProgram.navigateTo({
					url: `/subpkg/home/WeChatPay?order_id=${this.payInfo.order_id}&pay_money=${this.payInfo.pay_money}&out_trade_no=${this.payInfo.out_trade_no}`
				})

三、小程序接收h5传过来的参数,通过order_id调后端接口获取wx.requestPayment所需要的参数

// 接收h5传过来的参数
onLoad(e => {
	order_id.value = e.order_id
	pay_money.value = e.pay_money
	code.value = e.out_trade_no

})

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

 冰紫露恋蝶玛丽红红秃头宝贝

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值