c#后台生成指定页面带参数的小程序码

出于安全考虑,小程序禁用了直接在小程序端调用api.weixin.qq.com的功能,只能通过后台来调用,以下是实现的过程。

这是官方的文档https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html;

1.首先获取accesstoken

  public string GetAccessToken(string strAPPID, string strSecret)
        {
            string str = "";
            string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + strAPPID + "&secret=" + strSecret + "";
            System.Net.WebRequest wRequest = System.Net.WebRequest.Create(url);
            wRequest.Method = "GET";
            wRequest.ContentType = "text/html;charset=UTF-8";
            System.Net.WebResponse wResponse = wRequest.GetResponse();
            Stream stream = wResponse.GetResponseStream();
            StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default);
            str = reader.ReadToEnd();   //url返回的值
            return str;
        }

我这里没有对strAPPID和strSecret进行加密,如果安全性要求较高的可以加密,然后接口进行解密。

2.根据获取的accesstoken调用接口保存小程序码。返回小程序的地址

   public string GetQrcode(string strToken, string content)
        {
            string strResult = "";
            string url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + strToken;
            System.Net.WebRequest wRequest = System.Net.WebRequest.Create(url);
            wRequest.Method = "post";
            wRequest.ContentType = "application/x-www-form-urlencoded";
            #region 添加Post 参数
            byte[] data = Encoding.UTF8.GetBytes(content);
            wRequest.ContentLength = data.Length;
            using (Stream reqStream = wRequest.GetRequestStream())
            {
                reqStream.Write(data, 0, data.Length);
                reqStream.Close();
            }
            #endregion

            HttpWebResponse resp = (HttpWebResponse)wRequest.GetResponse();
            Stream stream = resp.GetResponseStream();
            ////获取响应内容
            //using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            //{
            //    strResult = reader.ReadToEnd();
            //}

            Image img = Image.FromStream(stream);        //服务器硬盘位置,在接口web.config中配置        //<add key="strMiniProgramUrl" value="D:\W-E-B\xcx_mls" />
string strImageWebUrl = ConfigurationManager.AppSettings["strMiniProgramUrl"];
            string str = DateTime.Now.ToString("yyyyMM");
            string str2 = DateTime.Now.ToString("yyyyMMdd");
            string path = strImageWebUrl + @"\uploads";
            string path2 = @"https://服务器域名/" + @"/uploads";
            if (!Directory.Exists(path + @"\audio\" + str))
            {
                Directory.CreateDirectory(path + @"\audio\" + str);
            }
            path = path + @"\qrcode\" + str;
            path2 = path2 + @"/qrcode/" + str;
            if (!Directory.Exists(path + @"\" + str2))
            {
                Directory.CreateDirectory(path + @"\" + str2);
            }
            path = path + @"\" + str2;
            path2 = path2 + @"/" + str2;
            int num = new Random().Next(0x2710);
            string str6 = DateTime.Now.ToString("yyyyMMddHHmmss") + num.ToString() + Guid.NewGuid().ToString() + ".jpg";
            string filename = path + @"\" + str6;
            path2 = path2 + @"/" + str6;
            try
            {
                img.Save(filename, ImageFormat.Jpeg);
                this.model.value = path2;
                this.model.code = "1000";
            }
            catch
            {
                this.model.code = "0001";
            }
            finally
            {
                if (img != null)
                {
                    img.Dispose();
                    img = null;
                }
            }
            return this.bllcommon.returnStr(JsonConvert.ExportToString(this.model)).Replace("暂无", "");
        }
path2为保存后的小程序码图片地址

原文地址:https://www.cnblogs.com/wuchaofan1993/p/12529939.html

时间: 2024-10-07 21:47:29

c#后台生成指定页面带参数的小程序码的相关文章

生成指定页面带参数的小程序码及踩坑

//获取accessToken let that = this; const APP_ID = 'yourapp_id';// 小程序appid const APP_SECRET = 'yourapp_secreat';// 小程序app_secret let access_token = ''; wx.request({ url:"https://api.weixin.qq.com/cgi-bin/token", data: { grant_type: 'client_credent

nodejs获取带参数的小程序码

打开项目目录 ,新建一个app.js文件 使用cnpm init命令初始化项目文件 安装express和superagent 并将安装信息保存到package文件中 安装完了 写一个接口看看有木有问题 OK 接口是可以的 接下来就要干正事了. 在app.js文件同级路径建一个config.js文件 用于保存小程序的appid和secret ,使用module.exports导出 在app.js里引用 同时使用superagent发起请求 把参数放到请求的网址里 在浏览器里调用一下 看看打印的内容

后台生成带参跳到指定页面的小程序码

方法步骤如下: 1. 获取 access_token 详见:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183 2. 生成小程序码 接口B:适用于需要的码数量极多的业务场景 0)可接受页面参数较短 1)通过该接口生成的小程序码,永久有效 2)数量不做限制(截止今天,官方未对生成数量做限制) 3)用户扫码后,可以在对应页面获取到二维码中scene字段下面的值 4)B接口调用分钟频率受限(目前5000次/分钟,会调整)

微信公众平台功能开发(生成带参数的二维码)

为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送. 目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000).两种二维码分别适用于帐号绑定.用户来源统计等场景. 用户扫描带场景值二维码时,可能推送以下两种事件: 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事

微信公众号开发(三)生成带参数的二维码

微信公众号开发之生成带参数的二维码 做微信公众号开发的人员都知道用户海报作为公众号吸引用户是常见的渠道,那么我就说说这个海报的生成. 看了好多公众号发现他们的海报都是大同小异,一个漂亮的背景+自己的头像+专属二维码. 背景就不阐述了,用户的头像可以由公众号开发文档提供的方式获取(根据用户的openId),今天主要讲用户的专属二维码 所谓专属即便是一对一的. 二维码分为两种,临时二维码和永久二维码 /*生成永久二维码*/ public static String getPerpetualQR(St

微信接口开发之高级篇系列【用户分组接口和生成带参数的二维码】

<?php /** * Created by PhpStorm. * User: Tinywan * Date: 2016/9/11 * Time: 10:00 */ namespace Home\Controller; use Org\Util\WechatAuth; use Think\Controller; class UserController extends Controller { private $appid; private $appSecret; private $Wecha

生成带参数的二维码

为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送. 目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000).两种二维码分别适用于帐号绑定.用户来源统计等场景. 用户扫描带场景值二维码时,可能推送以下两种事件: 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事

C#微信开发之旅(六):生成带参数的二维码

主要用来推广并统计数据,当用户扫描带参数二维码时,微信会推送消息到我们的服务器,此时可以根据参数了解到用户是从哪个渠道关注的.话不多少,先来代码: 1 #region 生成二维码 2 3 /// <summary> 4 /// 获取Ticket 5 /// </summary> 6 /// <returns></returns> 7 private static string CreateTicket(string scene_id) 8 { 9 var t

微信开发之——Php批量生成带参数的二维码

带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧. 具体接口说明请参见,微信公众平台开发者文档(http://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html),我这里就直接上代码. 演示图: 由于带参数二维码生成是有限的,所有我是按编号生成的,下次生成的时候直接累加. 另外带设置有备注,方便以后统计.