花粉乐分享平台宣传视频
> 乐学堂 > > 火了!微信小程序与内嵌网页交互实现支付功能,小白们来学习吧
火了!微信小程序与内嵌网页交互实现支付功能,小白们来学习吧
来源:ChatAiRobot
2023-07-04 13:13:18
327
管理

上个月,小程序开放了新功能,支持内嵌网页,所以我就开始了小程序内嵌网页之路,之前我只是个小安卓。

内嵌网页中可使用JSSDK 1.3.0提供的接口,可坑就来了,居然不支持支付接口的调用,经过一番研究,总算打通了两边的交互

大概流程

1、先说明涉及到的文件,下面会用到

1.1 app.js:小程序的app.js文件,在globalData里定义一个全局变量paySuccessUrl: '',用来保存支付成功跳转url

web-view>

})

4、在内嵌网页web_pay.vue调用支付时把支付金额,支付说明,支付成功跳转url...(任何你想要的参数,记得encodeURIComponent),传给小程序原生页面

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

...

},

6、支付成功后,把跳转url附带支付结果及当前时间保存到全局变量

paySuccess () {

let currentTime = new Date().getTime()

jumpUrl = options.jumpUrl encodeURIComponent(`?payResult=1&time=$`)

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

//为了实现支付成功返回后的无刷新加载,这里的参数应该是属于路由web_pay.vue的,而不是属于window.location.search的

//所以要判断路由锚点#的位置和是否已经有路由参数(如果是vue-router的history模式我没用过,应该和window.location一样吧)

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

}

onShow: function () {

console.log('on show')

let paySuccessUrl = getApp().globalData.paySuccessUrl

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

if (paySuccessUrl) {

let url = decodeURIComponent(paySuccessUrl)

this.setData({

//这里在次说明下步骤6中的&time=$,就是因为不加这个当你第一次支付成功回来这里

//这个url跟你第二次支付成功回来这里是一样的,会导致第二次支付开始,这里的setData方法失效

url

})

}

},

8、步骤7中的setData会触发webview中的网页加载,由于我采用的是vue-router,而且前后两个url只有路由的参数query不一样,所以并不会触发界面刷新,也不会触发路由的重新加载,而是只会触发beforeRouteUpdate 这个方法,举个例子,现在支付前界面是https://host/#/pay,然后支付成功后跳转https://host/?

payResult=1&time=123456#/pay,此时界面不会刷新,pay路由也不会重新加载,而是触发beforeRouteUpdate (to, from, next),你要做的只是在这里界面解析to.query里的数据,然后该干嘛干嘛

beforeRouteUpdate (to, from, next) {

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

if (payResult) { // 小程序支付成功

if (payResult === '1') {

console.log('支付成功,下班打卡走人')

}

}

next()

},

这么晚了,先睡了,如果有空我再整理个demo,如果文章对你有帮助麻烦点个赞

花粉社群VIP加油站

3
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与花粉乐分享无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非花粉乐分享)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@hflfx.com
关于作者
Joker(小蜜蜂)
文章
467
主题
0
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行
随手拍
54个圈友 0个话题
华为手机随手拍,记录生活点滴之美好
华为P30pro
51个圈友 0个话题
这里是华为P30pro手机交流圈,欢迎华为P30pro用户进群交流
体验官
60个圈友 2个话题
华为花粉体验官,体验官专属的交流群
登录后查看您创建的圈子
登录后查看您创建的圈子
所有圈子
猜你喜欢
杭州互联网违法和不良信息举报平台 网络110报警服务 浙ICP备17046585号
3
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索