يهدف تطوير حساب WeChat العام بشكل عام إلى المؤسسات والمنظمات. يمكن للأفراد التقدم فقط للحصول على حسابات الاشتراك ، والواجهات التي يسمونها محدودة. دعنا نصف بإيجاز الخطوات اللازمة للوصول إلى الحساب العام :
1. أولاً وقبل كل شيء ، تحتاج إلى عنوان بريد إلكتروني للتسجيل على منصة حساب WeChat الرسمية ؛
تتضمن طرق التسجيل حسابات الاشتراك والحسابات الرسمية والبرامج المصغرة وحسابات الشركات. الأفراد ، يمكننا فقط اختيار حسابات الاشتراك هنا.
2. بعد التسجيل ، نقوم بتسجيل الدخول إلى منصة الحساب الرسمية ---> التطوير ---> التكوين الأساسي. تحتاج إلى ملء عنوان URL والرمز المميز هنا. عنوان URL هو الواجهة التي نستخدم فيها الخادم ؛
3. إذا تم تجميع برنامج خادم الويب Java ونشره على الخادم ويمكن تشغيله ، فيمكنك تصحيح الواجهة عبر الإنترنت على حساب WeChat الرسمي:
1) حدد الواجهة المناسبة
2) سيقوم النظام بإنشاء جدول معلمة لهذه الواجهة. يمكنك ملء قيمة المعلمة المقابلة مباشرة في مربع النص (يشير النجمة الحمراء إلى أن هذا الحقل مطلوب)
3) انقر فوق الزر Check مشكلة للحصول على معلومات التصحيح المقابلة
على سبيل المثال: خطوات للحصول على Access_Token:
1) نوع الواجهة: الدعم الأساسي
2) قائمة الواجهة: احصل على واجهة Access_Token/رمز
3) ملء المعلمات المقابلة: Grant_type ، appid ، secret
4) انقر للتحقق من المشكلة
5) سيتم إرجاع النتيجة والمطالبة بعد نجاح التحقق ، والنتيجة هي: 200 موافق ، موجه: طلب ناجح يعني أن التحقق ناجح
ما لدينا المزيد من التحقق هنا هو تصحيح أخطاء واجهة الرسائل: الرسائل النصية ، الرسائل المصورة ، الرسائل الصوتية ، رسائل الفيديو ، إلخ.
4. إذا كنت لا تفهم الواجهة ، فيمكنك الانتقال إلى التطوير-> أدوات المطور-> مستندات المطور للاستعلام
5. أذونات الواجهة: حسابات الاشتراك لها أساسًا دعمًا أساسيًا واستقبالًا للرسائل وبعض الواجهات في خدمات الويب.
أدناه نتحدث بشكل أساسي عن حالة كيفية تلقي الرسائل حسب حسابات الاشتراك :
1. تحتاج إلى التقدم للحصول على حساب اشتراك في WeChat الشخصي
2. خادم URL ونشر رمز من جانب الخادم (يمكنك استخدام Tencent Cloud أو Alibaba Cloud Server)
1) فئة accountsservlet.java للتحقق من معالجة الرسائل من خادم WeChat وخادم WeChat
حزمة CN.JON.WECHAT.Servlet ؛ استيراد java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد cn.jon.wechat.service.AccountsService ؛ استيراد cn.jon.wechat.utils.signutil ؛ يمتد Class Public ClasseSservlet httpservlet {public accounsServlet () {super () ؛ } public void dorder () {super.destroy () ؛ // ضع الكود الخاص بك هنا}/ *** تأكد من أن الطلب يأتي من خادم WeChat*/ public void doget (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {system.out.println ("يبدأ اختبار الواجهة !!!") ؛ // WeChat Encryption Signature Signature = request.getParameter ("Signature") ؛ // timestamp string timestamp = request.getParameter ("timestamp") ؛ // number number string nonce = request.getParameter ("nonce") ؛ // سلسلة عشوائية echosttr = request.getParameter ("echosttr") ؛ printWriter out = response.getWriter () ؛ // تحقق من الطلب عن طريق التحقق من التوقيع. إذا كان التحقق ناجحًا ، فإن إرجاع EchoStr كما هو ، مما يشير إلى أن الوصول ناجح ، وإلا يفشل الوصول إذا (signutil.checksignature (التوقيع ، الطابع الزمني ، nonce)) {out.print (echoStr) ؛ } out.close () ؛ خارج = فارغ ؛ // response.encoderedirecturl ("success.jsp") ؛ } /*** الرسائل المعالجة التي يتم إرسالها بواسطة Wechat Server* /public void dopost (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {// استقبال ، والمعالجة ، والرد على طلب message.setcharacterencoding ("UTF-8") ؛ استجابة. setcharacterencoding ("UTF-8") ؛ // استدعاء نوع الأعمال الأساسية لقبول الرسائل ومعالجة سلسلة represmessage = accountsservice.processRequest (طلب) ؛ // message printWriter Out = response.getWriter () ؛ out.print (respmessage) ؛ out.close () ؛ } public void init () يلقي servletexception {// ضع الكود الخاص بك هنا}} 2) فئة Signutil.java ، فئة أدوات التحقق من الطلب ، يجب أن يكون الرمز المميز متسقًا مع الرمز المميز المملوء في WeChat
حزمة cn.jon.wechat.Utils ؛ استيراد java.security.messagedigest ؛ استيراد java.security.nosuchalgorithmexception ؛ استيراد java.util.arrays ؛ استيراد java.util.iterator ؛ استيراد java.util.map ؛ استيراد java.util.set ؛ استيراد java.util.concurrent.concurrenthashmap ؛ /*** طلب فئة أداة التحقق* Author Jon*/Class ClassUtil {// بما يتوافق مع الرمز المميز في تكوين WeChat private Static String Token = "" ؛ الفحص المنطقي الثابت العام (توقيع السلسلة ، الطابع الزمني للسلسلة ، سلسلة nonce) {string [] array = new string [] {token ، timestamp ، nonce} ؛ //arrays.sort(arra) ؛ StringBuilder sb = new StringBuilder () ؛ لـ (int i = 0 ؛ i <arra.length ؛ i ++) {sb.append (arra [i]) ؛ } messagedigest md = null ؛ سلسلة stnstr = null ؛ حاول {md = messagedigest.getInstance ("sha-1") ؛ byte [] digest = md.digest (sb.toString (). getBytes ()) ؛ stnstr = bytetoStr (Digest) ؛ } catch (nosuchalgorithmexception e) {// todo catch catch e.printstacktrace () ؛ } // memory free sb = null ؛ // قارن السلسلة المشفرة لـ SHA1 بالتوقيع ، مع تحديد أن الطلب يأتي من WeChat Return Stnstr! = null؟ stnstr.equals (signature.touppercase ()): false ؛ } / ** * تحويل صفيف البايت إلى سلسلة سداسية * param digestarra * return * / private Static String bytetoststr (byte [] digestarra) {// todo method method method string string digeststr = "" ؛ لـ (int i = 0 ؛ i <digestarra.length ؛ i ++) {digeststr+= bytetoHexstr (digestarra [i]) ؛ } إرجاع Digeststr ؛ } / *** تحويل البايتات إلى سلسلة سداسي عشوائية* / سلسلة ثابتة خاصة بايت هكسستر (بايت dbyte) {// todo method method char [] digit = {'0' ، '1' ، '2' ، '3' ، '4' ، '5' ، '6' ، '7' ، '8' ، '9' ، '' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f'} ؛ char [] tmparr = new Char [2] ؛ tmparr [0] = digit [(dbyte >>> 4) & 0x0F] ؛ tmparr [1] = digit [dbyte & 0x0f] ؛ سلسلة s = سلسلة جديدة (tmparr) ؛ العودة s ؛ } public static void main (string [] args) { /*byte dbyte = 'a' ؛ system.out.println (bytetoHexstr (dbyte)) ؛*/ map <string ، string> map = new concurrenthashMap <string ، string> () ؛ map.put ("4" ، "Zhangsan") ؛ map.put ("100" ، "lisi") ؛ set set = map.keyset () ؛ iterator iter = set.iterator () ؛ بينما (iter.hasnext ()) {// string keyv = (string) iter.next () ؛ مفتاح السلسلة = (سلسلة) iter.next () ؛ system.out.println (map.get (key)) ؛ // system.out.println (map.get (iter.next ())) ؛ } /*for (int i = 0 ؛ i <map.size () ؛ i ++) {}* /}} 3) فئة خدمة accountsservice.java ، خاصة لمعالجة الرسائل ومعالجة الاستجابة ، وعندما يتبع المستخدمون حسابك الرسمي ، يمكنهم تعيين رسائل الدفع الافتراضية
حزمة cn.jon.wechat.service ؛ استيراد java.util.date ؛ استيراد java.util.map ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد cn.jon.wechat.message.req.imagemessage ؛ استيراد cn.jon.wechat.message.req.linkMessage ؛ استيراد cn.jon.wechat.message.req.locationMessage ؛ استيراد cn.jon.wechat.message.req.videomessage ؛ استيراد cn.jon.wechat.message.req.voicemessage ؛ استيراد cn.jon.wechat.message.resp.textMessage ؛ استيراد cn.jon.wechat.Utils.MessageUtil ؛ / *** decoupling ، افصل طبقة التحكم عن طبقة منطق العمل ، والتعامل بشكل رئيسي مع الطلبات ، والرد* Author Jon*/ public class accountsservice {public static string processRequest (httpservletrequest request) {String respmessage = null ؛ . جرب {// xml طلب تحليل خريطة <string ، string> requestMap = messageutil.parexml (request) ؛ // Sender Account (Open_id) String fromuserName = requestMap.get ("fromuserName") ؛ // سلسلة الحساب العامة touserName = requestMap.get ("touserName") ؛ // نوع الرسالة سلسلة msgtype = requestMap.get ("msgtype") ؛ // الرد على هذه الرسالة النصية بشكل افتراضي textMessage DefaultTextMessage = new TextMessage () ؛ DefaultTextMessage.SettouserName (fromuserName) ؛ DefaultTextMessage.setFromuserName (touserName) ؛ defaultTextMessage.setCreateTime (تاريخ جديد (). getTime ()) ؛ defaultTextMessage.setMsgType (messageutil.messsage_type_text) ؛ defaultTextMessage.setfuncflag (0) ؛ // بما أن قيمة سمة HREF يجب أن تكون ناتجة عن عروض أسعار مزدوجة ، فإن هذا يتعارض مع الاقتباسات المزدوجة للسلسلة نفسها ، يجب أن تفلت DefaultTextMessage.setContent ( // DefaultTextMessage.setContent (getMainmenu ()) ؛ // قم بتحويل كائن الرسالة النصية إلى سلسلة XML RESPMessage = messageUtil.textMessageToxMl (DefaultTextMessage) ؛ // رسالة نصية if (msgtype.equals (messageutil.messsage_type_text)) {// respcontent = "hi ، أنت ترسل رسالة نصية!" ؛ // الرد على رسالة النص textMessage TextMessage = new TextMessage () ؛ // textMessage.SettouserName (touserName) ؛ // textMessage.setFromuserName (fromuserName) ؛ // ملاحظة هنا ، وإلا لا يمكن الرد على الرسالة على المستخدم textMessage.SettouserName (fromuserName) ؛ textMessage.setFromuserName (touserName) ؛ textMessage.setCreateTime (تاريخ جديد (). getTime ()) ؛ textMessage.setMsgType (messageutil.messsage_type_text) ؛ textMessage.setfuncflag (0) ؛ respcontent = "مرحبًا ، الرسالة التي أرسلتها هي:"+requestMap.get ("content") ؛ textMessage.setContent (respcontent) ؛ respmessage = messageutil.textMessageToxMl (textMessage) ؛ } // رسالة صورة أخرى if (msgtype.equals (messageUtil.messsage_type_image)) {emeMemessage heichesage = new healageessage () ؛ heicleessage.SettouserName (fromusername) ؛ heicleessage.setFromuserName (touserName) ؛ ImageMessage.setCreateTime (تاريخ جديد (). getTime ()) ؛ ImageMessage.setMsgType (messageutil.messsage_type_image) ؛ //respcontent=requestmap.get("picurl ") ؛ healthessage.setpicurl ("http://img24.pplive.cn//2013//07//24//12103112092_230x306.jpg") ؛ respmessage = messageUtil.ImagemessageToxMl (خيالي) ؛ } // الموقع الجغرافي آخر إذا (msgtype.equals (messageutil.messsage_type_location)) {locationMessage locationMessage = new locationMessage () ؛ locationMessage.SettouserName (fromuserName) ؛ locationmessage.setFromuserName (touserName) ؛ locationMessage.setCreateTime (تاريخ جديد (). getTime ()) ؛ locationmessage.setmsgtype (messageutil.messsage_type_location) ؛ locationmessage.setlocation_x (requestMap.get ("location_x")) ؛ locationmessage.setlocation_y (requestMap.get ("location_y")) ؛ locationmessage.setscale (requestMap.get ("Scale")) ؛ locationMessage.setLabel (requestMap.get ("label")) ؛ respmessage = messageutil.locationMessageToxMl (locationMessage) ؛ } // رسالة فيديو أخرى if (msgtype.equals (messageutil.messsage_type_video)) {videomessage videomessage = new videomessage () ؛ videomessage.settouserName (fromuserName) ؛ videomessage.setFromuserName (touserName) ؛ videomessage.setCreateTime (تاريخ جديد (). getTime ()) ؛ videomessage.setmsgtype (messageutil.messsage_type_video) ؛ videomessage.setMediaId (requestMap.get ("mediaid")) ؛ videomessage.setThumbmediaId (requestMap.get ("ThumbmediaId")) ؛ respmessage = messageutil.videomessageToxml (videomessage) ؛ } // رسالة ارتباط أخرى if (msgtype.equals (messageutil.messsage_type_link)) {linkMessage linkMessage = new LinkMessage () ؛ LinkMessage.SettouserName (fromuserName) ؛ LinkMessage.setFromuserName (touserName) ؛ LinkMessage.setCreateTime (تاريخ جديد (). getTime ()) ؛ LinkMessage.setMsgType (messageutil.messsage_type_link) ؛ LinkMessage.Settitle (requestMap.get ("title")) ؛ LinkMessage.setDescription (requestMap.get ("الوصف")) ؛ LinkMessage.seturl (requestMap.get ("url")) ؛ respmessage = messageUtil.LinkMessageToxMl (LinkMessage) ؛ } // رسالة صوتية أخرى if (msgtype.equals (messageutil.messsage_type_voice)) {voicemessage voiceMessage = new voicemessage () ؛ voicemessage.SettouserName (fromusername) ؛ voicemessage.setFromuserName (touserName) ؛ VoiceMessage.setCreateTime (تاريخ جديد (). getTime ()) ؛ voicemessage.setmsgtype (messageutil.messsage_type_voice) ؛ VoiceMessage.setMediaId (requestMap.get ("mediaid")) ؛ VoiceMessage.setFormat (requestMap.get ("format")) ؛ respmessage = messageutil.voicemessageToxml (voicemessage) ؛ } // Push event else if (msgtype.equals (messageutil.messsage_type_event)) {// نوع الحدث string eventtype = requestMap.get ("event") ؛ // اشترك إذا (EventType.equals (messageutil.event_type_subscribe)) {respcontent = "شكرًا لك على اهتمامك!" ؛ } // unsubscribe else if (eventType.equals (messageUtil.event_type_unsubscribe)) {// system.out.println ("unbscribe") ؛ } if if (eventType.equals (messageutil.event_type_click)) {// مخصص معالجة الرسائل System.out.println ("معالجة رسالة القائمة المخصصة") ؛ }}} catch (استثناء e) {// todo catch catch e.printstacktrace () ؛ } إرجاع respmessage ؛ } سلسلة ثابتة عامة getMainMenu () {StringBuffer Buffer = new StringBuffer () ؛ Buffer.Append ("مرحبًا ، أنا جون ، يرجى الرد على خدمة اختيار الأرقام:"). إلحاق ("/n") ؛ buffer.append ("1. مدونتي"). إلحاق ("/n") ؛ buffer.append ("/n") ؛ Buffer.Append ("2. Song on Demand"). إلحاق ("/n") ؛ Buffer.Append ("3. Classic Game"). إلحاق ("/n") ؛ Buffer.Append ("4. Chat and Play Cards"). إلحاق ("/n/n") ؛ buffer.append ("الرد"+"0"+"عرض" قائمة المساعدة ") ؛ إرجاع buffer.toString () ؛ }} 4) فئة المساعدة messageutil.java ، بما في ذلك التعريف المستمر وتحويل رسائل XML ومعالجته
حزمة cn.jon.wechat.Utils ؛ استيراد java.io.inputstream ؛ استيراد java.io.writer ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد org.dom4j.document ؛ استيراد org.dom4j.element ؛ استيراد org.dom4j.io.saxreader ؛ استيراد cn.jon.wechat.message.req.imagemessage ؛ استيراد cn.jon.wechat.message.req.linkMessage ؛ استيراد cn.jon.wechat.message.req.locationMessage ؛ استيراد cn.jon.wechat.message.req.videomessage ؛ استيراد cn.jon.wechat.message.req.voicemessage ؛ استيراد cn.jon.wechat.message.req.voicemessage ؛ استيراد cn.jon.wechat.message.resp.textMessage ؛ استيراد cn.jon.wechat.message.resp.musicMessage ؛ استيراد cn.jon.wechat.message.resp.textMessage ؛ استيراد cn.jon.wechat.message.resp.textMessage ؛ استيراد cn.jon.wechat.message.resp.textMessage ؛ استيراد cn.jon.wechat.message.resp.textMessage ؛ استيراد com.reatevorks.xstream.xstream ؛ استيراد com.theaughterWorks.xstream.core.util.quickwriter ؛ استيراد COM.TheagtWorks.xstream.io.hierarchicalStreamWriter ؛ import com.theagtworks.xstream.io.xml.prettyprintWriter ؛ استيراد com.theaughterWorks.xstream.io.xml.xppdriver ؛ / *** فئات معالجة الرسائل المختلفة* Author Jon*/ public Class MessageUtil {/ *** Text type*/ public Static Final String messsage_type_text = "text" ؛ / *** نوع الموسيقى*/ Static Final String Messsage_type_music = "Music" ؛ / *** نوع الصورة*/ Static Final String Messsage_type_news = "News" ؛ / *** نوع الفيديو*/ Static Final String MessSage_Type_Video = "Video" ؛ / *** نوع الصورة*/ Static Final String Messsage_type_image = "Image" ؛ / *** نوع الرابط*/ Static Final String Messsage_type_link = "Link" ؛ / *** نوع الموقع الجغرافي*/ Static Final String Messsage_type_location = "الموقع" ؛ / *** نوع الصوت*/ Static Final String MessSage_Type_Voice = "Voice" ؛ / *** push type*/ public static Final String messsage_type_event = "event" ؛ / ** * نوع الحدث: اشتراك (اشترك) */ Static Final Final Final Event_type_subscribe = "اشتراك" ؛ / ** * نوع الحدث: إلغاء الاشتراك (إلغاء الاشتراك) */ السلسلة النهائية الثابتة العامة event_type_unsubscribe = "unbscribe" ؛ / ** * نوع الحدث: انقر فوق (قائمة مخصصة انقر فوق الحدث) */ السلسلة النهائية الثابتة العامة event_type_click = "انقر فوق" ؛ /** * * طلب التحليل XML المرسل بواسطة WeChat */suppresswarnings ("غير محدد") الخريطة الثابتة العامة <String ، String> parexml (httpservletrequest request) يلقي استثناء {// تخزين النتيجة المحفورة في خريطة hashmap <string> reqmap = new mashmap <string> () ؛ // احصل على دفق الإدخال من request inputStream inputStream = request.getInputStream () ؛ // اقرأ دفق الإدخال saxreader reader = new saxreader () ؛ وثيقة المستند = reader.read (inputStream) ؛ // احصل على جذر عنصر جذر XML = document.getRootElement () ؛ // احصل على جميع العقد الفرعية لقائمة عنصر الجذر <Element> elementlist = root.elements () ؛ // transfuse جميع العقد الفرعية للحصول على محتوى فئة المعلومات لـ (Elem elem: elementlist) {reqmap.put (elem.getName () ، elem.gettext ()) ؛ } // refer the Resource inputStream.close () ؛ inputStream = null ؛ إرجاع reqmap ؛ } / ** * قم بتحويل رسالة الاستجابة إلى XML لإرجاع * كائن نص إلى XML * / السلسلة الثابتة العامة TextMessageToxMl (TextMessage TextMessage) {xstream.alias ("XML" ، textMessage.getClass ()) ؛ إرجاع xstream.toxml (textMessage) ؛ } / ** * تحويل كائن الصوت إلى XML * * / سلسلة ثابتة صوتية VoicEmessageToxMl (Voicemessage voicemessage) {xstream.alias ("XML" ، voicemessage.getClass ()) ؛ إرجاع xstream.toxml (voicemessage) ؛ } / ** * تحويل كائن الفيديو إلى xml * * / سلسلة ثابتة بالفيديو pideomessageToxMl (videomessage videomessage) {xstream.alias ("xml" ، videomessage.getClass ()) ؛ إرجاع xstream.toxml (videomessage) ؛ } / ** * تحويل كائنات الموسيقى إلى xml * * / static static static musicmessageToxml (MusicMessage MusicMessage) {xstream.alias ("xml" ، musicmessage.getClass ()) ؛ إرجاع xstream.toxml (MusicMessage) ؛ } / ** * تحويل الكائنات الرسومية إلى xml * * / public static string newsmessageToxml (NewsMessage NewsMessage) {xstream.alias ("xml" ، newsmessage.getClass ()) ؛ xstream.alias ("item" ، article (). getClass ()) ؛ إرجاع xstream.toxml (NewsMessage) ؛ } / ** * قم بتحويل كائن الصورة إلى XML * * / السلسلة الثابتة العامة ImageMessageToxMl (خيالي خيالي) {xstream.alias ( إرجاع xstream.toxml (خيالي) ؛ } / ** * قم بتحويل كائن الارتباط إلى XML * * / public static string linkMessageToxMl (linkMessage linkMessage) {xstream.alias ("xml" ، linkMessage.getClass ()) ؛ إرجاع xstream.toxml (linkMessage) ؛ } / ** * قم بتحويل كائن تحديد الموقع الجغرافي إلى XML * * / سلسلة ثابتة في موقع siteMessageToxMl (موقع locationMessage) {xstream.alias ("xml" ، locationmessage.getClass ()) ؛ إرجاع xstream.toxml (locationMessage) ؛ } /*** توسيع xstream لدعم كتل CDATA** /private xstream xstream = new xStream (new xppdriver () {public hierarchicalstreamwriter createRister (constr out) {return newPrintWriter (out) {// إضافة علامة cdata إلى جميع أدوار xml boolean cdata = true ؛ startNode (class clazz) {super.startnode (clazz) ؛ } 5) الفئة الأساسية للرسائل basemessage.java (بما في ذلك: حساب WeChat المطور ، وحساب المستخدم ، ووقت الإنشاء ، ونوع الرسالة ، ومتغير معرف الرسائل) ، والرسائل النصية ، والفيديو ، ورسائل الصور سوف ترث هذه الفئة الأساسية ، وعلى هذا الأساس ، ستوسيع متغيراتها الخاصة ويمكن تعريفها بناءً على سمات الرسائل المختلفة في وثيقة المطور.
Package Cn.Jon.Wechat.Message.Req ؛ /** * الفئة الأساسية للرسائل (حساب المستخدم العادي) * Author Jon */Public Class Basemessage {// Developer WeChat Id String TouserName ؛ // حساب المرسل (واحد مفتوح) سلسلة خاصة من اسم username ؛ // وقت إنشاء الرسائل (عدد صحيح) خاص طويل الإبداع ؛ // نوع الرسالة (النص/الصورة/الموقع/الرابط ...) سلسلة خاصة msgtype ؛ // معرف الرسالة 64 بت integer سلسلة خاصة msgid ؛ basemessage العامة () {super () ؛ // TODO AUDALTIDE CONTRUCTOR CONCTARCATOR} Basemessage (سلسلة touserName ، سلسلة من اسم username ، createTime الطويل ، سلسلة msgtype ، سلسلة msgid) {super () ؛ touserName = touserName ؛ fromusername = fromusername ؛ createTime = createTime ؛ msgtype = msgtype ؛ msgid = msgid ؛ } السلسلة العامة getTouserName () {return touserName ؛ } الاسم المستقر الفراغ العام (سلسلة touserName) {touserName = touserName ؛ } السلسلة العامة getFromuserName () {return fromuserName ؛ } public void setFromUsername (سلسلة fromuserName) {fromuserName = fromuserName ؛ } public getCreateTime () {return createTime ؛ } public void setCreateTime (long createTime) {createTime = createTime ؛ } السلسلة العامة getMsgType () {return msgtype ؛ } public void setMsgType (String msgtype) {msgtype = msgtype ؛ } السلسلة العامة getMsgid () {return msgid ؛ } public void setMsGid (String msgid) {msgid = msgid ؛ }} 6) TextMessage.Java رسالة نصية ، ورثت من الفئة الأساسية في 5 ، وتوسيع سمات المحتوى
Package Cn.Jon.Wechat.Message.Req ؛ /*** رسالة نصية* Author Jon*/Class Public TextMessage يمتد Basemessage {// Content Content Content Private Content ؛ السلسلة العامة getContent () {return content ؛ } public void setContent (string content) {this.content = content ؛ }}7) ImageMessage.Java رسالة صورة
Package Cn.Jon.Wechat.Message.Req ؛ /*** رسالة صورة* Author Jon*/Public Class EmageMessage يمتد Basemessage {// pic link string picurl ؛ السلسلة العامة getpicurl () {return picurl ؛ } public void setpicurl (String picurl) {picurl = picurl ؛ }} 8) رسالة فيديو java
Package Cn.Jon.Wechat.Message.Req ؛ الطبقة العامة بالفيديو يمتد basemessage {private String MediaId ؛ سلسلة خاصة ThumbmediaId. السلسلة العامة getMediaId () {return mediaId ؛ } public void setMediaId (String mediaId) {this.mediaId = mediaId ؛ } سلسلة عامة getThumbmediaId () {return thumbmediaId ؛ } public void setThumbmediaId (String ThumbmediaId) {this.thumbmediaId = ThumbmediaId ؛ }}يمكن إكمال فئات الرسائل الأخرى بأنفسهم بناءً على وثائق المطور. بالإضافة إلى ذلك ، يمكن للمطورين أيضًا التقدم بطلب للحصول على حساب اختبار منصة عامة لاختبار المحتوى ذي الصلة للتطوير.
تم تجميع هذه المقالة في "ملخص Tutorial Android WeChat Development" ، و "ملخص تعليمي Java WeChat Development" يرحب الجميع بالتعلم والقراءة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.