Java实现体_微信订阅消息体Java实现

话不多说,直接上代码:

SubscribeMsgData.java订阅消息体对象,字符串长度超长可自动截取

package xin.xihc.rebate.bean;

import lombok.AllArgsConstructor;

import lombok.Data;

import java.util.LinkedHashMap;

import java.util.Map;

/**

* 订阅消息对象

*

* @author Leo.Xi

* @date 2019/10/25

* @since 1.0

**/

public class SubscribeMsgData {

/** 顺序值 */

private int index = 1;

/** 数据data */

private LinkedHashMap data = new LinkedHashMap<>();

public static SubscribeMsgData create() {

return new SubscribeMsgData();

}

/**

* thing.DATA 事物 20个以内字符 可汉字、数字、字母或符号组合

*

* @param thing

* @author Leo.Xi

* @date 2019/10/25

* @since 0.0.1

*/

public SubscribeMsgData thing(String thing) {

if (thing.length() > 20) {

thing = thing.substring(0, 20);

}

data.put("thing" + index, new Keyword(thing));

++index;

return this;

}

/**

* number.DATA 数字 32位以内数字 只能数字,可带小数

*

* @param number

* @author Leo.Xi

* @date 2019/10/25

* @since 0.0.1

*/

public SubscribeMsgData number(String number) {

if (number.length() > 32) {

number = number.substring(0, 32);

}

data.put("number" + index, new Keyword(number));

++index;

return this;

}

/**

* letter.DATA 字母 32位以内字母 只能字母

*

* @param letter

* @author Leo.Xi

* @date 2019/10/25

* @since 0.0.1

*/

public SubscribeMsgData letter(String letter) {

if (letter.length() > 32) {

letter = letter.substring(0, 32);

}

data.put("letter" + index, new Keyword(letter));

++index;

return this;

}

/**

* date.DATA 日期 年月日格式(支持+24小时制时间) 例如:2019年10月1日,或:2019年10月1日 15:01

*

* @param date

* @author Leo.Xi

* @date 2019/10/25

* @since 0.0.1

*/

public SubscribeMsgData date(String date) {

data.put("date" + index, new Keyword(date));

++index;

return this;

}

/**

* amount.DATA 金额 1个币种符号+10位以内纯数字,可带小数,结尾可带“元” 可带小数

*

* @param amount

* @author Leo.Xi

* @date 2019/10/25

* @since 0.0.1

*/

public SubscribeMsgData amount(String amount) {

data.put("amount" + index, new Keyword(amount));

++index;

return this;

}

/**

* phrase.DATA 汉字 5个以内汉字 5个以内纯汉字,例如:配送中

*

* @param phrase

* @author Leo.Xi

* @date 2019/10/25

* @since 0.0.1

*/

public SubscribeMsgData phrase(String phrase) {

if (phrase.length() > 5) {

phrase = phrase.substring(0, 5);

}

data.put("phrase" + index, new Keyword(phrase));

++index;

return this;

}

public Map data() {

return this.data;

}

@Data

@AllArgsConstructor

public static class Keyword {

private String value;

}

}

调用的代码:

// 计算到账时间

String paymentTime = DateUtil.getDateTimeFromNow(

configBean.getSystemConfig().getDelaySettlementDays() * 24 * 60 * 60, "yyyy.MM.dd");

// 订阅消息

SubscribeMsgData subscribeMsgData = SubscribeMsgData.create().thing(flow.getType()

.equals(CapitalOperateType.REBATE) ? "返利" : "分红")

.date(DateUtil.formatDateTime(new Date(),

"yyyy年MM月dd日 HH:mm"))

.amount(flow.getRealAmount() + "元")

.thing("预计" + paymentTime + "到账,可提现");

wxTemplateMsg.sendSubscribeMsg(flow.getUserId(), subscribeMsgData, WxTemplateMsg.MsgType.SETTLEMENT);

/**

* 发送订阅消息

*

* @param userId 用户ID

* @param data 发送模板内容

* @param type 消息类型

* @return

* @author Leo.Xi

* @date 2019/8/18

* @since 0.0.1

*/

public void sendSubscribeMsg(String userId, SubscribeMsgData data, MsgType type) {

try {

String openId = wxUserInfoDao.getOpenId(userId);

HashMap params = new HashMap<>(4);

params.put("touser", openId);

Template template = TEMPLATES_SUBSCRIBE.get(type);

params.put("template_id", template.getId());

params.put("page", template.getPage());

params.put("data", data.data());

String post = RestClientUtils.post(String.format(URL_POST_SUBSCRIBE_MSG, ACCESS_TOKEN), JsonUtil

.toNoNullJsonStr(params, false), String.class);

log.info("发送订阅消息结果:" + post);

} catch (Throwable e) {

// ignore

}

}

结算消息通知

f22cc8f9f6a7

订单确认收货后的结算通知

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值