diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaJsonOutMessage.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaJsonOutMessage.java new file mode 100644 index 0000000000..b4f91a813c --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaJsonOutMessage.java @@ -0,0 +1,47 @@ +package cn.binarywang.wx.miniapp.message; + +import cn.binarywang.wx.miniapp.config.WxMaConfig; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 微信小程序输出给微信服务器的JSON格式消息. + * + * @author Binary Wang + */ +@Data +@Accessors(chain = true) +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class WxMaJsonOutMessage implements Serializable { + private static final long serialVersionUID = 4241135225946919154L; + + protected String toUserName; + protected String fromUserName; + protected Long createTime; + protected String msgType; + + /** + * 转换成JSON格式. + */ + public String toJson() { + return WxMaGsonBuilder.create().toJson(this); + } + + /** + * 转换成加密的JSON格式. + */ + public String toEncryptedJson(WxMaConfig config) { + String plainJson = toJson(); + WxMaCryptUtils pc = new WxMaCryptUtils(config); + return pc.encrypt(plainJson); + } +} \ No newline at end of file diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/message/WxMaJsonOutMessageTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/message/WxMaJsonOutMessageTest.java new file mode 100644 index 0000000000..65201f234b --- /dev/null +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/message/WxMaJsonOutMessageTest.java @@ -0,0 +1,37 @@ +package cn.binarywang.wx.miniapp.message; + +import me.chanjar.weixin.common.api.WxConsts; +import org.testng.annotations.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class WxMaJsonOutMessageTest { + + @Test + public void testToJson() { + WxMaJsonOutMessage message = WxMaJsonOutMessage.builder() + .fromUserName("test_from_user") + .toUserName("test_to_user") + .msgType(WxConsts.XmlMsgType.TRANSFER_CUSTOMER_SERVICE) + .createTime(System.currentTimeMillis() / 1000) + .build(); + + String jsonResult = message.toJson(); + assertThat(jsonResult).isNotEmpty(); + assertThat(jsonResult).contains("test_from_user"); + assertThat(jsonResult).contains("test_to_user"); + assertThat(jsonResult).contains(WxConsts.XmlMsgType.TRANSFER_CUSTOMER_SERVICE); + + System.out.println("JSON Output:"); + System.out.println(jsonResult); + } + + @Test + public void testEmptyMessage() { + WxMaJsonOutMessage message = new WxMaJsonOutMessage(); + String jsonResult = message.toJson(); + assertThat(jsonResult).isNotEmpty(); + System.out.println("Empty message JSON:"); + System.out.println(jsonResult); + } +} \ No newline at end of file