يهدف المشروع الحالي بشكل أساسي إلى تغليف واجهة مواقع الشبكات الاجتماعية. في المرحلة الأولى من المشروع، يركز بشكل أساسي على تطوير منصة WeChat SDK، والتي يتم تصنيفها ببساطة وفقًا لمستوى وظيفة الواجهة.
يقدم هذا المشروع خدمات على شكل مكتبة قياسية، مما يعني أنه يمكنه دعم كل من .Net Framework (4.6 وما فوق) و.Net Core.
إذا كان لديك أي أسئلة، يمكنك أيضًا طرحها في الحساب الرسمي (osscore):
1. وحدة إرساء التفويض (Oauth)
أمر التثبيت ضمن nuget: Install-Package OSS.Clients.Oauth.WX
ترخيص المستخدم (oauth2.0)، معلومات ترخيص المستخدم الأساسية
2. وحدة رسائل الجلسة (msg)
أمر التثبيت ضمن nuget: 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. مكالمة الجلسة (ضمن مجلد الرسائل)
أ. أعلن أولاً عن معلومات التكوين
// 声明配置
private static readonly WXChatServerConfig config = new WXChatServerConfig ( )
{
Token = "你的token" ,
EncodingAesKey = "你的加密key" ,
SecurityType = WXSecurityType . Safe , // 在微信段设置的安全模式
AppId = "你的appid" //
} ;
ب. تحديد مقبض المعالجة (يمكنك تنفيذ المعالج الخاص بك، فقط وراثة من WXChatHandler)
private static readonly WXChatHandler msgService = new WXChatHandler ( config ) ;
ج. عند الاتصال، ما عليك سوى تمرير المحتوى الحالي المطلوب إلى مدخل البرنامج:
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. استدعاء الوظيفة المتقدمة (ضمن مجلد النظام الأساسي)
تتطلب الواجهات الوظيفية المتقدمة الأخرى لحساب WeChat الرسمي واجهة وصول عالمية، مثل معلومات وحدة الدفع، وما إلى ذلك. وقد تم تغليف الاستحواذ التلقائي لرمز الوصول في معالجة الطلب الأساسي لـ SDK، وسيتم حفظه في النظام بشكل افتراضي سيتم تحديث ذاكرة التخزين المؤقت تلقائيًا عند انتهاء صلاحيتها، إذا كانت هناك حاجة إلى حفظها، فيمكن إدخالها في redis من خلال وحدة ذاكرة التخزين المؤقت في oscommon appid يتوافق مع واحد لواحد، لذلك لا داعي للقلق بشأن التعارضات بين الحسابات الرسمية المتعددة.
أ. الإعلان عن معلومات التكوين:
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
ب. أعلن عن مثيل:
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 ضمن هذا النوع من المكتبات، وذلك بشكل أساسي لتسهيل على المستخدمين تحقيق اكتساب موحد لـ AccessToken عند استخدام مجموعات SDK أخرى، مثل: مشروع إدارة ذاكرة التخزين المؤقت الموحدة AccessToken الذي تم تنفيذه باستخدام OSS.Clients.Platform.WX.AccessToken ينفذ طريقة اكتساب AccessToken للتكوين ضمن WXPlatConfigProvider في المشروع باستخدام OSS.Clients.Platform.WX.Basic
يركز هذا المشروع حاليًا بشكل أساسي على معالجة 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 ; }
}
لقد كتبت صفحة js لإنشاء عناوين Gist للكيان بسرعة من خلال أوصاف حقول مستندات WeChat والعناوين الصينية مفتوحة المصدر
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)، فهي بسيطة ومضغوطة نسبيًا، وتحتوي على عدد قليل من الفئات، لذلك فهي موجودة لا داعي للقلق بشأن الانتفاخ.