受欢迎的博客标签

Wechat-微信服务号Asp .Net Core开发实战记录(1)-微信开发需要掌握的基础知识

Published

aaa

一、微信平台体系

(一)微信开放平台 (https://open.weixin.qq.com)

       微信开放平台针对开发者,给予获取各种微信应用的信息

(二)微信公众平台(https://mp.weixin.qq.com)

1、订阅号

2、服务号

3、企业号

4、小程序  

 



(三)微信支付平台(https://pay.weixin.qq.com)

 

 

(四)微信小程序平台(https://mp.weixin.qq.com)

微信开放平台绑定小程序流程
登录微信开放平台 — 管理中心 — 小程序 — 绑定小程序

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html

 

 

 

  (五)微信平台体系结构

微信开放平台(https://open.weixin.qq.com)
├───提供用户qq\微信登陆功能
└───提供同一用户unionid
微信公众平台(https://mp.weixin.qq.com)
├───订阅号  提供同一用户的单独的用户openid=openid1
├───服务号  提供同一用户的单独的用户openid=openid2
├───企业号  提供同一用户的单独的用户openid=openid3
└───小程序  提供同一用户的单独的用户openid=openid4
微信支付平台(https://pay.weixin.qq.com)
├───普通商户号:这种是指自己公司开发自己公司收、发资金用。不能给其他公司提供支付服务。
│   └───
└───服务商商户号:类似第三方支付服务提供商。如:支付宝、块钱等第三方服务商。
    └───

 

微信公众平台(https://mp.weixin.qq.com)

微信公众平台是为微信用户提供资讯和服务的平台,提供资讯(信息的分享)和服务(企业/个人和微信用户的业务交互)。

微信公众平台提供服务的方式有两种:第一就是可视化的运营平台,一种 SaaS 平台,不具备编程能力的人就能操作。
第二就是公众平台 API 接口,一种 PaaS 平台,腾讯将它的服务 API 化(它的服务其实提供了一个互动平台),以便满足开发者不同的运营需求。

为了精准定位公众号的使用范围,微信公众平台提供了订阅号、服务号、企业号。

订阅号服务于个人、服务号服务于企业外部、企业号服务于企业内部。

对于公众号提供者来说(开发者),这三种服务模式的不同点:

API 的权限和能力不同。
需要付费(微信或者企业认证) 。
个人开发者假如使用订阅号提供服务,由于不支持个人的微信认证,基本上不建议使用 API 的开发模式(因为权限太少了),所以还是老老实实的做自媒体。
比如我,本来想使用 API 的模式来提供我的订阅号,但是发现 API 权限太少(消息接口能用,菜单管理接口不能用),假如你想使用 API 模式,就用不了管理后台的菜单功能;假如你使用管理后台创建菜单,又完全不能使用 API,这是一个互逆的过程。

 

二、微信的用户体系

(一)UnionID机制

如果同一个微信用户访问了开发者拥有多个移动应用、网站应用、和公众帐号、小程序,开发者可以获取该用户在该应用下的OpenId值,但不同应用下的这些OpenID的值是各不相同的,所以你无法知道他是否是同一个用户。

如果把他们通过微信开放平台(https://open.weixin.qq.com)关联起来(官方语言:绑定),则他们在开放平台下就有了一个unionid且是唯一的。开发者在不同应用下除了可获得该用户的OpenID外,还用获取该用户在开放平台里的unionid。通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的  

(二)各种应用绑定到同一个微信开放平台

1. 将多个公众号绑定到同一个微信开放平台(open.weixin.qq.com)帐号下,即同一个Union下

2.确保本小程序是绑定在一个公共的开放平台下  

3. 通过获取用户基本信息接口中的UnionID来区分用户的唯一性,不过需要注意的是:公众号只有在被绑定到微信开放平台帐号(https://open.weixin.qq.com)下后,才会获取UnionID。只要是同一个微信开放平台帐号下的公众号,用户的UnionID是唯一的。换句话说, 同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的,但OpenId值是各不相同的。

4.在什么情况下用到UnionID?

同一个平台下,多个小程序,需要账户相互打通的情况下,就会用UnionID。尽管同一用户在同一平台下不同的小程序中openid是不同的,但UnionID一定是相同的。

5.关于openid和unionid,建议认准下面两点就能判定是否会变化。
1,openid只跟APPID相关,只要对应的公众号(或小程序等)APPID,不变,openid就不变。
2,unionid只跟开放平台账号相关,只要对应的公众号(或小程序等)没有换绑微信开放平台,unionid就不变。

 

(三)绑定条件

1.开放平台需进行微信认证(企业)才能绑定微信公众号。

2.开放平台未执行微信认证(个人)可以绑定小程序。 微信openid和UnionID (多公众号如何判断是否是同一人)

三、微信服务号开通

     1.微信服务号的注册      

      微信、微信公众平台和微信开放平台的注册邮箱都是独立唯一的。其中微信公众平台的订阅号、服务号、小程序、企业号都必须用不同的邮箱。并且之前注册过的邮箱【不管是否注册成功】,都不允许进行二次注册。      微信公众平台账号和开发者账号都需要微信管理员。     公众平台里微信认证,交300;开放平台里也要微信认证,提交的资料/主体和之前一模一样,就是不能用同一个邮箱,然后就再认证你一次,再交300。服务号的微信认证是针对服务号本身的,用于证明该服务号确实属于某企业。

      申请微信公众号-服务号并认证步骤  https://jingyan.baidu.com/article/597a06433af32f312a52436a.html

企业服务号注册申请实战记录: 

1、准备一个邮箱

2、营业执照

3、对公账户信息

4、管理员身份证

填写时选企业(不选个体工商户,不选其他组织)

5.对公打款 2.微信服务号的验证  

2.1 微信服务号主体验证

(一)主体验证入口 点击首页,出现“验证”按钮,可选择用支付验证或微信认证完成验证主体身份

(二)验证方式选择

方式一:支付验证-对公打款验证,用企业的银行账户按腾讯的指定的金额在规定的时间段内打款到腾讯指定的账户,验证更简单,一分钱证明你是你。

方式二:微信认证完成验证主体身份-上传一堆资料

2.2 微信服务号的微信支付验证 微信支付则是通过财付通来实现的,财付通与微信虽然都是同一个爹生的,但都仍然属于相互独立的部门,更何况在线支付是涉及钱财交易的重要功能,所以这是要经过另外的专门的认证的。因此,这两种认证基本上可以说不同的、互不相干的认证,唯一有关联的地方可能就是:服务号必须先经过微信认证,再经过财付通的支付认证,才具有微信支付功能。  

申请权限

1、组织机构代码证目前仅支持中国大陆企业;注: 若由于三证合一原因没有组织机构代码证时可填统一社会信用代码;

2、企业工商营业执照(副本)中国大陆工商局或市场监督管理局颁发的工商营业执照必须在有效期内,且须是当前企业最新的工商营业执照。注: 三证合一统一社会信用代码18位,可在营业执照注册号位置上填写“注册号”或“统一社会信用代码”;

3、申请公函请下载申请认证公函(模版参考示例)填写认证公函需要提供公众号的原始ID,去我的账户信息查看原始ID。上传加盖企业公章的原件照片或扫描件

4、其他证明材料可提交其他证明材料。注:上传文件需加盖企业公章的原件照片或扫描件支持.jpg .jpeg .bmp .gif .png格式照片,大小不超过2M。  

信息配置

1.上传图像

2.修改微信号

3.设置公司地址    

微信服务号第三方服务器第一次开发准备工作

step 1:运行WeiXinThirdServer服务器程序

1.在mp.weixin.qq.com后台获取开发WeiXinThirdServer所需要的参数Appid,AppSecret,Token(其中AppSecret,Token需开发者自行设置)

2.在mp.weixin.qq.com后台设置服务器IP为白名单,允许WeiXinThirdServer访问官方服务器api接口。

3.运行WeiXinThirdServer第三方服务程序

step 2:微信官方服务器对WeiXinThirdServer身份校验认证

4.微信官方服务器对WeiXinThirdServer身份校验认证

需配置Appid,AppSecret,URL,Token信息

(一)服务器及接口的配置

配置和验证 在开始微信号开发之前需要准备好两样东西,

 

1、域名:需要一个拥有域名的服务器,https协议,80端口(443端口)。

2.  登陆微信公众号平台,进行第三方中转服务器配置(已启用)

服务器地址(URL):https://weixin.usdotnet.com/weixin?originalid=gh_5588**6e31
服务器地址(URL):https://weixin.usdotnet.com/WeixiniAspNetCore?originalid=gh_8588**6e31
服务器地址(URL):https://weixin.usdotnet.com/WeixinStockso?originalid=gh_2f4d91c0ab64

令牌(Token):deiekjej

申请网址:(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)。

申请接口测试号无需公众帐号,可以直接体验和测试公众平台所有高级接口。  

配置 screat 配置服务器IP白名单

服务器接口的配置实战  

 开发者->基本设置


1.设置开发者密码(AppSecret)

step 1:进入mp.weixin.qq.com后台

menu path:开发->基本配置

step 2:用微信管理员扫描开始进行身份确认-> 2 密码验证 (输入微信公众号密码)-> 查看开发者密码(AppSecret=dsfjkl555ldd)

2.将服务器IP加入白名单:开发者微信扫码->管理员同意->输入公众号密码登录->永久保存    ->服务器IP加入白名单

WeiXinThirdServer源代码开发步骤记录

 step 1:基本参数配置

要进行公众号第三方服务器开发,源程序需要用到Appid,AppSecret,Token三个参数。

 

step 2:让开发者服务器通过微信官方服务器的认证

Step 1:填写访问服务器相关的配置参数

Menu path:基本配置/ 服务器配置
URL,Token,EncodingAESKey 必须填写

url:后台服务器Web访问地址
token:

Step 2:开始验证后台服务器合法性

在公众平台后台设置参数后,点击提交。微信官方服务器将向WeiXinThirdServer服务器程序发起http get请求。要显示“提交成功”,需要2个条件

1.1 四个参数都已设置:Appid,AppSecret,URL,Token,EncodingAESKey

1.2 开发者服务器IP加入白名单

1.3 开发者服务器向微信官方服务器返回echostr的内容。

 

点击提交,用下面的程序回应,即表示开发者服务器接入微信平台成功。修改配置、IP等信息后,也需要提交一次,否则微信官方服务器不会发送服务器认证消息。

 public async Task<IActionResult> Index()
        {
            

            var signature = _httpContextAccessor.HttpContext.Request.Query["signature"];//微信加密签名
            var timestamp = _httpContextAccessor.HttpContext.Request.Query["timestamp"];//时间戳 
            var nonce = _httpContextAccessor.HttpContext.Request.Query["nonce"];//随机数 
            var echostr = _httpContextAccessor.HttpContext.Request.Query["echostr"];//随机字符串 

            _logger.LogInformation($"{DateTime.Now} {_httpContextAccessor.HttpContext.Connection.RemoteIpAddress} get weixin/index called");

            try
            {
                if (!string.IsNullOrEmpty(echostr))
                {
                    //服务器认证

                    _logger.LogInformation($"{DateTime.Now} {_httpContextAccessor.HttpContext.Request.Headers["X-FORWARDED-FOR"]} 微信官方服务器认证发送过来的信息:{echostr}");
                    return Content(echostr);

                }

step 3:对微信官方服务器Post过来的数据进行响应

流程:用户微信发送消息->微信官方服务器收到用户发送的消息->微信官方服务器将此消息转发给开发者服务器(Post方式)->开发者服务器解析消息并返回结果给微信官方服务器->微信官方服务器将消息转发给用户。

2.1.1 实际测试过程中,用nginx代理,但未收到微信服务器post过来的消息。经查:nginx 的https 返回了400。

直接用下面的命令运行服务器:

dotnet run --urls http://0.0.0.0:80
不能用
dotnet run --urls http://kocalhost:80

 

更换服务器操作记录  20211108

1.变更域名ip

2.微信后台更改 白名单IP

 

webtool如何打开已存在的拷贝项目

 

webtool工具,选择“+”图标,导入已存在的项目即可恢复原项目信息。

 

 

 基础知识 常见的有openid 长度为28、access_token长度为107、headimgurl长度为129 sdk

wechat search

 wechat files search

D:\Thirdprogram\WeChat Files\wxid_1vqtv3vl0fkj22\FileStorage\File\2023-01

 

useful links

(1) Senparc.Weixin.MP    sdk库

Github: https://github.com/JeffreySu/WeiXinMPSDK 

Senparc.Weixin SDK 是由盛派网络(Senparc)团队自主研发的针对微信各模块的 开发套件(C# SDK), 已全面支持微信公众号、微信支付、企业号、开放平台、JSSDK、摇一摇周边等模块。   

2)WeixinSDK.net  

Github:  https://github.com/night-king/weixinSDK

目前只针对微信公众平台开发者文档所有API进行包装也就是微信服务号和订阅号的开发,不支持微信企业号和移动端API。但是不排除企业号和移动端API共有部分的调用,对于这部分本SDK不保证其能调用成功。 WeixinSDK的设计思路是小而美,对代码有洁癖的程序员很容易为之着迷,基本上API涉及到的业务他都用Dynamic对象表示,所以显得一下子比Senparc轻了许多。轻量级,结构清晰,简单灵活。  

3.Aquarius.Weixin .net core 2.0

3.1微信公众号开发框架

https://github.com/Weidaicheng/Aquarius.Weixin

3.2Senparc.Weixin SDK 微信公众号 .NET 开发教程 索引

http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html

  4)升讯威微信营销系统(第三方微信平台,最全的微信开放平台对接教程(附完整源代码,c#,非net core Github开源))

blog:https://segmentfault.com/a/1190000037580974

完整源代码 https://github.com/iccb1013/Sheng.WeixinConstruction  

5) https://github.com/RabbitTeam/WeiXinSDK

  6)微信公众号快速开发框架(WX MP QuickFramework) Net Core 2.0版本 https://github.com/jamesying/jcwxcore  

  第三方商业平台

1.芝麻小程序客户系统 http://xiaokefu.com.cn .

 

博客系列

伍华聪微信开发博客系列

https://www.cnblogs.com/wuhuacong/p/5366730.html

2.微信ipad、微信mac协议,可实现微信80%功能;支持62数据登录、扫码登录、收发朋友圈、查看朋友圈、微信建群、微信拉人进群、微信公众号阅读、微信消息收发、微信附近的人定位、微信添加好友、微信红包接收、微信防撤回、分享小程序、微信加粉、微信收藏、微信标签等

https://github.com/changtuiqie/Mac.WeChat

开发文档索引

1.微信公众号开发文档  https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Network_Detection.html

2.微信小程序开发文档    https://developers.weixin.qq.com/miniprogram/dev/framework/

3.微信支付开发文档