当前位置: 首页 - 数码 - 全球公敌之黑科技教父你们准备好了吗微信小程序与内嵌网页交互如何实现支付功能小白们来一起学习吧

全球公敌之黑科技教父你们准备好了吗微信小程序与内嵌网页交互如何实现支付功能小白们来一起学习吧

2025-02-23 数码 0

在上个月,小程序推出了一个新的功能,它支持内嵌网页,这让我开始了探索小程序内嵌网页的旅程。在这之前,我只是一个普通的小安卓用户。然而,当我尝试使用JSSDK 1.3.0提供的接口时,我遇到了一个问题:支付接口的调用并未得到支持。这迫使我深入研究,终于找到了两边交互的解决方案。

以下是实现这一功能的大致流程:

首先,我们需要了解将要使用的一些文件。这些文件包括:

app.js:小程序中的全局数据对象,其中定义了一个名为 paySuccessUrl 的变量,用来存储支付成功后的跳转URL。

web-view>:用于在内嵌网页中展示小程序页面。

web_pay.vue:负责处理支付逻辑和向小程序传递参数。

接下来,我们来看看具体如何操作:

在 web_pay.vue 中,调用支付时,将支付金额、支付说明、以及支付成功后跳转到的URL(以及其他任何想要传递的参数)通过编码发送给小程序原生页面。

let jumpUrl = encodeURIComponent(window.location)

let path = `/page/pay/pay?amount=$title=$jumpUrl=$`

url: path

})

在加载页面时,获取来自网页传过来的值,并解构它们以便于使用。

onLoad: function (options) {

console.log(options)

// 获取网页传过来的值

// TODO 用es6解构来获取值TODO

jumpUrl = options.jumpUrl

amount = options.amount

title = options.title

},

支付成功后,将包含时间戳和跳转URL信息保存到全局变量中,以便在下次加载时可以读取到这个信息。

paySuccess () {

let currentTime = new Date().getTime()

jumpUrl = options.jumpUrl + encodeURIComponent(`?payResult=1&time=${currentTime}`)

getApp().globalData.paySuccessUrl=jumpUrl //保存跳转url到小程序全局变量里

}

当界面显示时,如果有保存好的支付成功URL,则进行相应处理并清空该变量,以防止重复触发事件。

onShow: function () {

console.log(on show)

let paySuccessUrl = getApp().globalData.paySuccessUrl

if (paySuccessUrl) {

let url = decodeURIComponent(paySuccessUrl)

this.setData({

url,

})

}

},

5 最后,在路由发生变化的时候检查是否有新的数据,并根据情况进行处理。如果是从微信端返回的话,就会触发beforeRouteUpdate方法,该方法可以用来更新界面状态或执行其他任务,如提醒用户已经完成某项操作等。

beforeRouteUpdate (to, from, next) {

console.log(路由发生改变,很有可能是小程序的支付成功回调)

if (to.query && to.query.payResult === '1') {

// 如果查询参数中含有'payResult'且其值为1,那么意味着这是来自微信端的一个通知,不需要重新渲染当前组件,因为前后两个URL只有路由参数query不一样,所以不会触发界面刷新,也不会触发路由重新加载,而是在这里就能拿到最新数据了。

console.log('已知此为微信端通知')

} else {

next()//继续走正常流程,如果不是则继续执行next函数,不做特殊处理

}

},

以上就是如何利用JSSDK与Vue结合实现微信内嵌网页与原生交互,以及通过设置正确路径结构,使得无需刷新即可完成业务逻辑,从而提高用户体验。希望对你也有所帮助!如果你觉得文章内容对你有帮助,请点赞支持一下哦!

标签: fview数码宝贝正版游戏有哪些卡西欧相机英特尔数码网