小程序下发二维码,然后扫码验证入场券功能,怎么设计是安全的? 有什么好的思路吗?
Page({
data: {
ticketValid: false, // 用于表示入场券是否有效
ticketInfo: null, // 用于存储入场券的信息
},
// 扫码函数
scanTicket: function() {
wx.scanCode({
onlyFromCamera: true, // 只允许从相机扫码,不允许从相册选取
success: (res) => {
if (res.scanType === 'qrCode') { // 确保扫描的是二维码
const ticketData = res.result; // 获取扫码结果,通常是二维码中的数据
this.verifyTicket(ticketData);
} else {
wx.showToast({
title: '请扫描正确的二维码',
icon: 'none'
});
}
},
fail: (err) => {
console.error('扫码失败:', err);
}
});
},
// 验证入场券
verifyTicket: function(ticketData) {
// 这里应该调用后端API来验证ticketData
wx.request({
url: '/api/verify-ticket',
method: 'POST',
data: {
ticketData: ticketData
},
success: (res) => {
if (res.statusCode === 200 && res.data.success) {
this.setData({
ticketValid: true,
ticketInfo: res.data.ticketInfo
});
wx.showToast({
title: '入场券有效',
icon: 'success'
});
} else {
this.setData({
ticketValid: false,
ticketInfo: null
});
wx.showToast({
title: '入场券无效',
icon: 'none'
});
}
},
fail: (err) => {
console.error('验证入场券失败:', err);
}
});
}
});
1、支持扫二维码核销。二维码可以动态生成,并且60秒的有效期,过期后老二维码失效。
2、固定的券码核销(通常由纯数字或者数字+字母),券码一直是固定的,需要妥善保管。
查验都是通过后端接口去校验,保证安全。