栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

ASP.NET MVC做的微信WEBAPP中调用微信JSSDK扫一扫

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ASP.NET MVC做的微信WEBAPP中调用微信JSSDK扫一扫

今天做一个项目,是在微信上用的,微信WEB APP,里面用到了调用手机摄像头扫一扫二维码的功能,记得以前某个项目里写有的,但是找不到之前那个项目源码了,想复制粘贴也复制不了了,只好对着微信的那个开发文档重新再写过 ,顺便写个博客,以后碰到相同的问题直接复制博客里的代码就行了
以下是显示在微信上的页面:

以下是页面的代码,(用到了MUI):

@{
Layout = "~/Views/Shared/_Layout.cshtml";
}


扫码认证










@section script{



}

以下是对应的控制器后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Niunan.NiaoRen.Web.Areas.Seller.Controllers
{
public class ShaoMaController : Controller
{
//卖家中心-扫码页面
public ActionResult Index()
{

region 用到微信扫一扫接口需要用的东西
 WxPayAPI.NiunanWXHelper wxhelper = new WxPayAPI.NiunanWXHelper();
 WxPayAPI.WxPayData config_data = wxhelper.GetJSSDKConfig();
 ViewBag.appid = config_data.GetValue("appId");
 ViewBag.timestamp = config_data.GetValue("timestamp");
 ViewBag.noncestr = config_data.GetValue("nonceStr");
 ViewBag.signature = config_data.GetValue("signature"); 
 #endregion
 return View();
    }
}

}
以下是NiunanWXHelper 的代码,用到了一些原来微信官方DEMO里的一些方法,所以创建在了微信官方DEMO的那个项目中:
using LitJson;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Security;

///


/// 牛腩自己写的微信helper
/// https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
///

namespace WxPayAPI
{
public class NiunanWXHelper
{
///
/// 返回使用微信JS-SDK接口的配置
// appId: @ViewBag.wx_appid, // 必填,企业号的唯一标识,此处填写企业号corpid
// timestamp: @ViewBag.wx_timestamp, // 必填,生成签名的时间戳
// nonceStr: @ViewBag.wx_noncestr, // 必填,生成签名的随机串
// signature: @ViewBag.wx_signature,// 必填,签名,见附录1
///

///
public WxPayData GetJSSDKConfig()
{
string appid = WxPayConfig.APPID;
string secret = WxPayConfig.APPSECRET;
string timestamp = WxPayApi.GenerateTimeStamp();
string noncestr = WxPayApi.GenerateNonceStr();
string signature = "";

 //签名算法  https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
 //1. 获取AccessToken(有效期7200秒,开发者必须在自己的服务全局缓存access_token)
 string url1 = $"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}";
 string result = HttpService.Get(url1);
 JsonData jd = JsonMapper.ToObject(result);
 string access_token = (string)jd["access_token"];

 //2. 用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket)
 string url2 = $"https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={access_token}&type=jsapi";
 string result2 = HttpService.Get(url2);
 JsonData jd2 = JsonMapper.ToObject(result2);
 string ticket = (string)jd2["ticket"];

 //3. 开始签名
 string now_url = HttpContext.Current.Request.Url.AbsoluteUri;
 string no_jiami = $"jsapi_ticket={ticket}&noncestr={noncestr}×tamp={timestamp}&url={now_url}";
 //SHA1加密
 signature = FormsAuthentication.HashPasswordForStoringInConfigFile(no_jiami, "SHA1");

 WxPayData data = new WxPayData();
 data.SetValue("appId", appid);
 data.SetValue("timestamp", timestamp);
 data.SetValue("nonceStr", noncestr);
 data.SetValue("signature", signature);

 Log.Debug(this.GetType().ToString(), "使用微信JS-SDK接口的配置 : " + data.ToPrintStr());

 return data;
    }
}

}

从官网下载的DEMO是ASPX的,我把里面的lib文件夹和business文件夹抽出来放到WXPAYAPI项目中了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/231706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号