현재 프로젝트는 주로 소셜 네트워킹 사이트의 인터페이스 캡슐화를 목표로 하고 있습니다. 프로젝트 초기에는 주로 인터페이스 기능 수준에 따라 간단히 분류되는 WeChat 플랫폼 SDK 개발에 중점을 둡니다.
이 프로젝트는 표준 라이브러리 형태로 서비스를 제공합니다. 즉, .Net Framework(4.6 이상)과 .Net Core를 모두 지원할 수 있습니다.
궁금한 점이 있으시면 공식 계정(osscore)을 통해서도 질문하실 수 있습니다.
1. 인증 도킹 모듈 (Oauth)
너겟 아래 설치 명령: Install-Package OSS.Clients.Oauth.WX
사용자 권한(oauth2.0), 기본 사용자 권한 정보
2. 세션 메시지 모듈 (msg)
너겟 아래 설치 명령: Install-Package OSS.Clients.Msg.Wechat
세션 관리, 사용자 세션 정보 수신 및 이에 대한 응답
3. 공개계정(플랫폼)의 고급 기능
1.액세스토큰
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.AccessToken**
这里主要是获取AccessToken接口的封装
WXPlatTokenApi - 公众号的正常Token接口
WXAgentPlatTokenApi - 代理平台的Token的接口
2. 기본정보 부분
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Basic**
这里主要是基础信息相关接口
WXPlatUserApi - 微信公众号用户信息相关接口
WXPlatIpApi - 微信服务器信息接口
WXPlatKfApi - 微信客服接口
WXPlatMassApi - 微信群发消息相关接口
WXPlatMediaApi - 微信素材相关接口
WXPlatMenuApi - 微信菜单相关接口
WXPlatQrApi - 微信二维码相关接口
3. 기타 인터페이스
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX**
这里主要是公众号其他相关接口
WXPlatAssistApi - 微信jssdk辅助接口
WXPlatCardApi - 微信卡信息相关接口
WXPlatShakeApi - 微信摇一摇相关接口
WXPlatAppApi - 微信小程序相关接口
WXPlatStatApi - 微信统计相关接口
WXPlatStoreApi - 微信门店管理相关接口
4.에이전트 플랫폼 인터페이스
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Agent**
这里主要是公众号代理服务平台的相关接口
1. 기본 인증 호출 (sns 폴더 하위)
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
// 接口api实例
private static WXOauthApi m_AuthApi = new WXOauthApi ( m_Config ) ;
// 获取微信授权地址
public ActionResult auth ( )
{
var res = m_AuthApi . GetAuthorizeUrl ( "http://www.social.com/wxoauth/callback" ,
AuthClientType . WXPlat ) ;
return Redirect ( res ) ;
}
// 微信回调页,此页面获取accesstoken 获取用户基础信息
public ActionResult callback ( string code , string state )
{
var tokecRes = m_AuthApi . GetAuthAccessToken ( code ) ;
if ( tokecRes . IsSuccess ( ) )
{
var userInfoRes = m_AuthApi . GetWXAuthUserInfo ( tokecRes . AccessToken , tokecRes . OpenId ) ;
return Content ( "你已成功获取用户信息!" ) ;
}
return Content ( "获取用户授权信息失败!" ) ;
}
2. 세션콜(Msg 폴더 아래)
a. 먼저 구성 정보를 선언합니다.
// 声明配置
private static readonly WXChatServerConfig config = new WXChatServerConfig ( )
{
Token = "你的token" ,
EncodingAesKey = "你的加密key" ,
SecurityType = WXSecurityType . Safe , // 在微信段设置的安全模式
AppId = "你的appid" //
} ;
b. 처리 핸들을 정의합니다(WXChatHandler에서 상속하여 자체 핸들러를 구현할 수 있음).
private static readonly WXChatHandler msgService = new WXChatHandler ( config ) ;
c. 호출할 때 현재 요청된 콘텐츠를 프로그램 입구에 전달하세요.
using ( StreamReader reader = new StreamReader ( Request . InputStream ) )
{
requestXml = reader . ReadToEnd ( ) ;
}
try
{
var res = msgService . Process ( requestXml , signature , timestamp , nonce , echostr ) ;
if ( res . IsSuccess ( ) )
return Content ( res . data ) ;
}
catch ( Exception ex )
{
}
return Content ( "success" ) ;
그 중 WXChatHandler는 WXChatHandler의 구현을 상속하고 관련 사용자 이벤트를 다시 작성하여 해당 결과를 반환하는 특정 처리 클래스일 수 있습니다.
3. 고급 함수 호출(Platform 폴더 아래)
WeChat 공개 계정의 기타 고급 기능 인터페이스에는 푸시 모듈 정보 등과 같은 전역 액세스 토큰 인터페이스가 필요합니다. 액세스 토큰의 자동 획득은 SDK의 기본 요청 처리에 캡슐화되어 있으며 기본적으로 시스템을 사용하여 저장됩니다. 캐시가 만료되면 자동으로 업데이트됩니다. 저장해야 하는 경우 Redis에서는 oscommon의 캐시 모듈을 통해 주입할 수 있습니다. sns에 대한 캐시 모듈 구현을 추가하면 됩니다(예제는 나중에 제공됩니다). appid는 일대일로 대응하므로 여러 공식 계정 간의 충돌을 걱정할 필요가 없습니다.
a. 구성 정보를 선언합니다.
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
b. 인스턴스를 선언합니다.
private static readonly WXPlatMassApi m_OffcialApi = new WXPlatMassApi ( m_Config ) ;
다. 특정 용도
m_OffcialApi . SendTemplateAsync ( "openid" , "templateId" , "url" , new { } )
현재 인터페이스 프레임워크의 로직 부분은 완료되었습니다. 매장 및 장비 관리 인터페이스는 아직 완성되지 않았습니다. , 직접 구현하거나 기여할 수 있습니다. 추가 새 인터페이스에는 몇 줄의 코드만 필요합니다. 자세한 내용은 코드 기여를 참조하세요.
비즈니스의 실제 사용 시나리오를 고려하여 WeChat 공식 계정 인터페이스는 간단히 분해되었으며 AccessToken 및 기타는 독립적인 SDK입니다. 모든 독립 SDK는 OSS.Clients.Platform.WX.Base 클래스 라이브러리를 참조하고 이러한 유형의 라이브러리에서 WXPlatConfigProvider의 통합 구성을 제공합니다. 이는 주로 사용자가 다음과 같은 다른 SDK를 사용할 때 AccessToken의 통합 획득을 달성할 수 있도록 지원합니다. OSS.Clients.Platform.WX.AccessToken을 사용하여 구현된 AccessToken 통합 캐시 관리 프로젝트는 OSS.Clients.Platform.WX.Basic을 사용하여 프로젝트의 WXPlatConfigProvider 아래에 구성 AccessToken 획득 방법을 구현합니다.
이 프로젝트는 현재 주로 WeChat SDK 처리에 중점을 두고 있습니다. WeChat의 기본 프레임워크는 완성되었으며 인터페이스를 보완해야 합니다. 캡슐화된 프레임워크를 기반으로 인터페이스를 완성하는 것은 매우 간단합니다. 예를 들어, 이는 간단히 다음 두 부분 단계로 나뉩니다.
1. 객체 엔터티 선언
// 获取用户基本信息请求实体
public class WXPlatUserInfoReq
{
public string openid { get ; set ; }
public string lang { get ; set ; }
}
// 响应实体,继承WXBaseResp
public class WXPlatUserInfoResp : WXBaseResp
{
public string openid { get ; set ; }
public string nickname { get ; set ; }
//... 字段省略
public List < int > tagid_list { get ; set ; }
}
WeChat 문서 필드 설명, 오픈 소스 중국어 주소를 통해 엔터티 Gist 주소를 빠르게 생성하기 위해 js 페이지를 작성했습니다.
2.기능 구현
public WXPlatUserInfoResp GetUserInfo ( WXPlatUserInfoReq userReq )
{
var req = new OssHttpRequest ( ) ;
req . HttpMethod = HttpMethod . Get ;
req . AddressUrl = string . Concat ( m_ApiUrl ,
$ "/cgi-bin/user/info?openid= { userReq . openid } &lang= { userReq . lang } " ) ;
// 请求地址中的AccessToken 底层会自动补充
return RestCommonOffcial < WXPlatUserInfoResp > ( req ) ;
}
3. 단위 테스트 추가(선택 사항)
[ TestMethod ]
public void GetUserInfoTest ( )
{
var res = m_Api . GetUserInfo ( new WXPlatUserInfoReq ( )
{ openid = "o7gE1s6mygEKgopVWp7BBtEAqT-w" } ) ;
Assert . IsTrue ( res . IsSuccess ( ) ) ;
}
나머지는 git을 통해 제출할 수 있습니다.
尽快完善
현재 프로젝트는 제가 이전에 작성한 오픈 소스 프로젝트인 OSS.Common(전역 오류 엔터티 및 모듈 주입)과 OSS.Http(http 요청)에 의존하고 있습니다. 이들은 몇 가지 클래스만 포함하여 비교적 간단하고 컴팩트합니다. 팽창에 대해 걱정할 필요가 없습니다.