优化代码
This commit is contained in:
parent
c634f08268
commit
75fc4edb39
4
pom.xml
4
pom.xml
@ -229,6 +229,10 @@
|
|||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-javadoc-plugin</artifactId>
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-gpg-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import com.foxinmy.weixin4j.logging.InternalLoggerFactory;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* API基础
|
* API基础
|
||||||
*
|
*
|
||||||
* @className BaseApi
|
* @className BaseApi
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2014年9月26日
|
* @date 2014年9月26日
|
||||||
@ -22,7 +22,7 @@ public abstract class BaseApi {
|
|||||||
|
|
||||||
protected final InternalLogger logger = InternalLoggerFactory
|
protected final InternalLogger logger = InternalLoggerFactory
|
||||||
.getInstance(getClass());
|
.getInstance(getClass());
|
||||||
|
|
||||||
protected final WeixinRequestExecutor weixinExecutor;
|
protected final WeixinRequestExecutor weixinExecutor;
|
||||||
|
|
||||||
protected abstract ResourceBundle weixinBundle();
|
protected abstract ResourceBundle weixinBundle();
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import com.foxinmy.weixin4j.util.WeixinErrorUtil;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 调用微信接口抛出的异常
|
* 调用微信接口抛出的异常
|
||||||
*
|
*
|
||||||
* @className WeixinException
|
* @className WeixinException
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2014年4月10日
|
* @date 2014年4月10日
|
||||||
@ -45,6 +45,10 @@ public class WeixinException extends Exception {
|
|||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getErrorText() {
|
||||||
|
return WeixinErrorUtil.getText(code);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import com.foxinmy.weixin4j.type.ButtonType;
|
|||||||
* 目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单,一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以"..."代替
|
* 目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单,一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以"..."代替
|
||||||
* 请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来,建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果
|
* 请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来,建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @className Button
|
* @className Button
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2014年4月5日
|
* @date 2014年4月5日
|
||||||
@ -32,7 +32,7 @@ public class Button implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 菜单类型 </br> <font color="red">
|
* 菜单类型 </br> <font color="red">
|
||||||
* 公众平台官网上能够设置的菜单类型有view、text、img、photo、video、voice </font>
|
* 公众平台官网上能够设置的菜单类型有view、text、img、photo、video、voice </font>
|
||||||
*
|
*
|
||||||
* @see com.foxinmy.weixin4j.type.ButtonType
|
* @see com.foxinmy.weixin4j.type.ButtonType
|
||||||
*/
|
*/
|
||||||
private ButtonType type;
|
private ButtonType type;
|
||||||
@ -62,12 +62,12 @@ public class Button implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建一个菜单(一级菜单)
|
* 创建一个菜单
|
||||||
*
|
*
|
||||||
* @param name
|
* @param name
|
||||||
* 菜单显示的名称
|
* 菜单名
|
||||||
* @param subButtons
|
* @param subButtons
|
||||||
* 二级菜单
|
* 二级菜单列表
|
||||||
*/
|
*/
|
||||||
public Button(String name, Button... subButtons) {
|
public Button(String name, Button... subButtons) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@ -75,14 +75,14 @@ public class Button implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建一个菜单(二级菜单)
|
* 创建一个菜单
|
||||||
*
|
*
|
||||||
* @param name
|
* @param name
|
||||||
* 菜单显示的名称
|
* 菜单名
|
||||||
* @param content
|
* @param content
|
||||||
* 当buttonType为view时content设置为url,否则为key.
|
* 菜单内容
|
||||||
* @param type
|
* @param type
|
||||||
* 按钮类型
|
* 菜单类型
|
||||||
*/
|
*/
|
||||||
public Button(String name, String content, ButtonType type) {
|
public Button(String name, String content, ButtonType type) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
|||||||
@ -6,12 +6,11 @@ import javax.xml.bind.annotation.XmlElement;
|
|||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
import com.foxinmy.weixin4j.model.WeixinPayAccount;
|
|
||||||
import com.foxinmy.weixin4j.util.DateUtil;
|
import com.foxinmy.weixin4j.util.DateUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 红包
|
* 红包
|
||||||
*
|
*
|
||||||
* @className Redpacket
|
* @className Redpacket
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2015年3月28日
|
* @date 2015年3月28日
|
||||||
@ -26,19 +25,7 @@ import com.foxinmy.weixin4j.util.DateUtil;
|
|||||||
public class Redpacket extends MerchantResult {
|
public class Redpacket extends MerchantResult {
|
||||||
|
|
||||||
private static final long serialVersionUID = -7021352305575714281L;
|
private static final long serialVersionUID = -7021352305575714281L;
|
||||||
/**
|
|
||||||
* 服务商模式下触达用户时的appid(可填服务商自己的appid或子商户的appid),服务商模式下必填,
|
|
||||||
* 服务商模式下填入的子商户appid必须在微信支付商户平台中先录入,否则会校验不过。 非必须
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "msgappid")
|
|
||||||
@JSONField(name = "msgappid")
|
|
||||||
private String subMsgId;
|
|
||||||
/**
|
|
||||||
* 扣钱方mchid,常规模式下无效,服务商模式下选填,服务商模式下不填默认扣子商户的钱.非必须
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "consume_mch_id")
|
|
||||||
@JSONField(name = "consume_mch_id")
|
|
||||||
private String consumeMchId;
|
|
||||||
/**
|
/**
|
||||||
* 商户订单号(每个订单号必须唯一) 组成: mch_id+yyyymmdd+10位一天内不能重复的数字。
|
* 商户订单号(每个订单号必须唯一) 组成: mch_id+yyyymmdd+10位一天内不能重复的数字。
|
||||||
*/
|
*/
|
||||||
@ -96,13 +83,27 @@ public class Redpacket extends MerchantResult {
|
|||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务商模式下触达用户时的appid(可填服务商自己的appid或子商户的appid),服务商模式下必填,
|
||||||
|
* 服务商模式下填入的子商户appid必须在微信支付商户平台中先录入,否则会校验不过。 非必须
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "msgappid")
|
||||||
|
@JSONField(name = "msgappid")
|
||||||
|
private String msgAppId;
|
||||||
|
/**
|
||||||
|
* 扣钱方mchid,常规模式下无效,服务商模式下选填,服务商模式下不填默认扣子商户的钱.非必须
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "consume_mch_id")
|
||||||
|
@JSONField(name = "consume_mch_id")
|
||||||
|
private String consumeMchId;
|
||||||
|
|
||||||
protected Redpacket() {
|
protected Redpacket() {
|
||||||
// jaxb required
|
// jaxb required
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 红包
|
* 红包
|
||||||
*
|
*
|
||||||
* @param outTradeNo
|
* @param outTradeNo
|
||||||
* 商户侧一天内不可重复的订单号 接口根据商户订单号支持重入 如出现超时可再调用 必填
|
* 商户侧一天内不可重复的订单号 接口根据商户订单号支持重入 如出现超时可再调用 必填
|
||||||
* @param sendName
|
* @param sendName
|
||||||
@ -122,22 +123,21 @@ public class Redpacket extends MerchantResult {
|
|||||||
* @param remark
|
* @param remark
|
||||||
* 备注 必填
|
* 备注 必填
|
||||||
*/
|
*/
|
||||||
public Redpacket(WeixinPayAccount weixinPayAccount, String outTradeNo,
|
public Redpacket(String outTradeNo, String sendName, String openid,
|
||||||
String sendName, String openid, double totalAmount, int totalNum,
|
double totalAmount, int totalNum, String wishing, String clientIp,
|
||||||
String wishing, String clientIp, String actName, String remark) {
|
String actName, String remark) {
|
||||||
this(null, null, outTradeNo, sendName, openid, totalAmount, totalNum,
|
this(null, null, outTradeNo, sendName, openid, totalAmount, totalNum,
|
||||||
wishing, clientIp, actName, remark);
|
wishing, clientIp, actName, remark);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 红包 完整参数
|
* 红包 完整参数
|
||||||
*
|
*
|
||||||
* @param subMchId
|
* @param msgAppId
|
||||||
* 子商户商户号 非必填
|
* 触达用户appid 服务商模式下触达用户时的appid(可填服务商自己的appid或子商户的appid),服务商模式下必填,
|
||||||
* @param subMsgId
|
* 服务商模式下填入的子商户appid必须在微信支付商户平台中先录入,否则会校验不过。
|
||||||
* 触达用户appid 非必填
|
|
||||||
* @param consumeMchId
|
* @param consumeMchId
|
||||||
* 扣钱方mchid 非必填
|
* 常规模式下无效,服务商模式下选填,服务商模式下不填默认扣子商户的钱
|
||||||
* @param outTradeNo
|
* @param outTradeNo
|
||||||
* 商户侧一天内不可重复的订单号 接口根据商户订单号支持重入 如出现超时可再调用 必填
|
* 商户侧一天内不可重复的订单号 接口根据商户订单号支持重入 如出现超时可再调用 必填
|
||||||
* @param sendName
|
* @param sendName
|
||||||
@ -157,10 +157,10 @@ public class Redpacket extends MerchantResult {
|
|||||||
* @param remark
|
* @param remark
|
||||||
* 备注 必填
|
* 备注 必填
|
||||||
*/
|
*/
|
||||||
public Redpacket(String subMsgId, String consumeMchId, String outTradeNo,
|
public Redpacket(String msgAppId, String consumeMchId, String outTradeNo,
|
||||||
String sendName, String openid, double totalAmount, int totalNum,
|
String sendName, String openid, double totalAmount, int totalNum,
|
||||||
String wishing, String clientIp, String actName, String remark) {
|
String wishing, String clientIp, String actName, String remark) {
|
||||||
this.subMsgId = subMsgId;
|
this.msgAppId = msgAppId;
|
||||||
this.consumeMchId = consumeMchId;
|
this.consumeMchId = consumeMchId;
|
||||||
this.outTradeNo = outTradeNo;
|
this.outTradeNo = outTradeNo;
|
||||||
this.sendName = sendName;
|
this.sendName = sendName;
|
||||||
@ -216,7 +216,7 @@ public class Redpacket extends MerchantResult {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Redpacket [subMsgId=" + subMsgId + ", consumeMchId="
|
return "Redpacket [msgAppId=" + msgAppId + ", consumeMchId="
|
||||||
+ consumeMchId + ", outTradeNo=" + outTradeNo + ", sendName="
|
+ consumeMchId + ", outTradeNo=" + outTradeNo + ", sendName="
|
||||||
+ sendName + ", openid=" + openid + ", totalAmount="
|
+ sendName + ", openid=" + openid + ", totalAmount="
|
||||||
+ totalAmount + ", totalNum=" + totalNum + ", amtType="
|
+ totalAmount + ", totalNum=" + totalNum + ", amtType="
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import com.foxinmy.weixin4j.model.Token;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 用Redis保存Token信息(推荐使用)
|
* 用Redis保存Token信息(推荐使用)
|
||||||
*
|
*
|
||||||
* @className RedisTokenStorager
|
* @className RedisTokenStorager
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2015年1月9日
|
* @date 2015年1月9日
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import com.foxinmy.weixin4j.type.CorpPaymentCheckNameType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 现金发放测试
|
* 现金发放测试
|
||||||
*
|
*
|
||||||
* @className CashTest
|
* @className CashTest
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2015年4月1日
|
* @date 2015年4月1日
|
||||||
@ -26,7 +26,7 @@ public class CashTest extends PayTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void sendRedpacket() throws WeixinException, IOException {
|
public void sendRedpacket() throws WeixinException, IOException {
|
||||||
Redpacket redpacket = new Redpacket(ACCOUNT, "HB001", "无忧钱庄",
|
Redpacket redpacket = new Redpacket("HB001", "无忧钱庄",
|
||||||
"oyFLst1bqtuTcxK-ojF8hOGtLQao", 1d, 1, "红包测试", "127.0.0.1",
|
"oyFLst1bqtuTcxK-ojF8hOGtLQao", 1d, 1, "红包测试", "127.0.0.1",
|
||||||
"快来领取红包吧!", "来就送钱");
|
"快来领取红包吧!", "来就送钱");
|
||||||
RedpacketSendResult result = PAY.sendRedpack(
|
RedpacketSendResult result = PAY.sendRedpack(
|
||||||
|
|||||||
@ -50,7 +50,7 @@ public class WeixinTicketCreator extends AbstractTokenCreator {
|
|||||||
@Override
|
@Override
|
||||||
public Token createToken() throws WeixinException {
|
public Token createToken() throws WeixinException {
|
||||||
WeixinResponse response = weixinExecutor.get(
|
WeixinResponse response = weixinExecutor.get(
|
||||||
String.format(URLConsts.TICKET_URL, weixinTokenHolder.getToken().getAccessToken(), ticketType.name()));
|
String.format(URLConsts.JS_TICKET_URL, weixinTokenHolder.getToken().getAccessToken(), ticketType.name()));
|
||||||
JSONObject result = response.getAsJson();
|
JSONObject result = response.getAsJson();
|
||||||
Token token = new Token(result.getString("ticket"));
|
Token token = new Token(result.getString("ticket"));
|
||||||
token.setExpiresIn(result.getIntValue("expires_in"));
|
token.setExpiresIn(result.getIntValue("expires_in"));
|
||||||
|
|||||||
@ -19,6 +19,6 @@ public final class URLConsts {
|
|||||||
/**
|
/**
|
||||||
* 公众平台jssdk获取token的url
|
* 公众平台jssdk获取token的url
|
||||||
*/
|
*/
|
||||||
public static final String TICKET_URL = BASE_URL
|
public static final String JS_TICKET_URL = BASE_URL
|
||||||
+ "/ticket/getticket?access_token=%s&type=%s";
|
+ "/ticket/getticket?access_token=%s&type=%s";
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user