需求
汽車貸款進單系統,有個電子簽功能.電子簽功能分app和微信遠程簽署.
微信遠程簽署時,會分享小程序二維碼.
客戶拿到二維碼,掃碼進入自己的單據進行身份認證,(騰訊核身)電子簽~
需求點1:
攜帶單號以及其他參數,生成小程序碼~
實現V1
根據QRCoder生成二維碼
/// <summary>
/// 生成二維碼
/// </summary>
/// <param name="id">預授信表id</param>
/// <returns>二維碼md5值,和失效時間</returns>
[Routing(EHttpMethod.HttpGet, "app/code")]
public CommonResult<MQCode> CreteCodes(string id)
{
var result = CreteCode(id, ECaCategory.PreCredit);
if (result.WarnResult != null)
{
return result.WarnResult;
}
return result.Value;
}
public CommonResult<MQCode> CreteCode(string id, ECaCategory caCategory)
{
string qrcodeid = Tools.NewId();
if (String.IsNullOrEmpty(id))
{
return new WarnResult("參數為空");
}
try
{
string strCode = "https://open.weixin.qq.com/sns/getexpappinfo?appid=" + _config["WXPrecreditAPPID"] + $"&path=pages/index/index.html?id={id}%26code={qrcodeid}%26time=6#wechat-redirect";
//strCode = HttpUtility.UrlEncode(strCode);
QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q);
QRCode qrcode = new QRCode(qrCodeData);
#region basestring
string baseICO = "這里是base64二維碼圖標";
#endregion
var imgICO = Tools.Base64StringToImage(baseICO);
//調用生成二維碼
System.Drawing.Bitmap qrCodeImage = qrcode.GetGraphic(5, System.Drawing.Color.Black, System.Drawing.Color.White, imgICO, 15, 6);
var path = "UploadFileTemp\\" + _FileHelper.GetFileName(".jpeg");
//調用保存本地
qrCodeImage.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);
//調用上傳
var result = _FileHelper.UploadFile(path, Guid.NewGuid(), "1200170005");
if (result.WarnResult != null)
{
throw new Exception(result.WarnResult.Message);
}
var resModel = _jsonConverter.Deserialize<dynamic>(result.Value);
string md5 = resModel.data.md5;
if (string.IsNullOrEmpty(md5))
{
throw new Exception(result.Value);
}
else
{
//存儲二維碼邏輯
var saveResult = _orderCRepository.SaveQRCode(qrcodeid, id, md5, caCategory.ToString());
if (saveResult.WarnResult == null)
{
return new MQCode() { Md5 = md5, Faildate = saveResult.Value };
}
else
{
return saveResult.WarnResult;
}
}
}
catch (Exception ex)
{
log.LogError("error(000010A692FD70000C05):", ex);
return new WarnResult("生成二維碼錯誤,請聯系系統管理員。");
}
}
public class MQCode
{
/// <summary>
/// 圖片md5
/// </summary>
public string Md5 { get; set; }
/// <summary>
/// 過期時間
/// </summary>
public DateTime Faildate { get; set; }
}
實現v2版本
調用小程序的生成二維碼功能,小程序服務端提供了3種生成方式.
這里選擇了getUnlimited接口,該接口沒有調用數量限制,滿足業務需求.

