Просмотр исходного кода

[核销模板消息][新增]:核销模板消息添加

release_toaliyun_real
Stormeye.Wu 7 лет назад
Родитель
Сommit
d47473df95
8 измененных файлов: 200 добавлений и 160 удалений
  1. +0
    -10
      mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java
  2. +9
    -0
      mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java
  3. +12
    -11
      mallinkService/src/main/java/com/simple/domain/po/WxTemplateMsg.java
  4. +3
    -4
      mallinkService/src/main/java/com/simple/enums/EnumTemplateType.java
  5. +9
    -0
      mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java
  6. +0
    -2
      mallinkService/src/main/java/com/simple/service/WxPayOrderService.java
  7. +166
    -40
      mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java
  8. +1
    -93
      mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java

+ 0
- 10
mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java Просмотреть файл

@@ -75,14 +75,4 @@ public class WxPayOrderController extends BaseController {

@Autowired
private WxAppinfoService wxAppinfoService;

@ApiOperation("测试分账")
@GetMapping("/sharing")
public ResultData test() {
//xProfitSharingOrderService.test();
wxPayOrderService.sendPaySuccess();

return new ResultData();
}
}

+ 9
- 0
mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java Просмотреть файл

@@ -147,6 +147,15 @@ public class WxCouponOrderController extends BaseController {
}
}

// 核销发模板消息
if (couponOrder != null) {
try {
wxCouponOrderService.sendVerifyMsg(getAppInfo(getUser().getAppId()), couponOrder, getUser());
} catch (Exception e) {
logger.error(e.getMessage());
}
}

return new ResultData(couponOrder);
}



+ 12
- 11
mallinkService/src/main/java/com/simple/domain/po/WxTemplateMsg.java Просмотреть файл

@@ -41,20 +41,19 @@ public class WxTemplateMsg implements Serializable {
}
/*租户ID**/
/**租户ID**/
@io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId")
private String tenantId;
/*模板ID**/
/**模板ID**/
@io.swagger.annotations.ApiModelProperty(value="模板ID",name="templateId")
private String templateId;
/*模板类型1:支付成功消息2:退款申请成功消息**/
@io.swagger.annotations.ApiModelProperty(value="模板类型1:支付成功消息2:退款申请成功消息",name="type")
/**模板类型1:核销成功消息, 2:核销失败消息**/
@io.swagger.annotations.ApiModelProperty(value="模板类型1:核销成功消息,2:核销失败消息",name="type")
private Integer type;
/*创建时间**/
/**创建时间**/
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate")
private Date createDate;
/*更新时间**/
/**更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate;
public String getTenantId() {
@@ -93,11 +92,11 @@ public class WxTemplateMsg implements Serializable {
public static enum Field
{
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC")
,TemplateId_ASC("`templateId` ASC"),TemplateId_DESC("`templateId` DESC")
,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC")
,TemplateId_ASC("`template_id` ASC"),TemplateId_DESC("`template_id` DESC")
,Type_ASC("`type` ASC"),Type_DESC("`type` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
,CreateDate_ASC("`create_date` ASC"),CreateDate_DESC("`create_date` DESC")
,UpdateDate_ASC("`update_date` ASC"),UpdateDate_DESC("`update_date` DESC")
;
private String value;
Field(String value){
@@ -130,6 +129,8 @@ public class WxTemplateMsg implements Serializable {
sb.append(",");
sb.append(fields[k].toString());
}

this.sortColumns = sb.toString();
}


+ 3
- 4
mallinkService/src/main/java/com/simple/enums/EnumTemplateType.java Просмотреть файл

@@ -5,11 +5,10 @@ package com.simple.enums;
*/
public enum EnumTemplateType {

// 1-支付成功消息, 2-支付失败消息 3-退款消息
// 1-核销成功消息, 2-核销失败消息

PAY_SUCCESS(1, "订单支付成功通知"),
PAY_FAIL(2, "支付失败通知"),
REFUND(3, "退款通知")
VERIFY_SUCCESS(1, "核销成功消息"),
VERIFY_FAIL(2, "核销失败消息")
;

public static EnumTemplateType getEnum(Integer code) {


+ 9
- 0
mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java Просмотреть файл

@@ -2,6 +2,7 @@ package com.simple.service;

import com.github.pagehelper.PageInfo;
import com.simple.common.ResultData;
import com.simple.domain.po.WxAppinfo;
import com.simple.domain.po.WxCouponOrder;
import com.simple.domain.po.WxMerchantBUser;
import com.simple.domain.po.WxOrder;
@@ -78,6 +79,14 @@ public interface WxCouponOrderService {
*/
void shareAfterVerify(WxCouponOrder couponOrder);

/**
* 核销模板消息
* @param appInfo
* @param couponOrder
* @param bUser
*/
void sendVerifyMsg(WxAppinfo appInfo, WxCouponOrder couponOrder, WxMerchantBUser bUser);

/**
* 根据日期 b用户查券list
*


+ 0
- 2
mallinkService/src/main/java/com/simple/service/WxPayOrderService.java Просмотреть файл

@@ -109,7 +109,5 @@ public interface WxPayOrderService {
*/
void deleteById(Long id);

void sendPaySuccess();


}

+ 166
- 40
mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java Просмотреть файл

@@ -3,8 +3,11 @@ package com.simple.service.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.simple.common.ErrorCode;
import com.simple.common.IdWorker;
import com.simple.common.ResultData;
@@ -13,15 +16,16 @@ import com.simple.domain.vo.CUserDateAmountVo;
import com.simple.domain.vo.WxCouponOrderBVo;
import com.simple.domain.vo.WxCouponOrderCVo;
import com.simple.domain.vo.WxCouponOrderCarCVo;
import com.simple.enums.EnumCouponOrderStatus;
import com.simple.enums.EnumCouponSendType;
import com.simple.enums.EnumPayShare;
import com.simple.enums.EnumPayStatus;
import com.simple.enums.*;
import com.simple.exception.MallinkException;
import com.simple.mapper.*;
import com.simple.service.*;
import com.simple.utils.DataUtil;
import com.simple.service.WxCouponOrderService;
import com.simple.service.WxCouponSendService;
import com.simple.service.WxOrderService;
import com.simple.service.WxProfitSharingOrderService;
import com.simple.utils.DateUtils;
import com.simple.utils.MaUtil;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.log4j.Logger;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +44,7 @@ import java.util.*;
public class WxCouponOrderServiceImpl implements WxCouponOrderService {
private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class);

@Autowired
@Autowired
WxCouponOrderMapper wxCouponOrderMapper;

@Autowired
@@ -70,6 +74,12 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
@Autowired
WxMallMapper wxMallMapper;

@Autowired
WxTemplateMsgMapper wxTemplateMsgMapper;

@Autowired
WxCouponMapper wxCouponMapper;


@Override
public PageInfo<WxCouponOrder> listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) {
@@ -86,7 +96,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
record.setId(idWorker.nextId());
wxCouponOrderMapper.insertSelective(record);
} else {
wxCouponOrderMapper.updateByPrimaryKeySelective(record);
@@ -135,8 +145,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
} catch (ParseException e) {
return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR);
}
}
else {
} else {
try {
startDate = fmt.parse(date);
} catch (ParseException e) {
@@ -144,7 +153,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
}
Calendar cal = Calendar.getInstance();
cal.setTime(startDate);
cal.add(Calendar.DATE,1);
cal.add(Calendar.DATE, 1);
endDate = cal.getTime();
}

@@ -157,7 +166,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {

if (pageIndex == null || pageSize == null) {
List<WxCouponOrder> list;
if(isVerified)
if (isVerified)
list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap);
else
list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap);
@@ -167,8 +176,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
total_price = total_price + couponOrder.getCouponPrice();
}
resultMap.put("amount", total_price);
}
else {
} else {
if (isVerified)
resultMap.put("list", PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfVerifiedByDateForBUser(dateMap)));
else
@@ -196,8 +204,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
@Override
public ResultData detailCUserVo(Long cUserId, String couponOrderId) {
WxCUser wxCuser = wxCUserMapper.selectByPrimaryKey(cUserId);
if(wxCuser == null){
logger.error("用户不存在:"+ cUserId);
if (wxCuser == null) {
logger.error("用户不存在:" + cUserId);
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}

@@ -215,8 +223,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
@Override
public ResultData detailBUserVo(Long bUserId, String couponOrderId) {
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId);
if(wxMerchantBUser == null){
logger.error("用户不存在:"+ bUserId);
if (wxMerchantBUser == null) {
logger.error("用户不存在:" + bUserId);
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}

@@ -250,21 +258,21 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
WxMall wxMall = new WxMall();
wxMall.setTenantId(tenantId);
wxMall = wxMallMapper.findList(wxMall).get(0);
String filepath="./uploads/";
String filepath = "./uploads/";
File savefile = new File(filepath);
if (!savefile.exists()) {
savefile.mkdirs();
}

Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("","",ExcelType.XSSF), WxCouponOrderBVo.class, list);
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("", "", ExcelType.XSSF), WxCouponOrderBVo.class, list);
FileOutputStream fos = null;
try {
String filename=wxMall.getName()+ DateUtils.getSystemTime("yyyyMMDDHHmmss") +".xlsx";
filepath=filepath+filename;
String filename = wxMall.getName() + DateUtils.getSystemTime("yyyyMMDDHHmmss") + ".xlsx";
filepath = filepath + filename;
fos = new FileOutputStream(filepath);
workbook.write(fos);
fos.close();
downFile(filepath,filename,response,request);
downFile(filepath, filename, response, request);
} catch (Exception e) {
e.printStackTrace();
}
@@ -273,8 +281,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
}


public void downFile(String filePath,String filename, HttpServletResponse response,
HttpServletRequest req) throws IOException {
public void downFile(String filePath, String filename, HttpServletResponse response,
HttpServletRequest req) throws IOException {
try {
response.reset();
response.setContentType("bin");
@@ -308,21 +316,21 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
public WxCouponOrder verify(Long couponOrderId, Long bUserId) {

WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId);
if(wxCouponOrder == null){
logger.error("券ID不存在:"+ couponOrderId);
if (wxCouponOrder == null) {
logger.error("券ID不存在:" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue());
if(wxMerchantBUser == null){
logger.error("核销员ID不存在:"+ bUserId);
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue());
if (wxMerchantBUser == null) {
logger.error("核销员ID不存在:" + bUserId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId());

if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())){
logger.error("券: couponMerchantId-" + wxOrder.getMerchantId()+"核销: couponMerchantId-"+wxMerchantBUser.getMerchantId());
if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())) {
logger.error("券: couponMerchantId-" + wxOrder.getMerchantId() + "核销: couponMerchantId-" + wxMerchantBUser.getMerchantId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}
if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) {
@@ -381,16 +389,134 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
}
}

/**
* 微信模板消息
*
* @param appInfo, couponOrder, bUser
*/
@Override
public void sendVerifyMsg(WxAppinfo appInfo, WxCouponOrder couponOrder, WxMerchantBUser bUser) {
// 1. get template id
WxTemplateMsg msgQ = new WxTemplateMsg();
msgQ.setTenantId(couponOrder.getTenantId());
msgQ.setType(EnumTemplateType.VERIFY_FAIL.getCode());
WxTemplateMsg msg = null;
List<WxTemplateMsg> list = wxTemplateMsgMapper.select(msgQ);
if (list.size() > 0) {
msg = list.get(0);
}
if (msg == null) {
logger.error("找不到模板Id");
throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND);
}
// 2. get order info
WxOrder order = wxOrderMapper.selectByPrimaryKey(couponOrder.getOrderId());
if (order == null) {
logger.error("找不到订单信息");
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
// 3. get coupon info
WxCoupon coupon = wxCouponMapper.selectByPrimaryKey(couponOrder.getCouponId());
if (coupon == null) {
logger.error("找不到券信息");
throw new MallinkException(ErrorCode.COUPON_IS_EMPTY);
}
// 4. merchant info
WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(bUser.getId());
if (merchant == null) {
logger.error("找不到商户信息");
throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
// 5. get user info
WxCUser user = wxCUserMapper.selectByPrimaryKey(order.getCUserId());
if (user == null) {
logger.error("找不到C端用户");
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}
// 6. get payOrder info
WxPayOrder payOrder = null;
WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.setTenantId(appInfo.getTenantId());
payOrderQ.setOrderId(order.getId());
payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());
List<WxPayOrder> payList = wxPayOrderMapper.select(payOrderQ);
if (payList.size() > 0) {
payOrder = payList.get(0);
}

WxMaService wxMaService = MaUtil.getWeappService(appInfo);

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String couponDetail = "";
if (coupon.getType() == EnumCouponType.COUPON_MANJIAN.getCode()) {
couponDetail = "满" + coupon.getUsePriceStr() + "减" + coupon.getPriceStr();
}

WxMaTemplateMessage templateMessage = null;
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) {
/**
* 核销成功
* 核销金额 {{keyword1.DATA}}
* 商家名称 {{keyword2.DATA}}
* 商品 {{keyword3.DATA}}
* 核销时间 {{keyword4.DATA}}
* 商品描述 {{keyword5.DATA}}
*/
templateMessage = WxMaTemplateMessage.builder()
.toUser(user.getOpenId())
.formId(payOrder.getPrepayId()) // 微信支付的formId是prepayId
.page("pages/index/index")
.data(Lists.newArrayList(
new WxMaTemplateMessage.Data("keyword1", String.valueOf(coupon.getPrice() * 1.0 / 100) + "元", "#173177"),
new WxMaTemplateMessage.Data("keyword2", merchant.getName(), "#173177"),
new WxMaTemplateMessage.Data("keyword3", coupon.getTitle(), "#173177"),
new WxMaTemplateMessage.Data("keyword4", dateFormat.format(new Date()), "#173177"),
new WxMaTemplateMessage.Data("keyword5", merchant.getName(), "#173177"))
)
.templateId(msg.getTemplateId())
.emphasisKeyword("keyword1.DATA")
.build();
} else {
/**
* 核销失败
* 商品名称 {{keyword1.DATA}}
* 核销时间 {{keyword2.DATA}}
* 失败原因 {{keyword3.DATA}}
* 备注 {{keyword4.DATA}}
*/
templateMessage = WxMaTemplateMessage.builder()
.toUser(user.getOpenId())
.formId(payOrder.getPrepayId()) // 微信支付的formId是prepayId
.page("pages/index/index")
.data(Lists.newArrayList(
new WxMaTemplateMessage.Data("keyword1", coupon.getTitle(), "#173177"),
new WxMaTemplateMessage.Data("keyword2", dateFormat.format(new Date()), "#173177"),
new WxMaTemplateMessage.Data("keyword3", "未知"),
new WxMaTemplateMessage.Data("keyword4", couponDetail))
)
.templateId(msg.getTemplateId())
.emphasisKeyword("keyword1.DATA")
.build();
}

//templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177"));
try {
wxMaService.getMsgService().sendTemplateMsg(templateMessage);
} catch (WxErrorException e) {
logger.error("支付通知发送失败: " + e.getMessage());
throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED);
}
}

@Override
public List<CUserDateAmountVo> queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) {
return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime);
}

@Override
public int queryPriceTotal(String tenantId, Date startTime, Date endTime) {
return wxCouponOrderMapper.queryPriceTotal(tenantId, startTime, endTime);
}
@Override
public List<CUserDateAmountVo> queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) {
return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime);
}

@Override
public int queryPriceTotal(String tenantId, Date startTime, Date endTime) {
return wxCouponOrderMapper.queryPriceTotal(tenantId, startTime, endTime);
}

}

+ 1
- 93
mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java Просмотреть файл

@@ -901,100 +901,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
wxPayOrderMapper.deleteByPrimaryKey(id);
}

@Override
public void sendPaySuccess() {
/*
WxAppinfo appinfoQ = new WxAppinfo();
appinfoQ.setTenantId("234");
appinfoQ.setType(EnumAppType.C.getCode());
List<WxAppinfo> appinfoList= wxAppinfoMapper.select(appinfoQ);
WxAppinfo appinfo = appinfoList.get(0);

String payOrderIdStr = "196936823522459648";
Long payOrderId = Long.valueOf(payOrderIdStr);
WxPayOrder updateOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId);
WxOrder order = wxOrderMapper.selectByPrimaryKey(updateOrder.getOrderId());
sendPaySuccessMsg(appinfo, order, updateOrder);
*/
}

/**
* 微信模板通知用户
* @param updateOrder
* 支付时间 {{keyword1.DATA}}
* 支付方式 {{keyword2.DATA}}
* 支付金额 {{keyword3.DATA}}
* 商品名称 {{keyword4.DATA}}
* 商家名称 {{keyword5.DATA}}
* 订单状态 {{keyword6.DATA}}
*/
private void sendPaySuccessMsg(WxAppinfo appInfo, WxOrder order, WxPayOrder updateOrder) {
// 1. get template id
WxTemplateMsg msgQ = new WxTemplateMsg();
msgQ.setTenantId(order.getTenantId());
msgQ.setType(EnumTemplateType.PAY_SUCCESS.getCode());
WxTemplateMsg msg = null;
List<WxTemplateMsg> list= wxTemplateMsgMapper.select(msgQ);
if (list.size() > 0) {
msg = list.get(0);
}
if (msg == null) {
logger.error("找不到模板Id");
throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND);
}
// 2. get coupon info
WxCoupon coupon = wxCouponMapper.selectByPrimaryKey(order.getCouponId());
if (coupon == null) {
logger.error("找不到券信息");
throw new MallinkException(ErrorCode.COUPON_IS_EMPTY);
}
// 3. merchant info
WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(order.getMerchantId());
if (merchant == null) {
logger.error("找不到商户信息");
throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
// 3. get user info
WxCUser user = wxCUserMapper.selectByPrimaryKey(order.getCUserId());
if (user == null) {
logger.error("找不到C端用户");
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}

if (StringUtils.isBlank(updateOrder.getPrepayId())) {
logger.error("prepayId为空");
throw new MallinkException(ErrorCode.PREPAY_ID_IS_EMPTY);
}

WxMaService wxMaService = MaUtil.getWeappService(appInfo);


SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()
.toUser(user.getOpenId())
.formId(updateOrder.getPrepayId()) // 微信支付的formId是prepayId
.page("pages/index/index")
.data(Lists.newArrayList(
new WxMaTemplateMessage.Data("keyword1", dateFormat.format(new Date()), "#173177"),
new WxMaTemplateMessage.Data("keyword2", "微信支付", "#173177"),
new WxMaTemplateMessage.Data("keyword3", String.valueOf(updateOrder.getPayAmount()*1.0/100) + "元", "#173177"),
new WxMaTemplateMessage.Data("keyword4", coupon.getTitle(), "#173177"),
new WxMaTemplateMessage.Data("keyword5", merchant.getName(), "#173177"),
new WxMaTemplateMessage.Data("keyword6", EnumOrderStatus.getEnum(order.getOrderStatus()).getMessage(), "#173177")))
.templateId(msg.getTemplateId())
.emphasisKeyword("keyword1.DATA")
.build();
//templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177"));
try {
wxMaService.getMsgService().sendTemplateMsg(templateMessage);
} catch (WxErrorException e) {
logger.error("支付通知发送失败: " + e.getMessage());
throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED);
}
}

public static void main(String [] args) {
Integer v = 500;
Integer v = 50;
Integer rate = 6;
Double dChargeFee = Math.ceil(v*1.0D*6/1000);
Integer share_amount = v - dChargeFee.intValue();


Загрузка…
Отмена
Сохранить