java110-bean/src/main/java/com/java110/dto/payment/NotifyPaymentOrderDto.java
@@ -1,4 +1,34 @@ package com.java110.dto.payment; public class NotifyPaymentOrderDto { import java.io.Serializable; public class NotifyPaymentOrderDto implements Serializable{ private String appId; private String param; public NotifyPaymentOrderDto(String appId, String param) { this.appId = appId; this.param = param; } public NotifyPaymentOrderDto() { } public String getAppId() { return appId; } public void setAppId(String appId) { this.appId = appId; } public String getParam() { return param; } public void setParam(String param) { this.param = param; } } java110-bean/src/main/java/com/java110/dto/payment/PaymentOrderDto.java
@@ -17,6 +17,8 @@ private String name; private String appId; private ResponseEntity<String> responseEntity; @@ -53,4 +55,12 @@ public void setResponseEntity(ResponseEntity<String> responseEntity) { this.responseEntity = responseEntity; } public String getAppId() { return appId; } public void setAppId(String appId) { this.appId = appId; } } java110-interface/src/main/java/com/java110/intf/acct/INotifyPaymentV1InnerServiceSMO.java
@@ -17,6 +17,7 @@ import com.alibaba.fastjson.JSONObject; import com.java110.config.feign.FeignConfiguration; import com.java110.dto.payment.NotifyPaymentOrderDto; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestBody; @@ -39,9 +40,9 @@ /** * 查询<p>小区楼</p>总记录数 * * @param reqJson 数据对象分享 * @param notifyPaymentOrderDto 数据对象分享 * @return 小区下的小区楼记录数 */ @RequestMapping(value = "/notifyPayment", method = RequestMethod.POST) public ResponseEntity<String> notifyPayment(@RequestBody String reqJson); public ResponseEntity<String> notifyPayment(@RequestBody NotifyPaymentOrderDto notifyPaymentOrderDto); } service-acct/src/main/java/com/java110/acct/payment/adapt/pingan/PinganPaymentFactoryAdapt.java
@@ -1,11 +1,9 @@ package com.java110.acct.payment.adapt.fuiou; package com.java110.acct.payment.adapt.pingan; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.java110.acct.payment.IPaymentFactoryAdapt; import com.java110.core.context.ICmdDataFlowContext; import com.java110.core.factory.CommunitySettingFactory; import com.java110.core.factory.PlutusFactory; import com.java110.core.factory.WechatFactory; import com.java110.core.log.LoggerFactory; import com.java110.dto.app.AppDto; @@ -20,7 +18,6 @@ import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.DateUtil; import com.java110.utils.util.PayUtil; import org.bouncycastle.util.encoders.Base64; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; @@ -33,34 +30,19 @@ import java.util.TreeMap; /** * 富友 支付 * 此实现方式为 通过 富友支付 去下单不直接去掉微信 * <p> * 商户调用此接口则用户可使用支付宝或微信进行支付。 * 本接口支持: 微信公众号、 微信小程序、 微信 APP, 支付宝服务窗等 * <p> * <p> * 说明:信息通过 http 或 https 形式 post 请求递交给前置系统,编码必须为 UTF-8 * Json 格式参数名:如下表 * 参数值:如下表 * 测试地址: https://aipaytest.fuioupay.com/aggregatePay/wxPreCreate * 生产地址: https://aipay.fuioupay.com/aggregatePay/wxPreCreate * 生产地址 2: https://aipay-xs.fuioupay.com/aggregatePay/wxPreCreate * <p> * 该接口常应用于聚合二维码(静态二维码、统一收款码、台卡等不同叫法),用户扫二维码进入微信公众号/支付宝服务窗 * /QQJS 页面,页面调此接口生成订单,接受订单参数后调起官方支付接口支付。详见公众号/服务窗对接流程 * 步骤 1:用户通过支付宝(服务窗)、微信(公众号)进入到商户 H5 页面,或者是通过扫描台卡进入。 * 步骤 2:用户选择商品、输入支付金额等进行下单支付 * 步骤 3:商户将订单信息发送给富友,返回支付信息(用于调起支付宝、微信的参数)。 * 步骤 4:商户拿到支付信息后调起微信或者支付宝进行支付 * 步骤 5:支付结果以回调(2.5)的方式通知到商户 * * 平安支付 第三方支付对接 * * 使用请先到 平安支付 获取相关配置信息 * * https://www.pingan.com/ * * @desc add by 吴学文 15:33 */ @Service("fuiouPaymentFactory") public class FuiouPaymentFactoryAdapt implements IPaymentFactoryAdapt { @Service("panganPaymentFactory") public class PinganPaymentFactoryAdapt implements IPaymentFactoryAdapt { private static final Logger logger = LoggerFactory.getLogger(FuiouPaymentFactoryAdapt.class); private static final Logger logger = LoggerFactory.getLogger(PinganPaymentFactoryAdapt.class); //微信支付 @@ -81,7 +63,7 @@ public static final String TRADE_TYPE_MWEB = "MWEB"; public static final String TRADE_TYPE_APP = "APP"; public static final String PAY_UNIFIED_ORDER_URL = "https://aipay.fuioupay.com/aggregatePay/wxPreCreate"; public static final String PAY_UNIFIED_ORDER_URL = "https://aipay.pingan.com/aggregatePay/wxPreCreate"; private static final String VERSION = "1.0"; service-acct/src/main/java/com/java110/acct/payment/business/oweFee/OweFeePaymentBusiness.java
@@ -1,128 +1,202 @@ package com.java110.acct.payment.business.venue; package com.java110.acct.payment.business.oweFee; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.java110.acct.payment.IPaymentBusiness; import com.java110.core.factory.CallApiServiceFactory; import com.java110.core.factory.CommunitySettingFactory; import com.java110.core.factory.GenerateCodeFactory; import com.java110.core.log.LoggerFactory; import com.java110.core.smo.IComputeFeeSMO; import com.java110.dto.community.CommunityDto; import com.java110.dto.communitySpace.CommunitySpaceDto; import com.java110.dto.communitySpacePerson.CommunitySpacePersonDto; import com.java110.dto.communitySpacePersonTime.CommunitySpacePersonTimeDto; import com.java110.dto.fee.FeeAttrDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.payment.PaymentOrderDto; import com.java110.intf.community.ICommunitySpacePersonTimeV1InnerServiceSMO; import com.java110.intf.community.ICommunitySpacePersonV1InnerServiceSMO; import com.java110.intf.community.ICommunitySpaceV1InnerServiceSMO; import com.java110.intf.community.ICommunityV1InnerServiceSMO; import com.java110.intf.fee.IFeeInnerServiceSMO; import com.java110.po.communitySpacePerson.CommunitySpacePersonPo; import com.java110.po.communitySpacePersonTime.CommunitySpacePersonTimePo; import com.java110.utils.cache.CommonCache; import com.java110.utils.cache.MappingCache; import com.java110.utils.exception.CmdException; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.DateUtil; import com.java110.utils.util.StringUtil; import com.java110.vo.ResultVo; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; /** * 场地预约 * 欠费缴费 */ @Service("venueReservation") public class VenueReservationPaymentBusiness implements IPaymentBusiness{ @Service("oweFee") public class OweFeePaymentBusiness implements IPaymentBusiness{ @Autowired private ICommunitySpaceV1InnerServiceSMO communitySpaceV1InnerServiceSMOImpl; private final static Logger logger = LoggerFactory.getLogger(OweFeePaymentBusiness.class); public static final String CODE_PREFIX_ID = "10"; @Autowired private ICommunitySpacePersonV1InnerServiceSMO communitySpacePersonV1InnerServiceSMOImpl; //域 public static final String DOMAIN_COMMON = "DOMAIN.COMMON"; //键 public static final String TOTAL_FEE_PRICE = "TOTAL_FEE_PRICE"; //键 public static final String RECEIVED_AMOUNT_SWITCH = "RECEIVED_AMOUNT_SWITCH"; //禁用电脑端提交收费按钮 public static final String OFFLINE_PAY_FEE_SWITCH = "OFFLINE_PAY_FEE_SWITCH"; @Autowired private ICommunitySpacePersonTimeV1InnerServiceSMO communitySpacePersonTimeV1InnerServiceSMOImpl; private IFeeInnerServiceSMO feeInnerServiceSMOImpl; @Autowired private IComputeFeeSMO computeFeeSMOImpl; @Autowired private ICommunityV1InnerServiceSMO communityV1InnerServiceSMOImpl; @Override public PaymentOrderDto unified(JSONObject reqJson) { Assert.hasKeyAndValue(reqJson, "spaceId", "请求报文中未包含spaceId"); Assert.hasKeyAndValue(reqJson, "personName", "请求报文中未包含personName"); Assert.hasKeyAndValue(reqJson, "personTel", "请求报文中未包含personTel"); Assert.hasKeyAndValue(reqJson, "appointmentTime", "请求报文中未包含appointmentTime"); Assert.hasKeyAndValue(reqJson, "receivableAmount", "请求报文中未包含receivableAmount"); Assert.hasKeyAndValue(reqJson, "receivedAmount", "请求报文中未包含receivedAmount"); Assert.hasKeyAndValue(reqJson, "payWay", "请求报文中未包含payWay"); Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId"); String ownerId = reqJson.getString("ownerId"); String roomId = reqJson.getString("roomId"); if(!reqJson.containsKey("openTimes")){ throw new IllegalArgumentException("未包含 预约时间") ; String payObjType = "3333"; if (reqJson.containsKey("payObjType")) { payObjType = reqJson.getString("payObjType"); } JSONArray openTimes = reqJson.getJSONArray("openTimes"); FeeDto feeDto = new FeeDto(); if(!StringUtil.isEmpty(ownerId)){ feeDto.setOwnerId(ownerId); }else { feeDto.setPayerObjId(roomId); feeDto.setPayerObjType(payObjType); } feeDto.setCommunityId(reqJson.getString("communityId")); if(openTimes == null || openTimes.size() <1){ throw new IllegalArgumentException("未包含 预约时间") ; //查询费用信息arrearsEndTime feeDto.setArrearsEndTime(DateUtil.getCurrentDate()); feeDto.setState(FeeDto.STATE_DOING); List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); if (feeDtos == null || feeDtos.size() < 1) { throw new IllegalArgumentException("未包含欠费费用"); } CommunitySpaceDto communitySpaceDto = new CommunitySpaceDto(); List<CommunitySpaceDto> communitySpaceDtos = communitySpaceV1InnerServiceSMOImpl.queryCommunitySpaces(communitySpaceDto); Assert.listOnlyOne(communitySpaceDtos,"场地不存在"); int openTime = 0; for(int timeIndex = 0 ;timeIndex < openTimes.size(); timeIndex++) { if("N".equals(openTimes.getJSONObject(timeIndex).getString("isOpen"))){ continue; String val = CommunitySettingFactory.getValue(feeDtos.get(0).getCommunityId(), TOTAL_FEE_PRICE); if (StringUtil.isEmpty(val)) { val = MappingCache.getValue(DOMAIN_COMMON, TOTAL_FEE_PRICE); } List<FeeDto> tmpFeeDtos = new ArrayList<>(); double money = 0.0; BigDecimal tmpMoney = new BigDecimal(money); BigDecimal feePrice = null; for (FeeDto tmpFeeDto : feeDtos) { try { computeFeeSMOImpl.computeEveryOweFee(tmpFeeDto);//计算欠费金额 //如果金额为0 就排除 //if (tmpFeeDto.getFeePrice() > 0 && tmpFeeDto.getEndTime().getTime() <= DateUtil.getCurrentDate().getTime()) { tmpFeeDto.setVal(val); if (tmpFeeDto.getFeePrice() > 0) { tmpFeeDtos.add(tmpFeeDto); feePrice = new BigDecimal(tmpFeeDto.getFeePrice()); tmpMoney = tmpMoney.add(feePrice); } } catch (Exception e) { logger.error("可能费用资料有问题导致算费失败", e); } openTime += 1; } BigDecimal money = new BigDecimal(openTime).multiply(new BigDecimal(communitySpaceDtos.get(0).getFeeMoney())).setScale(2,BigDecimal.ROUND_HALF_UP); String feeName = getFeeName(feeDtos.get(0)); String orderId = GenerateCodeFactory.getOId(); money = tmpMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); PaymentOrderDto paymentOrderDto = new PaymentOrderDto(); paymentOrderDto.setOrderId(GenerateCodeFactory.getOId()); paymentOrderDto.setMoney(money.doubleValue()); paymentOrderDto.setName("预约"+communitySpaceDtos.get(0).getName()+"费用"); paymentOrderDto.setOrderId(orderId); paymentOrderDto.setMoney(money); paymentOrderDto.setName(feeName+"欠费费用"); JSONObject saveFees = new JSONObject(); saveFees.put("orderId", orderId); saveFees.put("money", money); saveFees.put("roomId", roomId); saveFees.put("communityId", reqJson.getString("communityId")); saveFees.put("fees", tmpFeeDtos); CommonCache.setValue(FeeDto.REDIS_PAY_OWE_FEE + orderId, saveFees.toJSONString(), CommonCache.PAY_DEFAULT_EXPIRE_TIME); return paymentOrderDto; } @Override public void notifyPayment(PaymentOrderDto paymentOrderDto, JSONObject reqJson) { CommunitySpacePersonPo communitySpacePersonPo = BeanConvertUtil.covertBean(reqJson, CommunitySpacePersonPo.class); communitySpacePersonPo.setCspId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); if(StringUtil.isEmpty(communitySpacePersonPo.getState())){ communitySpacePersonPo.setState(CommunitySpacePersonDto.STATE_W); } int flag = communitySpacePersonV1InnerServiceSMOImpl.saveCommunitySpacePerson(communitySpacePersonPo); String order = CommonCache.getAndRemoveValue(FeeDto.REDIS_PAY_OWE_FEE + paymentOrderDto.getOrderId()); if (flag < 1) { throw new CmdException("保存数据失败"); JSONObject paramIn = JSONObject.parseObject(order); paramIn.put("oId", paymentOrderDto.getOrderId()); freshFees(paramIn); JSONObject paramOut = CallApiServiceFactory.postForApi(paymentOrderDto.getAppId(), reqJson, "fee.payOweFee", JSONObject.class, "-1"); } private void freshFees(JSONObject paramIn) { if (!paramIn.containsKey("fees")) { return; } if(!reqJson.containsKey("openTimes")){ return ; } JSONArray openTimes = reqJson.getJSONArray("openTimes"); if(openTimes == null || openTimes.size() <1){ return ; } CommunitySpacePersonTimePo communitySpacePersonTimePo = null; for(int timeIndex = 0 ;timeIndex < openTimes.size(); timeIndex++) { if("N".equals(openTimes.getJSONObject(timeIndex).getString("isOpen"))){ continue; JSONArray fees = paramIn.getJSONArray("fees"); JSONObject fee = null; for (int feeIndex = 0; feeIndex < fees.size(); feeIndex++) { fee = fees.getJSONObject(feeIndex); if (fee.containsKey("deadlineTime")) { fee.put("startTime", fee.getString("endTime")); fee.put("endTime", fee.getString("deadlineTime")); fee.put("receivedAmount", fee.getString("feePrice")); fee.put("state", ""); } communitySpacePersonTimePo = new CommunitySpacePersonTimePo(); communitySpacePersonTimePo.setCommunityId(communitySpacePersonPo.getCommunityId()); communitySpacePersonTimePo.setCspId(communitySpacePersonPo.getCspId()); communitySpacePersonTimePo.setHours(openTimes.getJSONObject(timeIndex).getString("hours")); communitySpacePersonTimePo.setSpaceId(communitySpacePersonPo.getSpaceId()); communitySpacePersonTimePo.setTimeId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); communitySpacePersonTimeV1InnerServiceSMOImpl.saveCommunitySpacePersonTime(communitySpacePersonTimePo); } } private String getFeeName(FeeDto feeDto) { //查询小区名称 CommunityDto communityDto = new CommunityDto(); communityDto.setCommunityId(feeDto.getCommunityId()); List<CommunityDto> communityDtos = communityV1InnerServiceSMOImpl.queryCommunitys(communityDto); Assert.listOnlyOne(communityDtos, "小区不存在"); List<FeeAttrDto> feeAttrDtos = feeDto.getFeeAttrDtos(); if (feeAttrDtos == null || feeAttrDtos.size() < 1) { return communityDtos.get(0).getName() + "-" + feeDto.getFeeName(); } for (FeeAttrDto feeAttrDto : feeAttrDtos) { if (FeeAttrDto.SPEC_CD_PAY_OBJECT_NAME.equals(feeAttrDto.getSpecCd())) { return communityDtos.get(0).getName() + "-" + feeAttrDto.getValue() + "-" + feeDto.getFeeName(); } } return communityDtos.get(0).getName() + "-" + feeDto.getFeeName(); } } service-acct/src/main/java/com/java110/acct/smo/impl/NotifyPaymentV1InnerServiceSMOImpl.java
@@ -25,6 +25,7 @@ import com.java110.core.log.LoggerFactory; import com.java110.dto.PageDto; import com.java110.dto.onlinePay.OnlinePayDto; import com.java110.dto.payment.NotifyPaymentOrderDto; import com.java110.dto.payment.PaymentOrderDto; import com.java110.intf.acct.INotifyPaymentV1InnerServiceSMO; import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO; @@ -61,18 +62,18 @@ /** * 通知类 * @param param 数据对象分享 * @param notifyPaymentOrderDto 数据对象分享 * @return */ @Override public ResponseEntity<String> notifyPayment(@RequestBody String param) { public ResponseEntity<String> notifyPayment(@RequestBody NotifyPaymentOrderDto notifyPaymentOrderDto) { String payNotifyAdapt = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.PAYMENT_ADAPT); payNotifyAdapt = StringUtil.isEmpty(payNotifyAdapt) ? DEFAULT_PAYMENT_NOTIFY_ADAPT : payNotifyAdapt; //支付适配器IPayNotifyAdapt logger.debug("适配器:" + payNotifyAdapt); IPaymentFactoryAdapt tPayNotifyAdapt = ApplicationContextFactory.getBean(payNotifyAdapt, IPaymentFactoryAdapt.class); PaymentOrderDto paymentOrderDto = tPayNotifyAdapt.java110NotifyPayment(param); PaymentOrderDto paymentOrderDto = tPayNotifyAdapt.java110NotifyPayment(notifyPaymentOrderDto.getParam()); logger.info("【支付回调响应】 响应内容:\n" + paymentOrderDto.getResponseEntity()); if(StringUtil.isEmpty(paymentOrderDto.getOrderId())){ @@ -89,6 +90,8 @@ throw new CmdException("当前支付业务不支持"); } paymentOrderDto.setAppId(notifyPaymentOrderDto.getAppId()); //2.0 相应业务 下单 返回 单号 ,金额, paymentBusiness.notifyPayment(paymentOrderDto,reqJson); service-api/src/main/java/com/java110/api/controller/app/payment/NotifyPaymentController.java
@@ -2,6 +2,7 @@ import com.java110.api.controller.app.PaymentController; import com.java110.core.log.LoggerFactory; import com.java110.dto.payment.NotifyPaymentOrderDto; import com.java110.intf.acct.INotifyPaymentV1InnerServiceSMO; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +32,7 @@ logger.debug("微信支付回调报文" + postInfo); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(postInfo); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(new NotifyPaymentOrderDto(appId,postInfo)); } } service-api/src/main/java/com/java110/api/controller/app/payment/chinaums/ChinaUmsNotifyPaymentController.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.java110.core.base.controller.BaseController; import com.java110.core.log.LoggerFactory; import com.java110.dto.payment.NotifyPaymentOrderDto; import com.java110.intf.acct.INotifyPaymentV1InnerServiceSMO; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -51,7 +52,7 @@ paramIn.put("preSign", preStr); paramIn.put("sign", sign); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(paramIn.toJSONString()); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(new NotifyPaymentOrderDto(appId,paramIn.toJSONString())); } service-api/src/main/java/com/java110/api/controller/app/payment/wechat/WechatNotifyPaymentController.java
@@ -1,6 +1,7 @@ package com.java110.api.controller.app.payment.wechat; import com.java110.core.log.LoggerFactory; import com.java110.dto.payment.NotifyPaymentOrderDto; import com.java110.intf.acct.INotifyPaymentV1InnerServiceSMO; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -30,7 +31,7 @@ logger.debug("微信支付回调报文" + postInfo); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(postInfo); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(new NotifyPaymentOrderDto(appId,postInfo)); } } springboot/src/main/java/com/java110/boot/controller/app/payment/NotifyPaymentController.java
@@ -1,6 +1,7 @@ package com.java110.boot.controller.app.payment; import com.java110.core.log.LoggerFactory; import com.java110.dto.payment.NotifyPaymentOrderDto; import com.java110.intf.acct.INotifyPaymentV1InnerServiceSMO; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -29,7 +30,7 @@ logger.debug("微信支付回调报文" + postInfo); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(postInfo); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(new NotifyPaymentOrderDto(appId,postInfo)); } } springboot/src/main/java/com/java110/boot/controller/app/payment/chinaums/ChinaUmsNotifyPaymentController.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.java110.core.base.controller.BaseController; import com.java110.core.log.LoggerFactory; import com.java110.dto.payment.NotifyPaymentOrderDto; import com.java110.intf.acct.INotifyPaymentV1InnerServiceSMO; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -54,7 +55,8 @@ paramIn.put("preSign", preStr); paramIn.put("sign", sign); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(paramIn.toJSONString()); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(new NotifyPaymentOrderDto(appId,paramIn.toJSONString())); } springboot/src/main/java/com/java110/boot/controller/app/payment/wechat/WechatNotifyPaymentController.java
@@ -1,6 +1,7 @@ package com.java110.boot.controller.app.payment.wechat; import com.java110.core.log.LoggerFactory; import com.java110.dto.payment.NotifyPaymentOrderDto; import com.java110.intf.acct.INotifyPaymentV1InnerServiceSMO; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -29,7 +30,7 @@ logger.debug("微信支付回调报文" + postInfo); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(postInfo); return notifyPaymentV1InnerServiceSMOImpl.notifyPayment(new NotifyPaymentOrderDto(appId,postInfo)); } }