当前位置: 首页 - 数码 - 前沿科技2023微信小程序与内嵌网页交互实现支付功能小白们来学习吧

前沿科技2023微信小程序与内嵌网页交互实现支付功能小白们来学习吧

2025-02-23 数码 0

在前沿科技2023的引领下,我踏上了小程序内嵌网页的征程,之前我只是一个普通的小安卓用户。随着微信小程序开放了新的功能支持内嵌网页,我开始探索这条道路。然而,在JSSDK 1.3.0提供的接口中,我遇到了一个坎:支付接口的调用被禁止。这迫使我深入研究,最终成功打通了两端之间的交互。

大致流程如下:

首先,我们需要了解涉及到的文件和步骤:

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

web-view>:用于显示内嵌网页内容。

web_pay.vue:负责处理支付逻辑并传递相关参数到小程序原生页面。

接着,在内嵌网页中,当触发支付时,我们需要将必要参数(如金额、说明、跳转链接等)通过编码传递给小程序原生页面,并进行解码以获取这些信息。

let jumpUrl = encodeURIComponent(window.location)

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

url: path

})

然后,在原生页面中,我们需要监听载入事件,并从URL中解析出传过来的值。

onLoad: function (options) {

console.log(options)

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

jumpUrl = options.jumpUrl

amount = options.amount

title = options.title

},

当支付完成后,我们需要更新全局变量,以保存支付结果和当前时间作为查询参数。

paySuccess () {

let currentTime = new Date().getTime()

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

}

最后,在显示事件中,我们检查是否有全局变量中的跳转链接,如果存在,则使用它来更新界面状态,而不是重新加载整个界面,这样可以实现无刷新返回效果,同时也不会触发路由重定向,从而避免不必要的操作。

onShow: function () {

console.log(on show)

let paySuccessUrl = getApp().globalData.paySuccessUrl

if (paySuccessUrl) {

let url = decodeURIComponent(paySuccessUrl)

this.setData({

url,

})

}

},

在Vue Router的情况下,仅当URL中的查询字符串发生变化时,会触发beforeRouteUpdate方法。在这里,你可以根据新的路径对象 (to.query) 来判断是否是来自于小程序的支付成功回调,然后执行相应操作或更新界面状态。如果有空余时间,我将整理并分享完整示例代码。如果这篇文章对你有所帮助,请点亮心动之星!

标签: 数码之家客户端中关村数码官方上海太平洋数码怎么样大耳兽