01

微信H5

介绍

介绍一个.NET Mvc下开发微信H5的案例,这个是2年前找了一个封装比较简洁友好的一个Demo,开发环境是Razor+mvc+盛派接口,当然前提是你首先要熟悉微信开放平台以及微信支付平台以及它的相关设置

02

微信H5

Code认证机制

例如微信获取openid的机制,微信的所有认证是严格按照oauth2.0的机制来进行的,获取openid是采用code的方式,简单来讲就是通过appid来获取code,在通过code,密钥来获取用户信息。

03

微信H5

客户端认证机制

例如调用微信接口的机制,是通过appid和密钥换取token,在进行接口的调用,这在oauth2.0里是客户端模式。

04

微信H5

H5主要接口

1:获取用户信息:openid,昵称,图片等信息

2:前端jssdk的使用签名,赋予前端js调用微信接口的能力,

例如分析,位置,上传图片等功能

3:支付能力:发送红包,企业支付等功能

4:消息模板

05

微信H5

H5母版页

说明:制作一个模板_JWeixinConfig.cshtml

@{
    var appid = Config.SenparcWeixinSetting.WeixinAppId; ;
    var secret = Config.SenparcWeixinSetting.WeixinAppSecret;
    var jssdkInfo = JSSDKHelper.GetJsSdkUiPackage(appid, secret, Request.Url.AbsoluteUri);
    var friend = "感谢分享";
    var isshare =true;
}

06

微信H5

盛派接口

说明:引入Senparc.Weixin包,在Global.asax.cs下

#region 配置微信环境-注册公共服务组件配置信息,注册日志(按需,建议)
                //设置全局 Debug 状态
                var isGLobalDebug = true;
                //全局设置参数,将被储存到 Senparc.CO2NET.Config.SenparcSetting
                var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
                //CO2NET 全局注册,必须!!
                IRegisterService register = RegisterService.Start(senparcSetting).UseSenparcGlobal();
                register.RegisterTraceLog(ConfigWeixinTraceLog);//配置TraceLog
                #endregion
                #region 配置微信环境- 注册配置文件,注册功能:模块公众号(按需)注册微信支付(按需)
                //设置微信 Debug 状态
                var isWeixinDebug = true;
                //全局设置参数,将被储存到 Senparc.Weixin.Config.SenparcWeixinSetting
                var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);
                //微信全局注册,必须!!
                register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting)
                //注册公众号(可注册多个)
                .RegisterMpAccount(senparcWeixinSetting, "【xxxx】公众号")
                //注册最新微信支付版本(V3)(可注册多个)
                .RegisterTenpayV3(senparcWeixinSetting, "【xxxx】公众号");//记录到同一个 SenparcWeixinSettingItem 对象中
                #endregion

07

微信H5

配置信息

说明:在web.config下配置信息

08

微信H5

H5页面

说明:在需要微信环境的H5页面加入母版页

  @Html.Partial("_JWeixinConfig", new WechatModel { ShareContent= "快来参加吧!" })

09

微信H5

授权认证

说明:在control上加入以上代码:主要是为了获取code授权码

[CustomSenparcOAuth(null, "/OAuth/Callback")]
    public class H5SCodeController : H5SCodeBaseController

10

微信H5

获取用户信息

说明:通过以上的url地址会跳转至Oauth/Callback下进行获取授权

/// 
  /// 公众号oauth认证获取用户信息根据code
  /// 
    public class OAuthController : Controller
    {
        //下面换成账号对应的信息,也可以放入web.config等地方方便配置和更换
        private string appId = Config.SenparcWeixinSetting.WeixinAppId;
        private string secret = Config.SenparcWeixinSetting.WeixinAppSecret;
        /// 
        /// 通过code获取用户信息并跳回返回URL地址
        /// 
        /// 
        /// 
        /// 
        /// 
        public ActionResult Callback(string code, string state, string returnUrl)
        {
            LogTxt.WriteLog("获取认证:" + returnUrl, 8);
            if (string.IsNullOrEmpty(code))
            {
                throw new TpoBaseException("用户拒绝了授权");
            }
            OAuthAccessTokenResult oauthResult = null;
            try
            {
                oauthResult = OAuthApi.GetAccessToken(appId, secret, code);
            }
            catch (ErrorJsonResultException ex)
            {
                throw new TpoBaseException("用户拒绝了授权");
            }
            var oauthAccessToken = oauthResult.access_token;
            var openId = oauthResult.openid;
            OAuthUserInfo userInfo = OAuthApi.GetUserInfo(oauthAccessToken, openId);
            //Session认证进行登录
            H5SMLoginUserInfo userinfo = new H5SMLoginUserInfo();
            userinfo.OpenId = userInfo.openid;
            userinfo.Code = code;
            userinfo.Nickname = userInfo.nickname;
            userinfo.HeadImgurl = userInfo.headimgurl;
            UserContext.SetSessionH5SMUserInfo(userinfo);
            //更多的业务逻辑
            //cookie认证进行登录
            //System.Web.Security.FormsAuthentication.SetAuthCookie(openId, false);
            return Redirect(returnUrl);
        }
    }

11

微信H5

其他接口

其他接口直接调用盛派封装好的接口即可

12

微信H5

微信公众号设置

1:设置白名单:通过开发者ID及密码调用获取access_token接口时,需要设置访问来源IP为白名单

2:设置业务域名:在微信浏览器中点击文本框,会弹出下面的提示,很不爽,通过配置业务域名可以将该提示去掉

3:设置JS安全域名:分享到朋友圈(js-sdk)时用上,此接口要求将当前的界面url加密后,才可以分享到朋友圈。

4:网页授权域名:用于获取用户针对于公众号的唯一标识openid

13

微信H5

支付平台设置

支付平台

以上便是整个微信开发H5的工作原理及相关配置,如需详细了解或者了解源码可关注公众号留言。

联系我

联系我

一、GitHub:https://github.com/luoyesong102

二、微信号:larchjiang

三、公众号:NET技术交流圈

四、抖音号:jgl105

end

前端怎么做接口签名验证 -baijiahao_微信H5介绍:Razor+Mvc+盛派微信接口相关推荐

  1. 盛派微信 The ‘hr‘ start tag on line 6 position 2 does not match the end tag of ‘body’ 错误解决方案

    .NET Core微信支付退款 Senparc.Weixin.TenPay V3接口 The 'hr' start tag on line 6 position 2 does not match th ...

  2. ASP.NET CORE下用盛派微信SDK取微信openid

    用CORE做项目用到微信的相关东西,听说那个盛派微信SDK很火,自己弄了下,只是简单的用用,用户访问页面取微信openid

  3. 安卓端微信H5下载文件处理:让微信自动弹起跳转外部浏览器窗口

    配套视频:https://www.bilibili.com/video/BV1oA411B7gv/ 背景 今天鼓捣了一下手机投屏到笔记本,就想录个视频展示一下学习成果,正好就想起了很早之前实现的这个功 ...

  4. 微信h5更新服务器 用户不更新,微信网页授权token刷新和缓存问题

    业务场景: 目前有一个微信公众号,里面有好几个菜单,点击菜单的时候会跳转到业务页面,业务页面会去通过网页获取accesstoken的方式获取用户信息. 我们知道,微信提供了标准的oauth2.0的规范 ...

  5. 基于SENPARC盛派微信sdk的.net WebService微信公众号的相关开发(包含从零开始本机测试环境搭建//token验证//获取微信推送消息//向微信推送消息)

    前言: 由于微信公众号正式号,一直在被使用,所以在研发的时候,本机测试环境,就显得非常重要. 而且在自己闲暇之余,可以自己尝试更深程度的微信公众号的研发工作. 1.首先,必要的网站 http://sd ...

  6. 使用盛派微信SDK(Senparc.Weixin.MP)设计公众号被动回复API不返回信息问题

    研究了一晚上,终于找到原因了,这坑挖的真是害人不浅 不能收到回复的原因为两点: 1. 盛派官方的sdk例子根本是错误的,post请求也必须传参而不是使用盛派的model 2.返回结果要用Content ...

  7. 微信h5棋牌类APP如何在微信中做好防封防屏蔽技术

    为什么关心这种技术?因为我经常听到身边搞微商.搞微信项目的朋友都在叫苦连天,由于微信域名屏蔽.微信域名被拦截.弄得他们尸横遍野,损失的连过年回家的路费都没了,曾经的叱咤风云一下变成了今日的倒亏损.腾讯 ...

  8. 微信h5页面跳转浏览器 在微信中点击链接直接跳转到手机默认浏览器代码实现

    现如今微信对第三方推广链接的审核是越来越严格了,域名在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,要不然就是换个域名再推,周而复始.无论是哪一种情况都会面临一个 ...

  9. 微信h5游戏域名该怎么在微信中做好防封防屏蔽技术

    微信屏蔽网页的依据是什么? 明面上的原因是网页内容有诱导.诈骗等不和谐的内容时候,被用户举报就会封闭.实际上这只是表面现象,因为我们能明确的感受到不同的阶段,同样的内容,被封杀的频率差别很大的,也就是 ...

最新文章

  1. 女性程序员大会ghc_在女性科技大会上成为男人的感觉
  2. 揭秘华为AI一站式开发平台,3步构建一个AI模型 | 华为昇腾师资培训沙龙西安场...
  3. 大数据学习——免密登录配置
  4. 吴恩达深度学习 ——4.4 为什么使用深层表示
  5. python教程视频哪个好-Python教学视频哪个好?老男孩Python培训
  6. access month函数用法_掌握时间智能函数,同比环比各种比,轻松搞定!
  7. python怎么调用函数的返回值_python函数的返回值是什么
  8. 机械臂视觉抓取仿真,vrep与matlab联合仿真示例
  9. html js制作地图,前端使用D3.js制作地图
  10. 和cc2500通信时总是读入0F
  11. ACM_贪心(HDU2037HDU1789)
  12. 解决:Android4.3锁屏界面Emergency calls only - China Unicom与EMERGENCY CALL语义重复
  13. 在积分系统中可以设置哪些获取积分方式
  14. POJ 3322 BFS
  15. 则必有不完全相同的奇数排列对换为同一个偶排列
  16. 界面美化 —— 布局
  17. 1千6百多甲骨文汉字对应表ACCESS\EXCEL数据库
  18. 【转载声明】关于文章转载到微信公众号
  19. 电子商务业务模块分析和介绍以及开发流程
  20. 【东信北邮成都研发中心】一年Java开发经验面经

热门文章

  1. Python环境变量与引包错误
  2. js 监听返回键 利用pushState
  3. 正则十八式-第四式 挫骨扬灰
  4. 没想到,看《复联4》也能理解Spring Cloud
  5. 古剑奇谭显示服务器维修,古剑奇谭OL出现千人混战,满地图都是红名,服务器差点打宕机...
  6. 腾讯微博宣布关闭!下一个会是微视吗?
  7. java初级工程师需要学多久_Java初级工程师需要掌握什么样的技术?
  8. 再论“传奇真的变质了吗”
  9. 特斯拉软件成本_俄罗斯针对特斯拉的员工恶意软件计划elon musk确认
  10. 游戏服务端之AOI概述