Proyek saat ini terutama ditujukan pada enkapsulasi antarmuka situs jejaring sosial. Pada tahap awal proyek, proyek ini terutama berfokus pada pengembangan SDK platform WeChat, yang secara sederhana diklasifikasikan menurut tingkat fungsi antarmuka.
Proyek ini menyediakan layanan dalam bentuk perpustakaan standar, yang berarti dapat mendukung .Net Framework (4.6 ke atas) dan .Net Core.
Jika ada pertanyaan bisa juga ditanyakan di akun resmi (osscore):
1. Modul docking otorisasi (Oauth)
Perintah instalasi di bawah nuget: Install-Package OSS.Clients.Oauth.WX
Otorisasi pengguna (oauth2.0), informasi otorisasi pengguna dasar
2. Modul pesan sesi (pesan)
Perintah instalasi di bawah nuget: Install-Package OSS.Clients.Msg.Wechat
Manajemen sesi, menerima informasi sesi pengguna dan tanggapan yang sesuai
3. Fungsi lanjutan dari akun publik (Platform)
1.Token Akses
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.AccessToken**
这里主要是获取AccessToken接口的封装
WXPlatTokenApi - 公众号的正常Token接口
WXAgentPlatTokenApi - 代理平台的Token的接口
2. Bagian informasi dasar
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Basic**
这里主要是基础信息相关接口
WXPlatUserApi - 微信公众号用户信息相关接口
WXPlatIpApi - 微信服务器信息接口
WXPlatKfApi - 微信客服接口
WXPlatMassApi - 微信群发消息相关接口
WXPlatMediaApi - 微信素材相关接口
WXPlatMenuApi - 微信菜单相关接口
WXPlatQrApi - 微信二维码相关接口
3. Antarmuka lainnya
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX**
这里主要是公众号其他相关接口
WXPlatAssistApi - 微信jssdk辅助接口
WXPlatCardApi - 微信卡信息相关接口
WXPlatShakeApi - 微信摇一摇相关接口
WXPlatAppApi - 微信小程序相关接口
WXPlatStatApi - 微信统计相关接口
WXPlatStoreApi - 微信门店管理相关接口
4. Antarmuka platform agen
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Agent**
这里主要是公众号代理服务平台的相关接口
1. Panggilan otorisasi dasar (di bawah folder 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. Panggilan sesi (di bawah folder Pesan)
a.Deklarasikan informasi konfigurasi terlebih dahulu
// 声明配置
private static readonly WXChatServerConfig config = new WXChatServerConfig ( )
{
Token = "你的token" ,
EncodingAesKey = "你的加密key" ,
SecurityType = WXSecurityType . Safe , // 在微信段设置的安全模式
AppId = "你的appid" //
} ;
b. Tentukan pegangan pemrosesan (Anda dapat mengimplementasikan Handler Anda sendiri, cukup mewarisi dari WXChatHandler)
private static readonly WXChatHandler msgService = new WXChatHandler ( config ) ;
c. Saat menelepon, cukup masukkan konten yang diminta ke pintu masuk program:
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" ) ;
Diantaranya, WXChatHandler dapat menjadi kelas pemrosesan spesifik yang mewarisi implementasi WXChatHandler, dan mengembalikan hasil yang sesuai dengan menulis ulang peristiwa pengguna yang relevan.
3. Panggilan fungsi lanjutan (di bawah folder Platform)
Antarmuka fungsional lanjutan lainnya dari akun resmi WeChat memerlukan antarmuka accesstoken global, seperti informasi modul push, dll. Akuisisi accesstoken secara otomatis telah dikemas dalam pemrosesan permintaan yang mendasari SDK cache dan akan diperbarui secara otomatis ketika habis masa berlakunya. Jika perlu disimpan, Di redis, dapat disuntikkan melalui modul cache di oscommon. Cukup tambahkan implementasi modul cache untuk sns (contoh akan diberikan nanti). appid berkorespondensi satu lawan satu, jadi tidak perlu khawatir akan konflik antar beberapa akun resmi.
a. Deklarasikan informasi konfigurasi:
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
b. Deklarasikan sebuah instance:
private static readonly WXPlatMassApi m_OffcialApi = new WXPlatMassApi ( m_Config ) ;
c.Penggunaan khusus
m_OffcialApi . SendTemplateAsync ( "openid" , "templateId" , "url" , new { } )
Saat ini, bagian logika dari bagian kerangka antarmuka ini telah diproses. Fungsi utama akun resmi telah selesai. Antarmuka toko dan manajemen peralatan masih harus disempurnakan , Anda dapat mengimplementasikannya sendiri atau menyumbangkannya. Tambahkan antarmuka baru hanya memerlukan beberapa baris kode, lihat Kontribusi Kode untuk detailnya.
Mengingat skenario penggunaan bisnis yang sebenarnya, antarmuka akun resmi WeChat telah dibongkar begitu saja, dan AccessToken serta lainnya adalah SDK independen. Semua SDK independen mereferensikan pustaka kelas OSS.Clients.Platform.WX.Base, dan menyediakan konfigurasi terpadu WXPlatConfigProvider di bawah jenis pustaka ini, terutama untuk memfasilitasi pengguna mencapai akuisisi terpadu AccessToken saat menggunakan SDK lain, seperti: Proyek manajemen cache terpadu AccessToken diimplementasikan menggunakan OSS.Clients.Platform.WX.AccessToken mengimplementasikan metode akuisisi konfigurasi AccessToken di bawah WXPlatConfigProvider dalam proyek menggunakan OSS.Clients.Platform.WX.Basic
Proyek ini saat ini terutama berfokus pada pemrosesan WeChat SDK. Kerangka utama WeChat telah selesai dan antarmuka perlu dilengkapi. Akan sangat mudah untuk menyelesaikan antarmuka berdasarkan kerangka yang dienkapsulasi sebagai contoh, secara sederhana dibagi menjadi dua langkah Bagian berikut:
1. Deklarasikan entitas objek
// 获取用户基本信息请求实体
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 ; }
}
Saya menulis halaman js untuk dengan cepat menghasilkan alamat inti entitas melalui deskripsi bidang dokumen WeChat, alamat open source berbahasa Mandarin
2. Implementasi fungsi
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. Tambahkan pengujian unit (opsional)
[ TestMethod ]
public void GetUserInfoTest ( )
{
var res = m_Api . GetUserInfo ( new WXPlatUserInfoReq ( )
{ openid = "o7gE1s6mygEKgopVWp7BBtEAqT-w" } ) ;
Assert . IsTrue ( res . IsSuccess ( ) ) ;
}
Sisanya dapat dikirimkan melalui git.
尽快完善
Proyek saat ini bergantung pada proyek sumber terbuka yang saya tulis sebelumnya, OSS.Common (entitas kesalahan global, dan injeksi modul) dan OSS.Http (permintaan http). tidak perlu khawatir kembung.