.net后台生成微信公众号带场景值的二维码
一、基本流程
1、根据场景值生成ticket。
2、通过ticket换取二维码。
3、扫描二维码获取场景值。
微信文档
二、 生成Ticket
2.1二维码分类
目前有两种类型的二维码:
1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
2.2请求说明
请求方式:POST
请求地址: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
参数 | 说明 |
---|---|
expire_seconds | 二维码有效时间,适用于临时二维码,单位(秒)。 最大值2592000(即30天),默认值30秒。 |
action_name | 二维码类型,QR_SCENE(临时整型),QR_STR_SCENE(临时字符串),QR_LIMIT_SCENE(永久整型),QR_LIMIT_STR_SCENE(永久字符串) |
action_info | scene |
scene | 根据action_name设置scene_id(整型)或scene_str(字符串) |
scene_id | 整型参数值 |
scene_str | 字符串型参数值 |
示例:
{
“expire_seconds”: 604800,
“action_name”: “QR_SCENE”, //临时整型
“action_info”: {
“scene”: {
“scene_id”: 123 //根据action_name设置整型参数
}
}
}
返回结果
参数 | 说明 |
---|---|
ticket | 获取的二维码ticket |
expire_seconds | 二维码有效时间 |
url | 二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片 |
2.3实现代码
在.net中不用这么麻烦,直接引用nuget包,Senparc.Weixin.MP
下面用的16.10.510版本
using System;
using Senparc.Weixin.MP;
using Senparc.Weixin.MP.AdvancedAPIs;
namespace ZLHP.Web.Weixin
{
/// <summary>
/// 微信生成二维码
/// </summary>
public class QrCode : BaseApiController
{
/// <summary>
/// 生成ticket
/// </summary>
/// <param name="token">你的access_token</param>
/// <returns></returns>
public CreateQrCodeResult CreateTicket(string token)
{
var actionName = QrCode_ActionName.QR_SCENE; //二维码类型:临时整型
var expire_seconds = 60; //有效时间
var scene_id = 12; //场景值
//生成ticket
return QrCodeApi.Create(token, expire_seconds, scene_id, actionName);
}
}
}
三、通过Ticket换取二维码
请求方式:Get
请求地址: https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
提醒:TICKET记得进行UrlEncode