From cec176e369be271b75489682d43fca197ddb38a1 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 8 Mar 2019 21:17:50 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E7=AC=AC=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=BC=80=E6=94=BE=E5=B9=B3=E5=8F=B0][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E6=B6=88=E6=81=AF=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedule/UserUnionIdSchedule.java | 71 ++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java b/mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java index a018fd5c0..6de76b029 100644 --- a/mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java +++ b/mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java @@ -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 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); + } + + } } \ No newline at end of file