Procházet zdrojové kódy

[微信第三方开放平台][修改]:统一消息例子

release_toaliyun_real
Stormeye Wu před 7 roky
rodič
revize
cec176e369
1 změnil soubory, kde provedl 70 přidání a 1 odebrání
  1. +70
    -1
      mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java

+ 70
- 1
mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java Zobrazit soubor

@@ -1,10 +1,20 @@
package com.iformall.schedule;

import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;
import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage;
import com.google.common.collect.Lists;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxPayAccount;
import com.iformall.domain.vo.WxPayOrderVo;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxPayAccountMapper;
import com.iformall.mapper.WxPayOrderMapper;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.wechat.WxOpenService;
import com.iformall.utils.MaUtil;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.api.WxOpenMaService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -13,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -33,6 +44,9 @@ public class UserUnionIdSchedule {
@Autowired
private WxPayAccountMapper payAccountMapper;

@Autowired
WxAppinfoService wxAppinfoService;

@Scheduled(cron = "0 */4 * * * *?") // 每4分钟检查一次
//@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次
public void payOrderGetUnionIdSchedule() {
@@ -45,6 +59,7 @@ public class UserUnionIdSchedule {
List<WxPayOrderVo> paidList = payOrderMapper.findListOfPaidOrderByDate(dateMap);
paidList.parallelStream().forEach( payOrderVo -> {
getUnionId(payOrderVo);
//sendUniformMessage(payOrderVo);
});
}

@@ -57,7 +72,6 @@ public class UserUnionIdSchedule {
return;
}
try {
// code提交
WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(payOrderVo.getAppId());
if(StringUtils.isNotBlank(payOrderVo.getTransactionId())) {
String openRet = openMaService.getApiGetPaidUnionid(payOrderVo.getOpenId(), payOrderVo.getTransactionId());
@@ -74,4 +88,59 @@ public class UserUnionIdSchedule {
}

}

/**
* 根据payOrder发送模板消息
* @param payOrderVo
*/
public void sendUniformMessage(WxPayOrderVo payOrderVo) {
if(StringUtils.isBlank(payOrderVo.getOpenId())) {
return;
}

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

/**
* 卡券核销通知 p6pwzZN9GVJq11j2zh72EEhIn5fAIa6oQBBOjqVt8-U
* {{first.DATA}}
* 卡券类型:{{keyword1.DATA}}
* 卡券号码:{{keyword2.DATA}}
* 核销时间:{{keyword3.DATA}}
* {{remark.DATA}}
*
*/
String template_id = "p6pwzZN9GVJq11j2zh72EEhIn5fAIa6oQBBOjqVt8-U";
WxMaUniformMessage.MiniProgram miniprogram = new WxMaUniformMessage.MiniProgram();
miniprogram.setAppid(payOrderVo.getAppId());
miniprogram.setPagePath("pages/index/index");
miniprogram.setUsePath(true);

WxMaUniformMessage templateMessage = WxMaUniformMessage.builder()
.isMpTemplateMsg(true)
.toUser(payOrderVo.getOpenId())
.appid("wxed2f44705544b892")
.templateId(template_id)
.url("http://iformall.com")
.page("pages/index/index")
.formId(payOrderVo.getPrepayId()) // 微信支付的formId是prepayId
.miniProgram(miniprogram)
.data(Lists.newArrayList(
new WxMaTemplateData("first", payOrderVo.getAppId(), "#173177"),
new WxMaTemplateData("keyword1", payOrderVo.getOpenId(), "#173177"),
new WxMaTemplateData("keyword2", payOrderVo.getTransactionId(), "#173177"),
new WxMaTemplateData("keyword3", dateFormat.format(new Date()), "#173177")
))
.emphasisKeyword("keyword1.DATA")
.build();
WxAppinfo appInfo = wxAppinfoService.getByAppId(payOrderVo.getAppId());
WxMaService wxMaService = MaUtil.getWeappService(appInfo);

try {
wxMaService.getMsgService().sendUniformMsg(templateMessage);
} catch (WxErrorException e) {
logger.error("支付通知测试: " + e.getMessage());
throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED);
}

}
}

Načítá se…
Zrušit
Uložit