Das aktuelle Projekt zielt hauptsächlich auf die Schnittstellenkapselung von Social-Networking-Sites ab. In der frühen Phase des Projekts konzentriert es sich hauptsächlich auf die Entwicklung des WeChat-Plattform-SDK, das einfach nach der Schnittstellenfunktionsebene klassifiziert wird.
Dieses Projekt stellt Dienste in Form einer Standardbibliothek bereit, was bedeutet, dass es sowohl .Net Framework (4.6 und höher) als auch .Net Core unterstützen kann.
Wenn Sie Fragen haben, können Sie diese auch im offiziellen Konto (osscore) stellen:
1. Autorisierungs-Docking-Modul (Oauth)
Installationsbefehl unter Nuget: Install-Package OSS.Clients.Oauth.WX
Benutzerautorisierung (oauth2.0), grundlegende Benutzerautorisierungsinformationen
2. Sitzungsnachrichtenmodul (msg)
Installationsbefehl unter Nuget: Install-Package OSS.Clients.Msg.Wechat
Sitzungsverwaltung, Empfang von Benutzersitzungsinformationen und entsprechenden Antworten
3. Erweiterte Funktionen öffentlicher Konten (Plattform)
1.AccessToken
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.AccessToken**
这里主要是获取AccessToken接口的封装
WXPlatTokenApi - 公众号的正常Token接口
WXAgentPlatTokenApi - 代理平台的Token的接口
2. Grundlegender Informationsteil
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Basic**
这里主要是基础信息相关接口
WXPlatUserApi - 微信公众号用户信息相关接口
WXPlatIpApi - 微信服务器信息接口
WXPlatKfApi - 微信客服接口
WXPlatMassApi - 微信群发消息相关接口
WXPlatMediaApi - 微信素材相关接口
WXPlatMenuApi - 微信菜单相关接口
WXPlatQrApi - 微信二维码相关接口
3.Andere Schnittstellen
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX**
这里主要是公众号其他相关接口
WXPlatAssistApi - 微信jssdk辅助接口
WXPlatCardApi - 微信卡信息相关接口
WXPlatShakeApi - 微信摇一摇相关接口
WXPlatAppApi - 微信小程序相关接口
WXPlatStatApi - 微信统计相关接口
WXPlatStoreApi - 微信门店管理相关接口
4.Agent-Plattformschnittstelle
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Agent**
这里主要是公众号代理服务平台的相关接口
1. Grundlegender Autorisierungsaufruf (im SNS-Ordner)
//声明配置信息
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. Sitzungsaufruf (unter Msg-Ordner)
a. Deklarieren Sie zunächst die Konfigurationsinformationen
// 声明配置
private static readonly WXChatServerConfig config = new WXChatServerConfig ( )
{
Token = "你的token" ,
EncodingAesKey = "你的加密key" ,
SecurityType = WXSecurityType . Safe , // 在微信段设置的安全模式
AppId = "你的appid" //
} ;
b. Definieren Sie ein Verarbeitungshandle (Sie können Ihren eigenen Handler implementieren, erben Sie einfach von WXChatHandler).
private static readonly WXChatHandler msgService = new WXChatHandler ( config ) ;
c. Übergeben Sie beim Aufruf einfach den aktuell angeforderten Inhalt an den Programmeingang:
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" ) ;
Unter diesen kann WXChatHandler eine bestimmte Verarbeitungsklasse sein, die die Implementierung von WXChatHandler erbt und die entsprechenden Ergebnisse durch Umschreiben relevanter Benutzerereignisse zurückgibt.
3. Erweiterter Funktionsaufruf (unter dem Plattformordner)
Andere erweiterte Funktionsschnittstellen des offiziellen WeChat-Kontos erfordern eine globale Accesstoken-Schnittstelle, z. B. Push-Modulinformationen usw. Die automatische Erfassung des Accesstokens wurde in die zugrunde liegende Anforderungsverarbeitung des SDK gekapselt und wird standardmäßig im System gespeichert Cache und wird automatisch aktualisiert, wenn er gespeichert werden muss. In Redis kann er einfach über das Cache-Modul in oscommon eingefügt werden (ein Beispiel wird später gegeben). appid entsprechen eins zu eins, sodass Sie sich keine Sorgen über Konflikte zwischen mehreren offiziellen Konten machen müssen.
a. Konfigurationsinformationen deklarieren:
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
b. Deklarieren Sie eine Instanz:
private static readonly WXPlatMassApi m_OffcialApi = new WXPlatMassApi ( m_Config ) ;
c. Spezifische Verwendung
m_OffcialApi . SendTemplateAsync ( "openid" , "templateId" , "url" , new { } )
Derzeit ist der logische Teil des Schnittstellen-Frameworks fertiggestellt. Die Schnittstellen des Shops und der Geräteverwaltung müssen noch verbessert werden , Sie können es selbst implementieren oder beisteuern. Für eine neue Schnittstelle sind nur wenige Codezeilen erforderlich. Weitere Informationen finden Sie unter Beisteuern von Code.
Angesichts der tatsächlichen Nutzungsszenarien des Unternehmens wurde die offizielle WeChat-Kontoschnittstelle einfach zerlegt, und AccessToken und andere sind unabhängige SDKs. Alle unabhängigen SDKs verweisen auf die Klassenbibliothek OSS.Clients.Platform.WX.Base und bieten eine einheitliche Konfiguration von WXPlatConfigProvider unter diesem Bibliothekstyp, hauptsächlich um Benutzern den einheitlichen Erwerb von AccessToken zu erleichtern, wenn sie andere SDKs verwenden, wie zum Beispiel: Das mit OSS.Clients.Platform.WX.AccessToken implementierte einheitliche Cache-Verwaltungsprojekt AccessToken implementiert die Konfigurations-AccessToken-Erfassungsmethode unter WXPlatConfigProvider im Projekt mithilfe von OSS.Clients.Platform.WX.Basic
Dieses Projekt konzentriert sich derzeit hauptsächlich auf die WeChat SDK-Verarbeitung. Das Hauptframework von WeChat muss ergänzt werden Als Beispiel ist es einfach in die folgenden zwei Teilschritte unterteilt:
1. Deklarieren Sie die Objektentität
// 获取用户基本信息请求实体
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 ; }
}
Ich habe eine js-Seite geschrieben, um schnell Entitäts-Gist-Adressen über WeChat-Dokumentfeldbeschreibungen und chinesische Open-Source-Adressen zu generieren
2.Funktionsimplementierung
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. Unit-Tests hinzufügen (optional)
[ TestMethod ]
public void GetUserInfoTest ( )
{
var res = m_Api . GetUserInfo ( new WXPlatUserInfoReq ( )
{ openid = "o7gE1s6mygEKgopVWp7BBtEAqT-w" } ) ;
Assert . IsTrue ( res . IsSuccess ( ) ) ;
}
Der Rest kann per Git eingereicht werden.
尽快完善
Das aktuelle Projekt basiert auf den Open-Source-Projekten OSS.Common (globale Fehlerentität und Modulinjektion) und OSS.Http (http-Anfrage). Sie sind relativ einfach und kompakt und verfügen nur über wenige Klassen Sie müssen sich keine Sorgen über Blähungen machen.