# 前言
# ✨魁首
🔔一个没有天赋的前端程序员👨💻 💡博客
# 🔰关注我
🤖Github |🔑CSDN | 💎掘金 | 📖 知乎 | 💡博客 |
# 一、 两个支付宝小程序之间带参扫码在线付款实现
业务场景:小程序A有一个订单付款码,二维码中带了一个订单id,需要将这个id作为参数传递给小程序B,小程序B用支付宝扫码后获取到该参数,并且加载该订单后发起支付宝支付;
实现思路:支付宝官网 给我们提供了跳转的不同场景,当前业务属于:小程序互相跳转,实现分两步:①小程序A的二维码中携带需要的参数;②支付宝扫码后进入到小程序B的指定页面,并读取该参数;
# 小程序A需要做的事
2、my.generateImageFromCode 生成二维码
// page.js
Page({
data: {
qrcode: '',
},
onReady() {
if (my.canIUse('generateImageFromCode')) {
my.generateImageFromCode({
code: `alipays://platformapi/startapp?appId=${appId}&page=pages/selfPayment/selfPayment&query=billId=${billId}`,
format: 'QRCODE',
width: 400,
correctLevel: 'H',
success: res => {
console.log(res.image);
this.setData({
qrcode: res.image
});
},
fail(res) {
console.log(res.error);
},
complete(res) {
if (res.image) {
console.log('success', res.image);
} else {
console.log('fail', res.error, res.errorMessage);
}
}
});
}
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// page.axml
<view class="page">
<image src="{{qrcode}}" mode="widthFix" style="width:200rpx;height:200rpx;margin:60rpx"/>
</view>
1
2
3
4
2
3
4
# 小程序B需要做的事
1、先来了解两个概念:
冷启动:当用户打开未启动过,或者是已经销毁的小程序时,称为冷启动。此时小程序会执行初始化,初始化完成后,会触发
onLaunch
回调函数。热启动:当用户打开已经关闭但仍处于后台运行的小程序时,称为热启动。在这种情况下,小程序并不会被销毁后重启,而仅是从后台切换到前台,此时,
onShow
函数会触发,onLaunch
回调函数不会被触发。从后台运行切换为前台运行:当未被系统销毁的小程序再度被打开或者激活时,会从后台运行切换为前台运行。
当前场景需要在 app.js 中注册前台 / 后台切换的回调函数。当小程序从后台进入前台显示时会触发 onShow
;
#
2、解析参数
// app.js
globalData: {
// 全局数据
billId: "",
},
onShow(options) {
console.log("启动参数===>",options);
let { query = {} } = options;
let { billId } = query;
if (billId) {
this.globalData.billId = billId;
}
},
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
//selfPayment.js
onLoad() {
this.init()
},
init(){
let { billId } = app.globalData;
console.log("全局ID", billId);
// ...
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
参考内容:支付宝官网