ก่อนที่จะใช้เฟรมเวิร์กนี้ขอแนะนำให้มีความเข้าใจเกี่ยวกับเอกสารการพัฒนาของบัญชีสาธารณะ WeChat แต่การใช้เฟรมเวิร์กนี้โดยไม่เข้าใจเอกสารของบัญชีสาธารณะสามารถทำบัญชีสาธารณะ WeChat ได้อย่างง่าย
ปัจจุบันเข้ากันได้กับ Spring Boot 1.4+ และ Spring Boot 2.x ทุกคนยินดีที่จะพูดถึงปัญหาและการบริจาคและยังยินดีที่จะเข้าร่วมกลุ่มเพื่อหารือเกี่ยวกับ 627254793 โครงการโอเพนซอร์สจำเป็นต้องแบ่งปันโดยทุกคน ขอบคุณ ~
ลิงค์แอปพลิเคชันบัญชีอย่างเป็นทางการของ WeChat Test
<!-- 支持1.4.0.RELEASE及以上,包括2.x -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<dependencies>
<!-- fastbootWeixin的核心依赖 -->
<dependency>
<groupId>com.mxixm</groupId>
<artifactId>fastboot-weixin</artifactId>
<version>0.6.2</version>
</dependency>
<!-- SpringBoot的web项目,必须 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 暂时只能使用apache的http,后续可加入其它http支持 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
</dependencies>
สร้างแอปพลิเคชันไฟล์กำหนดค่าใหม่ Properties หรือประเภทไฟล์การกำหนดค่าอื่น ๆ ที่รองรับโดย Spring Boot ในไดเรกทอรีทรัพยากรและเพิ่มการกำหนดค่า:
รหัสทดสอบ:
package com.mxixm.fastboot.weixin;
import com.mxixm.fastboot.weixin.annotation.WxApplication;
import com.mxixm.fastboot.weixin.annotation.WxAsyncMessage;
import com.mxixm.fastboot.weixin.annotation.WxButton;
import com.mxixm.fastboot.weixin.module.web.WxRequest;
import com.mxixm.fastboot.weixin.module.event.WxEvent;
import com.mxixm.fastboot.weixin.module.message.WxMessage;
import com.mxixm.fastboot.weixin.module.message.WxMessageBody;
import com.mxixm.fastboot.weixin.module.user.WxUser;
import com.mxixm.fastboot.weixin.mvc.annotation.WxController;
import com.mxixm.fastboot.weixin.mvc.annotation.WxEventMapping;
import com.mxixm.fastboot.weixin.mvc.annotation.WxMessageMapping;
import org.springframework.boot.SpringApplication;
@WxApplication
@WxController
public class WxApp {
public static void main(String[] args) throws Exception {
SpringApplication.run(WxApp.class, args);
}
/**
* 定义微信菜单
*/
@WxButton(group = WxButton.Group.LEFT, main = true, name = "左")
public void left() {
}
/**
* 定义微信菜单
*/
@WxButton(group = WxButton.Group.RIGHT, main = true, name = "右")
public void right() {
}
/**
* 定义微信菜单,并接受事件
*/
@WxButton(type = WxButton.Type.CLICK,
group = WxButton.Group.LEFT,
order = WxButton.Order.FIRST,
name = "文本消息")
public String leftFirst(WxRequest wxRequest, WxUser wxUser) {
return "测试文本消息";
}
/**
* 定义微信菜单,并接受事件
*/
@WxButton(type = WxButton.Type.VIEW,
group = WxButton.Group.LEFT,
order = WxButton.Order.SECOND,
url = "http://baidu.com",
name = "点击链接")
@WxAsyncMessage
public WxMessage link() {
return WxMessage.newsBuilder().addItem("测试图文消息", "测试", "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white.png", "http://baidu.com").build();
}
/**
* 接受微信事件
* @param wxRequest
* @param wxUser
*/
@WxEventMapping(type = WxEvent.Type.UNSUBSCRIBE)
public void unsubscribe(WxRequest wxRequest, WxUser wxUser) {
System.out.println(wxUser.getNickName() + "退订了公众号");
}
/**
* 接受用户文本消息,异步返回文本消息
* @param content
* @return the result
*/
@WxMessageMapping(type = WxMessage.Type.TEXT)
@WxAsyncMessage
public String text(WxRequest wxRequest, String content) {
WxSession wxSession = wxRequest.getWxSession();
if (wxSession != null && wxSession.getAttribute("last") != null) {
return "上次收到消息内容为" + wxSession.getAttribute("last");
}
return "收到消息内容为" + content;
}
/**
* 接受用户文本消息,同步返回图文消息
* @param content
* @return the result
*/
@WxMessageMapping(type = WxMessage.Type.TEXT, wildcard = "1*")
public WxMessage message(WxSession wxSession, String content) {
wxSession.setAttribute("last", content);
return WxMessage.newsBuilder()
.addItem(WxMessageBody.News.Item.builder().title(content).description("随便一点")
.picUrl("http://k2.jsqq.net/uploads/allimg/1702/7_170225142233_1.png")
.url("http://baidu.com").build())
.addItem(WxMessageBody.News.Item.builder().title("第二条").description("随便二点")
.picUrl("http://k2.jsqq.net/uploads/allimg/1702/7_170225142233_1.png")
.url("http://baidu.com").build())
.build();
}
/**
* 接受用户文本消息,异步返回文本消息
* @param content
* @return the result
*/
@WxMessageMapping(type = WxMessage.Type.TEXT, wildcard = "2*")
@WxAsyncMessage
public String text2(WxRequestBody.Text text, String content) {
boolean match = text.getContent().equals(content);
return "收到消息内容为" + content + "!结果匹配!" + match;
}
}
เนื่องจากบัญชีสาธารณะ WeChat จำเป็นต้องกำหนดค่าอินเทอร์เฟซเซิร์ฟเวอร์ของตนเองคุณสามารถใช้การทดสอบในเครื่องโดยตรงระหว่างการทดสอบ การใช้การเจาะอินทราเน็ตสามารถอนุญาตให้แพลตฟอร์มสาธารณะ WeChat เข้าถึงเซิร์ฟเวอร์ท้องถิ่นของคุณเอง
ซอฟต์แวร์สามารถใช้ NGROK หรือ NATAPP โปรดดูเอกสารอย่างเป็นทางการของทั้งคู่
ที่อยู่ URL ชื่อโดเมนที่สร้างขึ้นหลังจากการเริ่มต้นสามารถกำหนดค่าได้ใน WX.CALLBACK-URL สำหรับการตรวจสอบ OAUTH2 ชื่อโดเมนใน URL ที่สร้างขึ้นข้างต้นจะต้องกำหนดค่าในชื่อโดเมนของหน้าโทรกลับการอนุญาต
กรอกชื่อโดเมนที่สร้างขึ้นในขั้นตอนที่ 4 ในข้อมูลการกำหนดค่าอินเตอร์เฟสของบัญชีการทดสอบอย่างเป็นทางการ โทเค็นใช้โทเค็นในไฟล์การกำหนดค่า หลังจากประหยัดหากไม่มีอะไรเกิดขึ้นที่ไม่คาดคิดก็ควรตรวจสอบให้สำเร็จ หากคุณมีคำถามใด ๆ โปรดให้ข้อเสนอแนะทันเวลา


หลังจากตัวอย่างข้างต้นเริ่มขึ้นโปรดให้ความสนใจกับบัญชีอย่างเป็นทางการของคุณ ในเวลานี้เมนูของบัญชีอย่างเป็นทางการควรมีเมนูหลักสองเมนู: ซ้ายและขวาและมีเมนูย่อยสองอันทางด้านซ้าย: ข้อความและคลิกลิงก์
เมื่อคุณคลิกที่เมนูข้อความคุณจะได้รับข้อความซึ่งก็คือ: ทดสอบข้อความ
เมื่อคุณคลิกลิงก์คลิกที่สองคุณจะข้ามไปที่ Baidu และรับข้อความกราฟิกที่มีชื่อเรื่องของข้อความทดสอบกราฟิก
เมื่อส่งข้อความไปยังบัญชีอย่างเป็นทางการหากเนื้อหาข้อความไม่เริ่มต้นด้วย 1 คุณจะได้รับการตอบกลับไปยังบัญชีอย่างเป็นทางการ: "เนื้อหาข้อความได้รับ" + เนื้อหาที่ส่ง
ส่งข้อความไปยังบัญชีอย่างเป็นทางการ เมื่อเนื้อหาข้อความเริ่มต้นด้วย 1 คุณจะได้รับการตอบกลับกราฟิกและข้อความ
เมื่อผู้ใช้ยกเลิกการสมัครเข้าบัญชีอย่างเป็นทางการชื่อเล่นของผู้ใช้จะถูกพิมพ์ใน System.out + "ยกเลิกการสมัครเข้าบัญชีอย่างเป็นทางการ"
คำอธิบายประกอบ @wxapplication ใช้เพื่อประกาศแอปพลิเคชันเป็นแอปพลิเคชัน WeChat และเริ่มใช้ SpringApplication หากคุณมีสภาพแวดล้อม Springboot แล้วโปรดเพิ่มคำอธิบายประกอบ @enablewxmvc ในคลาส @SpringApplication ของคุณเอฟเฟกต์จะเหมือนกัน คุณสามารถดูซอร์สโค้ด
คำอธิบายประกอบ @WXController ใช้เพื่อประกาศว่าคลาสนั้นเป็นตัวควบคุม WeChat เฉพาะเมื่อมีการประกาศคำอธิบายประกอบนี้จะถูกผูกไว้กับแผนที่คำขอของเซิร์ฟเวอร์ WeChat มิฉะนั้นคลาสจะถูกละเว้น
คำอธิบายประกอบ @wxButton (กลุ่ม = wxButton.group.left, main = true, name = "left") ใช้เพื่อประกาศกล่องปุ่ม กลุ่มแสดงกลุ่มที่มีสามกลุ่มทางด้านซ้ายกลางและขวาตรงกับเมนูระดับแรกของ WeChat สามระดับแรก หลักคือค่าบูลีนซึ่งหมายความว่ารายการเมนูเป็นเมนูระดับแรกหรือไม่ ชื่อคือชื่อเมนู
คำอธิบายประกอบ @wxButton (type = wxButton.type.click, กลุ่ม = wxButton.group.left, order = wxButton.order.first, ชื่อ = "ข้อความข้อความ") ใช้เพื่อประกาศเมนูย่อยของการจัดกลุ่มด้านซ้าย คำสั่งซื้อแสดงถึงคำสั่งซื้อนี่คือคำสั่งแรก
สตริงสาธารณะ leftfirst (wxrequest wxrequest, wxuser wxuser) {return "ทดสอบข้อความ"; } มีสามคะแนนที่นี่:
@wxButton (type = wxButton.type.view, กลุ่ม = wxButton.group.left, order = wxButton.order.second, url = "http://baidu.com", name = "คลิกที่ลิงค์") การบันทึกผลประกอบการนี้ สำหรับเนื้อหาเฉพาะคุณสามารถอ้างถึงคำอธิบายประกอบการแจงนับหรือเอกสารบัญชีอย่างเป็นทางการ โปรดทราบว่าแต่ละประเภทเมนูมีข้อ จำกัด ของตัวเอง โปรดดูเอกสาร หากไม่ตรงตามเงื่อนไขข้อยกเว้นจะเกิดขึ้นเมื่อเริ่มต้นการเริ่มต้น
คำอธิบายประกอบ @wxasyncMessage บ่งชี้ว่าข้อความได้รับการตอบกลับแบบอะซิงโครนัสอ้างอิงถึงข้อความบริการลูกค้าและไม่มีการสนับสนุนสำหรับการบริการลูกค้าหลายรายการในขณะนี้
wxMessage.news.builder () ในคลาส WXMessage มีคลาสภายในที่แตกต่างกันและผู้สร้างของพวกเขา ผ่านตัวสร้างข้อความ WeChat ประเภทต่าง ๆ สามารถสร้างได้ง่าย โปรดดูข้อความตอบกลับแบบพาสซีฟและข้อความบริการลูกค้า
คำอธิบายประกอบ @wxEventMapping (type = wxEvent.type.unsubscribe) ผูกเหตุการณ์ unsubscribe เมื่อผู้ใช้เลิกติดตามตรรกะด้านล่างคำอธิบายประกอบนี้จะถูกป้อน อีกประเด็นหนึ่งที่จะสังเกตคือเนื้อหาการตอบกลับทั้งหมดของ WXEVENTMAPPP จะถูกส่งไปยังผู้ใช้แบบอะซิงโครนัส
คำอธิบายประกอบ @WXMessAgEmapping (type = wxMessage.type.text) หมายถึงการผูกข้อความที่ส่งโดยผู้ใช้ไปยังตรรกะวิธีการต่อไปนี้ข้อความสตริงสาธารณะ (เนื้อหาสตริง) {return "ข้อความที่ได้รับคือ" เนื้อหา; - เนื้อหาจะถูกกำหนดโดยอัตโนมัติให้กับเนื้อหาข้อความที่ส่งโดยผู้ใช้
คำอธิบายประกอบ @wxMessageMapping (type = wxMessage.type.text, wildCard = "1*") เหมือนกับข้างต้น ความแตกต่างคือตัวละครไวลด์การ์ด ตัวละครไวด์การ์ดนี้รองรับเนื้อหาไวด์การ์ด การเอาชนะตรรกะไวด์การ์ดจะเข้าสู่ตรรกะการดำเนินการด้านล่าง
รวมเข้ากับสปริงบูตอย่างสมบูรณ์แบบ หากคุณไม่มีโครงการ SpringBoot และต้องการใช้เฟรมเวิร์กนี้เพื่อสร้างบัญชีสาธารณะคุณสามารถใช้ @WXApplication โดยตรงเพื่อทำเครื่องหมายคลาสเริ่มต้น คำอธิบายประกอบนี้รองรับพารามิเตอร์: Menuautocreate, ค่าเริ่มต้นเป็นจริง หมายความว่าเมนู WeChat ถูกสร้างขึ้นโดยอัตโนมัติและสามารถตั้งค่าเป็นเท็จเพื่อปิดพฤติกรรมของการสร้างเมนูโดยอัตโนมัติ หากคุณมีโครงการสปริงบูตอยู่แล้วและต้องการแนะนำเฟรมเวิร์กนี้เพียงทำเครื่องหมายคำอธิบายประกอบ @enablewxmvc ในคลาสการกำหนดค่าใด ๆ และพารามิเตอร์จะเหมือนกับด้านบน
รองรับการแมปสามประเภท:
หมายเหตุ: คลาสที่คุณผูกจะต้องประกาศเป็น @wxController
รองรับพารามิเตอร์ประเภทต่อไปนี้:
การผูกพารามิเตอร์ในปัจจุบันรองรับประเภทเหล่านี้ หากมีวิธีแก้ปัญหาที่ดีกว่าที่จำเป็นต้องได้รับการสนับสนุนคุณสามารถนำเสนอความคิดเห็นและข้อเสนอแนะโดยตรงและฉันจะจัดการกับพวกเขาในเวลาที่เหมาะสม
ค่าส่งคืนสนับสนุนประเภทต่อไปนี้:
ข้อความแบบอะซิงโครนัสข้างต้นจะถูกส่งโดยใช้ WxMessagetemplate ซึ่งอธิบายไว้ด้านล่าง
เฟรมเวิร์กนี้ให้ WxMessagetEmplate ส่งข้อความและในเวลาเดียวกันให้การสนับสนุน WxMessageProcessor ในเทมเพลตซึ่งก็คือการประมวลผลข้อความก่อนที่จะส่ง
ตัวอย่างเช่นเมื่อส่งคืนข้อความแบบซิงโครนัสคุณจะต้องเขียนฟิลด์ FromEnername ซึ่งเป็นฟิลด์ tousername เมื่อส่งข้อความ ไม่จำเป็นต้องปล่อยให้ผู้ใช้เฟรมเวิร์กประมวลผลฟิลด์นี้ ฟิลด์นี้ถูกประมวลผลในโปรเซสเซอร์ WXCommonMessageProcessor หากคุณสนใจคุณสามารถอ้างอิงถึงซอร์สโค้ด
นอกจากนี้ยังรองรับการแปลงต่อไปนี้: สำหรับข้อความประเภทสื่อคุณสามารถใช้ MediaUrl หรือ MediaPath โดยตรงเพื่อเขียนเส้นทางวัสดุและตัวแปลงข้อความจะจัดการวัสดุผ่าน WxMedianager โดยอัตโนมัติเพื่อรับรหัสวัสดุที่จำเป็น (เขียนด้านล่างเกี่ยวกับ wxmedianager)
หมายเหตุ: เมื่อประมวลผลข้อความขอแนะนำให้ใช้ตัวสร้างเนื้อหาข้อความที่เกี่ยวข้องใน WXMessage เพื่อสร้าง!
เฟรมเวิร์กนี้ให้ WxMediAnager ในการจัดการวัสดุและยังใช้ฐานข้อมูลแบบฝังเพื่อบันทึกการติดต่อระหว่างวัสดุและไฟล์ท้องถิ่น แม้ว่าฉันจะทำหน้าที่ส่วนนี้เสร็จแล้ว แต่ฉันก็รู้สึกว่ามีปัญหาใหญ่อยู่เสมอ ฉันหวังว่าจะมีคนช่วยฉันเห็นมันและให้คำแนะนำกับฉัน
สื่อในการส่งข้อความข้างต้นถูกนำไปใช้จริงผ่านตัวจัดการวัสดุ
รุ่น 0.2.0.ALPHA เพิ่มประสิทธิภาพการจัดเก็บโดยใช้อินเตอร์เฟส WxMediastore เพื่อจัดการที่เก็บข้อมูลสื่อนักพัฒนาสามารถใช้อินเทอร์เฟซนี้ด้วยตนเองและลงทะเบียนเป็นถั่วของ Spring เพื่อแทนที่ MAPDBWXMediastore เริ่มต้น สำหรับการใช้งานเฉพาะของแต่ละอินเทอร์เฟซโปรดดูที่ MAPDBWXMediastore นอกจากนี้ยังสามารถนำไปใช้กับหน่วยความจำได้ที่นี่เพื่อแทนที่ MAPDB
เฟรมเวิร์กนี้ให้อินเทอร์เฟซ Wxtokenstore เพื่อจัดเก็บโทเค็นและให้การใช้งานหน่วยความจำเริ่มต้นของหน่วยความจำ MemoryWxtokenStore หากคุณต้องการแจกจ่ายคุณสามารถใช้อินเทอร์เฟซนี้ด้วยตัวเองและฉีดคลาสการใช้งานลงในฤดูใบไม้ผลิเป็นถั่ว
ใช้อินเทอร์เฟซ WXAPIINVOKESPI และคลาสโรงงาน WXInVokerProxyFactory เพื่อสร้างพร็อกซีอินเตอร์เฟส WECHAT โดยอัตโนมัติ คุณจะต้องประกาศวิธีการและคำอธิบายประกอบเท่านั้น โดยค่าเริ่มต้นจะใช้อินเทอร์เฟซการโทร HTTPComponent เพื่อนที่สนใจสามารถตรวจสอบซอร์สโค้ด ฉันไม่ได้เขียนได้ดีดังนั้นหากคุณมีคำแนะนำที่ดีกว่าโปรดอย่าลังเลที่จะหยิบยกพวกเขา
ในเวลาเดียวกันการวิเคราะห์เบื้องต้นของค่าส่งคืนจะดำเนินการ หากรหัสข้อผิดพลาดของเนื้อหาที่ส่งคืนของอินเทอร์เฟซไม่ใช่ 0 มันจะถูกโยนเป็นข้อยกเว้น ระบบยกเว้นคือ WXException และคลาสย่อยของมัน
PS: คุณสามารถใช้วิธีนี้เพื่อสร้างอินเทอร์เฟซการโทรพร็อกซีของคุณเองได้ตามต้องการ ฉันจะเพิ่มเอกสารในอนาคตดังนั้นฉันจึงขี้เกียจในขณะนี้ - -
คุณสามารถเปิดและปิดสวิตช์สร้างโครงสร้างเมนูผ่านคำอธิบายประกอบ @WXButton และโทรหาอินเทอร์เฟซโดยอัตโนมัติเพื่อตรวจสอบว่าเมนูจะเปลี่ยนและสร้างและอัปเดตเมนูโดยอัตโนมัติ
สามารถตอบสนองต่อการตรวจสอบโทเค็นที่ส่งโดย WeChat ซึ่งสะดวกและรวดเร็ว
การใช้เฟรมเวิร์กนี้จะไม่ส่งผลกระทบใด ๆ ต่อการทำแผนที่ดั้งเดิมของ SpringMVC และจะไม่ครอบครองความสัมพันธ์การทำแผนที่ที่ไม่ซ้ำกัน (ยกเว้นคำขอการตรวจสอบสิทธิ์) ในกรณีของเฟรมเวิร์กนี้คุณสามารถใช้ฟังก์ชั่นดั้งเดิมของ SpringMVC รวมถึงคำขอรูทไดเรกทอรีและจะไม่ถูกครอบครองโดยเซิร์ฟเวอร์ WeChat เพียงอย่างเดียว
หากคุณต้องการใช้ที่อยู่แยกต่างหากเป็นที่อยู่การเรียก WeChat API โปรดกำหนดค่า WX.Path เป็นข้อมูลเส้นทางซึ่งจะต้องสอดคล้องกับเส้นทาง URL ในข้อมูลการกำหนดค่าอินเตอร์เฟสในการจัดการแบ็กเอนด์บัญชี WECHAT อย่างเป็นทางการ
ให้ WeChat OAUTH2 Authentication Intercept, กรอกข้อมูลในหน้าโดเมนการโทรกลับของ OAUTH2 โดยกำหนดค่า WX.CALLBACK-DOMAIN, กำหนดค่า wx.mvc.interceptor.includePatterns และ wx.mvc.interceptor.excludepatterns เพื่อกำหนดค่าที่อยู่เป้าหมายของการสกัดกั้น คุณสามารถจัดเตรียมคลาสการใช้งานอินเตอร์เฟส WxOAuth2Callback เป็นถั่วและถั่วนี้จะถูกฉีดโดยอัตโนมัติใน WxOAuth2Interceptor และโทรหลังจาก (wxOauth2Context หลังจากผ่านการตรวจสอบเว็บ WeChat ผ่านบริบท) วิธีการที่เกี่ยวข้องกับวิธีการของถั่ว คุณสามารถรับบริบท wxwebuser ในวิธีนี้และแปลง WxWebuser เป็น WXUSER ผ่าน WXUSERMANAGER สำหรับข้อมูลความสัมพันธ์โดยละเอียดโปรดดูที่: WeChat Web Authorization
ตั้งแต่เวอร์ชัน 0.3.6 คุณสมบัติทางเลือก WX.CALLBACK-URL ของ WX.CALLBACK-DOMAIN นั้นมีให้ซึ่งใช้เพื่อตั้งค่า URL ของการโทรกลับรวมถึงชื่อโดเมนโทรกลับและประเภทโปรโตคอล มีประเภทโปรโตคอลมากกว่า WX.CALLBACK-DOMAIN โปรดใช้การกำหนดค่านี้เพื่อแทนที่การกำหนดค่าการเรียกกลับโดเมน
ฟังก์ชั่นเพิ่มเติม 1: ประเภทดู WxButton ซึ่งกำหนดโดยอัตโนมัติว่า URL เป็นของที่อยู่ภายใต้ชื่อโดเมนการโทรกลับที่ได้รับอนุญาตและจัดการโดยอัตโนมัติเป็น URL ที่มี OAUTH2 ตามต้องการ สกัดกั้นเริ่มต้นสามารถใช้เพื่อรับรู้ฟังก์ชั่นของการได้รับข้อมูลผู้ใช้คลิกบน URL เมนู ในเวลาเดียวกันรวมกับฟังก์ชัน WX.Callback-URL มันรองรับการกำหนดค่าเส้นทางสัมพัทธ์ในเมนูโดยไม่ต้องพกพาชื่อโดเมน
ฟังก์ชั่นเพิ่มเติม 2: ตรวจสอบโดยอัตโนมัติว่า URL ในข้อความจำเป็นต้องเพิ่มการเปลี่ยนเส้นทาง OAuth โปรดดูที่ wxredirectutils หรือไม่
ในรหัสคุณสามารถใช้ wxjsticketManager เพื่อรับ wxjsticket
@Autowired
WxJsTicketManager wxJsTicketManager;
อ้างถึงวิธีการสำหรับการใช้งานโดยละเอียด
กำหนดค่า wx.encrypt = true, wx.encodingaeskey = aeskey ตั้งค่าในพื้นหลังของบัญชีอย่างเป็นทางการนั่นคือเปิดใช้งานการเข้ารหัสข้อความและโหมดถอดรหัส
โปรดทราบว่าเมื่อเปิดการเข้ารหัสข้อความและการถอดรหัสคุณจะต้องเปิดการอนุญาต JCE ไม่ จำกัด
jdk7 ดาวน์โหลดที่อยู่: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8 ดาวน์โหลดที่อยู่: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
หลังจากดาวน์โหลดคุณสามารถดู local_policy.jar, us_export_policy.jar และ readme.txt หากติดตั้ง JRE ให้วางไฟล์ JAR สองไฟล์ใน %JRE_HOME % lib Security Directory เพื่อเขียนทับไฟล์ต้นฉบับ หากติดตั้ง JDK คุณต้องวางไฟล์ JAR สองไฟล์ไว้ใน %JDK_HOME % JRE LIB Security Directory เพื่อเขียนทับไฟล์ต้นฉบับ
คุณสามารถเพิ่มการสนับสนุนในภายหลังและใช้คำอธิบายประกอบเพื่อกำหนดบริการลูกค้าข้อความคล้ายกับ @RabBitListener
การจำแนกประเภทผู้ใช้ที่ลำบากเล็กน้อย
มีการใช้การจัดกลุ่มผู้ใช้ที่ดีหรืออะไร? ยังไม่มีความต้องการ
เช่นการชำระเงิน ฯลฯ
เวอร์ชันเริ่มต้น
เพิ่มประสิทธิภาพการเชื่อมโยงพารามิเตอร์ข้อความเพิ่มการเชื่อมโยงร่างกายข้อความที่ระบุอ้างถึง wxRequestBody
อัพโหลดที่เก็บ Maven Central สร้าง Javadoc และชุดของ Normizations
เข้าร่วม Apache Copyright ทั้งหมด Delombok
ครั้งสุดท้ายที่ฉันเข้าร่วมลิขสิทธิ์ฉันได้ลบความคิดเห็นส่วนหัวของไฟล์ทั้งหมดโดยไม่ได้ตั้งใจ ตอนนี้ฉันได้เติมเต็มพวกเขาแล้ว ท้ายที่สุดฉันจะเพิ่มฟังก์ชั่นคูปองการ์ด WeChat และวางจำหน่ายเวอร์ชันรุ่น