Преглед изворни кода

消息群发的预览接口

master
miller пре 8 година
родитељ
комит
83e443b02f
5 измењених фајлова са 146 додато и 11 уклоњено
  1. +22
    -11
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
  2. +7
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java
  3. +68
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassPreviewMessage.java
  4. +1
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java
  5. +48
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMassPreviewMessageGsonAdapter.java

+ 22
- 11
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java Прегледај датотеку

@@ -351,7 +351,7 @@ public interface WxMpService {
* @throws WxErrorException * @throws WxErrorException
*/ */
public void menuDelete(String menuid) throws WxErrorException; public void menuDelete(String menuid) throws WxErrorException;
/** /**
* <pre> * <pre>
* 自定义菜单查询接口 * 自定义菜单查询接口
@@ -361,7 +361,7 @@ public interface WxMpService {
* @throws WxErrorException * @throws WxErrorException
*/ */
public WxMenu menuGet() throws WxErrorException; public WxMenu menuGet() throws WxErrorException;
/** /**
* <pre> * <pre>
* 测试个性化菜单匹配结果 * 测试个性化菜单匹配结果
@@ -723,7 +723,7 @@ public interface WxMpService {
/** /**
* 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1) * 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
* 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识" * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"
*
*
* @param parameters * @param parameters
* All required/optional parameters for weixin payment * All required/optional parameters for weixin payment
* @return * @return
@@ -737,10 +737,10 @@ public interface WxMpService {
* @param parameters * @param parameters
* the required or optional parameters * the required or optional parameters
* @return * @return
* @throws WxErrorException
* @throws WxErrorException
*/ */
Map<String, String> getJSSDKPayInfo(Map<String, String> parameters) throws WxErrorException;
Map<String, String> getJSSDKPayInfo(Map<String, String> parameters) throws WxErrorException;
/** /**
* 该接口调用“统一下单”接口,并拼装JSSDK发起支付请求需要的参数 * 该接口调用“统一下单”接口,并拼装JSSDK发起支付请求需要的参数
* 详见http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82 * 详见http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82
@@ -752,7 +752,7 @@ public interface WxMpService {
* @param ip 发起支付的客户端IP * @param ip 发起支付的客户端IP
* @param notifyUrl 通知地址 * @param notifyUrl 通知地址
* @return * @return
* @throws WxErrorException
* @throws WxErrorException
* @deprecated Use me.chanjar.weixin.mp.api.WxMpService.getJSSDKPayInfo(Map<String, String>) instead * @deprecated Use me.chanjar.weixin.mp.api.WxMpService.getJSSDKPayInfo(Map<String, String>) instead
*/ */
@Deprecated @Deprecated
@@ -773,7 +773,7 @@ public interface WxMpService {
* @return * @return
*/ */
WxMpPayCallback getJSSDKCallbackData(String xmlData); WxMpPayCallback getJSSDKCallbackData(String xmlData);
/** /**
* 微信支付-申请退款 * 微信支付-申请退款
* 详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4 * 详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4
@@ -784,10 +784,10 @@ public interface WxMpService {
* <li/> total_fee * <li/> total_fee
* <li/> refund_fee * <li/> refund_fee
* @return 退款操作结果 * @return 退款操作结果
* @throws WxErrorException
* @throws WxErrorException
*/ */
public WxMpPayRefundResult refundPay(Map<String, String> parameters) throws WxErrorException; public WxMpPayRefundResult refundPay(Map<String, String> parameters) throws WxErrorException;
/** /**
* <pre> * <pre>
* 计算Map键值对是否和签名相符, * 计算Map键值对是否和签名相符,
@@ -914,7 +914,7 @@ public interface WxMpService {
*/ */
public void markCardCode(String code, String cardId, String openId, boolean isMark) throws public void markCardCode(String code, String cardId, String openId, boolean isMark) throws
WxErrorException; WxErrorException;
/** /**
* 查看卡券详情接口 * 查看卡券详情接口
* 详见 https://mp.weixin.qq.com/wiki/14/8dd77aeaee85f922db5f8aa6386d385e.html#.E6.9F.A5.E7.9C.8B.E5.8D.A1.E5.88.B8.E8.AF.A6.E6.83.85 * 详见 https://mp.weixin.qq.com/wiki/14/8dd77aeaee85f922db5f8aa6386d385e.html#.E6.9F.A5.E7.9C.8B.E5.8D.A1.E5.88.B8.E8.AF.A6.E6.83.85
@@ -925,4 +925,15 @@ public interface WxMpService {
* @throws WxErrorException * @throws WxErrorException
*/ */
public String getCardDetail(String cardId) throws WxErrorException; public String getCardDetail(String cardId) throws WxErrorException;

/*
* <pre>
* 预览接口
* 详情请见:http://mp.weixin.qq.com/wiki/15/40b6865b893947b764e2de8e4a1fb55f.html#.E9.A2.84.E8.A7.88.E6.8E.A5.E5.8F.A3.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91
* </pre>
* @param wxMpMassPreviewMessage
* @return wxMpMassSendResult
* @throws WxErrorException
*/
public WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception;
} }

+ 7
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java Прегледај датотеку

@@ -1259,4 +1259,11 @@ public class WxMpServiceImpl implements WxMpService {
return responseContent; return responseContent;
} }


@Override
public WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception {
String url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview";
String responseContent = execute(new SimplePostRequestExecutor(), url, wxMpMassPreviewMessage.toJson());
return WxMpMassSendResult.fromJson(responseContent);
}

} }

+ 68
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMassPreviewMessage.java Прегледај датотеку

@@ -0,0 +1,68 @@
package me.chanjar.weixin.mp.bean;

import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;

import java.io.Serializable;

/**
* @author miller
*/
public class WxMpMassPreviewMessage implements Serializable {
private String toWxUsername;
private String msgType;
private String content;
private String mediaId;

public WxMpMassPreviewMessage() {
super();
}

public String getToWxUsername() {
return toWxUsername;
}

public void setToWxUsername(String toWxUsername) {
this.toWxUsername = toWxUsername;
}

public String getMsgType() {
return msgType;
}

/**
* <pre>
* 请使用
* {@link me.chanjar.weixin.common.api.WxConsts#MASS_MSG_IMAGE}
* {@link me.chanjar.weixin.common.api.WxConsts#MASS_MSG_NEWS}
* {@link me.chanjar.weixin.common.api.WxConsts#MASS_MSG_TEXT}
* {@link me.chanjar.weixin.common.api.WxConsts#MASS_MSG_VIDEO}
* {@link me.chanjar.weixin.common.api.WxConsts#MASS_MSG_VOICE}
* 如果msgtype和media_id不匹配的话,会返回系统繁忙的错误
* </pre>
*
* @param msgType
*/
public void setMsgType(String msgType) {
this.msgType = msgType;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

public String getMediaId() {
return mediaId;
}

public void setMediaId(String mediaId) {
this.mediaId = mediaId;
}

public String toJson() {
return WxMpGsonBuilder.INSTANCE.create().toJson(this);
}
}

+ 1
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java Прегледај датотеку

@@ -40,6 +40,7 @@ public class WxMpGsonBuilder {
INSTANCE.registerTypeAdapter(WxMpMaterialFileBatchGetResult.WxMaterialFileBatchGetNewsItem.class, new WxMpMaterialFileBatchGetGsonItemAdapter()); INSTANCE.registerTypeAdapter(WxMpMaterialFileBatchGetResult.WxMaterialFileBatchGetNewsItem.class, new WxMpMaterialFileBatchGetGsonItemAdapter());
INSTANCE.registerTypeAdapter(WxMpCardResult.class, new WxMpCardResultGsonAdapter()); INSTANCE.registerTypeAdapter(WxMpCardResult.class, new WxMpCardResultGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpCard.class, new WxMpCardGsonAdapter()); INSTANCE.registerTypeAdapter(WxMpCard.class, new WxMpCardGsonAdapter());
INSTANCE.registerTypeAdapter(WxMpMassPreviewMessage.class, new WxMpMassPreviewMessageGsonAdapter());
} }


public static Gson create() { public static Gson create() {


+ 48
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMassPreviewMessageGsonAdapter.java Прегледај датотеку

@@ -0,0 +1,48 @@
package me.chanjar.weixin.mp.util.json;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.mp.bean.WxMpMassPreviewMessage;

import java.lang.reflect.Type;

/**
* @author miller
*/
public class WxMpMassPreviewMessageGsonAdapter implements JsonSerializer<WxMpMassPreviewMessage> {
@Override
public JsonElement serialize(WxMpMassPreviewMessage wxMpMassPreviewMessage, Type type, JsonSerializationContext jsonSerializationContext) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("towxname", wxMpMassPreviewMessage.getToWxUsername());
if (WxConsts.MASS_MSG_NEWS.equals(wxMpMassPreviewMessage.getMsgType())) {
JsonObject news = new JsonObject();
news.addProperty("media_id", wxMpMassPreviewMessage.getMediaId());
jsonObject.add(WxConsts.MASS_MSG_NEWS, news);
}
if (WxConsts.MASS_MSG_TEXT.equals(wxMpMassPreviewMessage.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("content", wxMpMassPreviewMessage.getContent());
jsonObject.add(WxConsts.MASS_MSG_TEXT, sub);
}
if (WxConsts.MASS_MSG_VOICE.equals(wxMpMassPreviewMessage.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", wxMpMassPreviewMessage.getMediaId());
jsonObject.add(WxConsts.MASS_MSG_VOICE, sub);
}
if (WxConsts.MASS_MSG_IMAGE.equals(wxMpMassPreviewMessage.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", wxMpMassPreviewMessage.getMediaId());
jsonObject.add(WxConsts.MASS_MSG_IMAGE, sub);
}
if (WxConsts.MASS_MSG_VIDEO.equals(wxMpMassPreviewMessage.getMsgType())) {
JsonObject sub = new JsonObject();
sub.addProperty("media_id", wxMpMassPreviewMessage.getMediaId());
jsonObject.add(WxConsts.MASS_MSG_VIDEO, sub);
}
jsonObject.addProperty("msgtype", wxMpMassPreviewMessage.getMsgType());
return jsonObject;
}
}

Loading…
Откажи
Сачувај