当前位置: 首页 - 数码 - 科技创新筑梦未来微信小程序与内嵌网页交互如何实现支付功能小白们来学习吧

科技创新筑梦未来微信小程序与内嵌网页交互如何实现支付功能小白们来学习吧

2025-02-23 数码 0

在上个月,小程序推出了一个新的特性,即支持内嵌网页,这让我开始探索小程序与内嵌网页的交互之旅。之前,我仅擅长于安卓开发。在研究中,我发现JSSDK 1.3.0提供的接口并不支持支付功能调用,这让我陷入了困境。但经过一番努力,终于找到了解决方案。

以下是实现过程的大致流程:

首先,需要说明涉及到的文件和步骤:

app.js:小程序的app.js文件,其中定义了全局变量paySuccessUrl,用来存储支付成功后的跳转URL。

web-view: 内嵌网页组件。

web_pay.vue: 网页中的Vue组件。

在web_pay.vue中,当用户点击进行支付时,将必要信息(如支付金额、说明和跳转URL)通过参数传递给原生页面。

let jumpUrl = encodeURIComponent(window.location);

let path = `/page/pay/pay?amount=${title}=${jumpUrl}&=`;

this.url = path;

在 onLoad 方法中获取这些参数,并进行解构赋值:

onLoad: function(options) {

console.log(options);

// 获取网页传过来的值

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

jumpUrl = options.jumpUrl;

amount = options.amount;

title = options.title;

},

当支付成功后,在paySuccess方法中更新全局变量paySuccessUrl并保存当前时间作为查询参数:

paySuccess () {

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

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

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

}

然后,在onShow方法中检查是否有未处理的支付成功URL,并清空该URL以防止重复触发事件:

onShow: function () {

let paySuccessUrl = getApp().globalData.paySuccessUrl;

if (paySuccessUrl) {

this.setData({

url: decodeURIComponent(paySuccessUrl)

});

getApp().globalData.paySuccessUrl=''; //清空支付成功url,防止一些操作触发onShow事件

}

},

最后,在beforeRouteUpdate钩子函数中处理路由变化并根据query参数判断是否为支付成功情况,从而避免界面刷新或重新加载路由:

beforeRouteUpdate (to, from, next) {

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

console.log('Payment successful');

}

next();

},

这就是我的经验分享,如果对你有帮助,请点赞支持!

标签: 数码产品定义数码推荐网站电商怎么做新手入门尼康d7500域名