当前位置: 首页 - 数码 - 中国科学技术协会推广微信小程序与内嵌网页交互支付功能小白们你准备好了吗

中国科学技术协会推广微信小程序与内嵌网页交互支付功能小白们你准备好了吗

2025-02-23 数码 0

在上个月,小程序推出了一个新的功能,它支持内嵌网页。因此,我开始了探索小程序内嵌网页的旅程,之前我只是一个普通的安卓用户。

为了实现支付功能,我们需要使用JSSDK 1.3.0提供的接口。但是,这个接口并没有直接支持支付调用。这就需要我们进行一些研究来打通两边的交互流程。

下面是大致的步骤:

首先,我们需要准备一些文件。在这个过程中,我们会用到:

app.js:这是小程序中的全局配置文件,其中定义了一个全局变量paySuccessUrl,用于保存支付成功后的跳转URL。

web-view>:这是内嵌网页中的组件,它可以与小程序通信。

接着,在内嵌网页中,当我们调用支付时,我们需要将支付金额、说明和跳转URL等参数传递给小程序原生页面。这些参数应该通过encodeURIComponent进行编码,以确保它们能够正确地传递。

然后,在小程序端,我们需要设置监听器以接收来自内嵌网页的数据,并根据这些数据更新界面状态。具体来说,以下是监听器的一部分代码:

onLoad: function (options) {

console.log(options);

// 获取网页传过来的值

jumpUrl = options.jumpUrl;

amount = options.amount;

title = options.title;

},

当支付成功后,我们需要更新全局变量以保存跳转URL和支付结果。此外,还要添加当前时间作为查询参数,以便区分不同次调用的请求。

paySuccess () {

let currentTime = new Date().getTime();

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

// payResult=1表示支付成功,这里我偷懒了直接在url后面补?,实际情况比较复杂

}

最后,在显示页面时,如果有存储的跳转URL,则解析它并更新界面状态。

onShow: function () {

let paySuccessUrl = getApp().globalData.paySuccessUrl;

if (paySuccessUrl) {

let url = decodeURIComponent(paySuccessUrl);

this.setData({

url,

});

}

},

在这种情况下,因为我们的路由模式采用的是哈希模式(即#),所以即使前后两个URL仅仅是在query参数上有所不同,也不会触发界面的刷新或重新加载,而是在beforeRouteUpdate钩子函数中处理。这意味着我们可以在这里解析新路由上的query参数,并做出相应操作。

如果你对这个过程感兴趣,或许可以点赞鼓励一下!

标签: 联发科太平洋数码一期地址top数码社区太平洋电脑网参数对比努比亚