如何生成一个QRCode(二维码)
1、实例
用户在接受一个订单时,我们数据库后台会记录一条数据,同时 在不同的项目和条件中,也需要一条数据的凭证,这篇文章为主题的就是 在用户生成一个订单时同同时生成一个二维码凭证。
上代码(后台)
// GET: Home
/// <summary>
/// 生成QRcode 二维码
///订单id
///用户id
/// </summary>
/// <returns></returns>
public string DownQRcode(string Task_id, string empid)
{
var Date = DateTime.Now;
var ss = GetTimeStamp(Date);
QRCodeEncoder endocder = new QRCodeEncoder();
//背景颜色
endocder.QRCodeBackgroundColor = System.Drawing.Color.White;
//编码方式
endocder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
//的宽度
endocder.QRCodeScale = 10;
//版本号
endocder.QRCodeVersion = 5;
//这里是二维码扫出来的值 验证凭证的方式
var person = new { phone = Task_id, Name = ss, Gender = empid };
//将json川做成二维码
Bitmap bitmap = endocder.Encode(new JavaScriptSerializer().Serialize(person), System.Text.Encoding.UTF8);
string strSaveDir = Request.MapPath("/QRcode/"); //保存路径
//如果没有QRcode文件则创建
if (!Directory.Exists(strSaveDir))
{
Directory.CreateDirectory(strSaveDir);
}
//定义格式和名称
string strSavePath = Path.Combine(strSaveDir, person.Name + ".png");
if (!System.IO.File.Exists(strSavePath))
{
bitmap.Save(strSavePath);
}
//返回QRcode路径
return "QRcode/" + person.Name + ".png";
}
调用DownQRcode 返回一个路径保存到数据库方便查看
这边前端是小程序的(代码如下)
scancode: function(e){
// 允许从相机和相册扫码
console.log(e)
wx.scanCode({
success(res) {
console.log(res.result);
var obj1 = JSON.parse(res.result); //可用此方法来转换
const user=wx.getStorageSync('Userinfo'); //用户信息
console.log(obj1)
//这里是判断扫描二维码出来的值和storage的值是否匹配
if(obj1.Gender==user.id&&e.currentTarget.dataset.task==obj1.phone){
wx.request({
url: 'xxxxxxxxxxx',
type:'post',
data:{
empid:user.id,
Task_id:obj1.phone,
},
success:function(res){
var data=res.data.Data;
if(data.Code==1){
wx.showToast({
title: "接单完成!",
icon: 'success',
duration: 2000//持续的时间
})
}else{
wx.showToast({
title: data.Message,
icon: 'none',
duration: 2000//持续的时间
})
}
}
})
}else{
wx.showToast({
title: '任务错误',
icon: 'none',
duration: 2000
})
}
},
fail: (res) =>{
console.log(res);
wx.showToast({
title: '失败',
icon: 'none',
duration: 2000
})
}
})
},
以下html
<button class='deaBtn' bindtap='scancode' data-task="{{item.id}}">扫描二维码</button>
需求
这次的客户需求是:用户发布任务、如何才能通过平台将余额转出 类似于验证码 只是这种二维码 需要接单人和发单人一起配合才能结束,有一定的安全性,让用户自己掌握资金
思维
当发布人发布一个任务 同时生成一个二维码 二维码里的信息是唯一的凭证,当接单人完成接单时,需要去获取发布人的一个二维码展示图 只有扫了二维码展示图 并且 二维码图里的数据是没有问题的 那么 任务完成反之 任务失败。