• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

微信小程序生成带参数的二维码(小程序码)独家asp.net的服务端c#完整代码 - 双鱼座的 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

微信小程序生成带参数的二维码(小程序码)独家asp.net的服务端c#完整代码

一)我先用的小程序端的wx.request去调用API,发现竟然是一个坑

wx.request({
        url: \'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=\' + token,
        method: "POST",
        responseType: \'arraybuffer\',
        data: {
          scene: 111, //这里填写url的参数,最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&\'()*+,/:;=?@-._~
          page: \'pages/index/index\', //这里填写你要跳转的小程序页面,前面不能加/哦,必须为发布后的页面
          width: 1024 //小程序码的边长,单位px,范围[280,1280]
        },
        header: {
          \'content-type\': \'application/json;charset=UTF-8\'
        },
        success(res) {
          var base64 = wx.arrayBufferToBase64(res.data);
          that.setData({
            qrCodeSrc: "data:image/png;base64," + base64
          });
        }
})

  这段代码在开发工具的模拟器中是可以正常显示的,而且在真机调试中也可以正常显示。

  但是在预览体验版正式版无法显示。

  无法显示的原因是:该请求无响应。

 

二)没办法,只能去asp.net的服务端调用API

int scene = 0;
int.TryParse(context.Request.Params["scene"], out scene);

string access_token =...; //这里写你调用token的方法
if (access_token == "")
  return "{\"errcode\":1,\"errmsg\":\"缺少access_token\"}";

            
string postUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token;
HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";

string options = "{\"scene\":\"" + scene + "\",\"page\":\"pages/index/index\",\"width\":\"1024\"}";
byte[] payload = Encoding.UTF8.GetBytes(options);
request.ContentLength = payload.Length;

Stream writer = request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();

System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream stream = response.GetResponseStream();
List<byte> bytes = new List<byte>();
int temp = stream.ReadByte();
while (temp != -1)
{
  bytes.Add((byte)temp);
  temp = stream.ReadByte();
}
byte[] result = bytes.ToArray();
string base64 = Convert.ToBase64String(result);//将byte[]转为base64
return "{\"errcode\":0,\"errmsg\":\"获取成功\",\"buffer\":\"" + base64 + "\"}";

 

三)扫码后小程序端接收参数

onLoad: function (options) {
    var id = options.id || decodeURIComponent(options.scene);
  //options.id是页面url参数,options.scene是扫码带入的参数
}

 

四)后记

  关于这个坑,百度找到的网友解释是:

   1)request的合法域名中没有api.weixin.qq.com

   2)request的合法域名不能配置api.weixin.qq.com

  所以,api.weixin.qq.com可能不能用于小程序端的请求。

  对于这个解释我只能默认了,如有人反驳跪求留言

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序 带参二维码 纯Java实现发布时间:2022-07-18
下一篇:
微信小程序生成二维码发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap