From 0f7cc6eebed367fd1f51599f9c7600ee17b3ed94 Mon Sep 17 00:00:00 2001 From: qiaowei Date: Fri, 12 Apr 2019 16:00:54 +0800 Subject: [PATCH] =?utf8?q?=E4=BB=A3=E7=A0=81=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../consume/controller/PayapiAction.java | 98 ------- .../dlpay/consume/dao/TransdtlDao.java | 33 --- .../dlpay/consume/domain/TTransdtl.java | 264 ------------------ .../dlpay/consume/service/PayapiService.java | 14 - .../service/impl/PayapiServiceImpl.java | 186 ------------ .../dlpay/framework/util/MoneyUtil.java | 3 + .../com/supwisdom/dlpay/util/MoneyUtil.java | 30 -- .../supwisdom/dlpay/consume/ThirdPayCall.kt | 2 +- .../consume/controller/consume_service.kt | 17 +- .../consume/service/impl/pay_service_impl.kt | 12 +- .../dlpay/consume/service/pay_service.kt | 4 +- 11 files changed, 27 insertions(+), 636 deletions(-) delete mode 100644 src/main/java/com/supwisdom/dlpay/consume/controller/PayapiAction.java delete mode 100644 src/main/java/com/supwisdom/dlpay/consume/dao/TransdtlDao.java delete mode 100644 src/main/java/com/supwisdom/dlpay/consume/domain/TTransdtl.java delete mode 100644 src/main/java/com/supwisdom/dlpay/consume/service/PayapiService.java delete mode 100644 src/main/java/com/supwisdom/dlpay/consume/service/impl/PayapiServiceImpl.java delete mode 100644 src/main/java/com/supwisdom/dlpay/util/MoneyUtil.java diff --git a/src/main/java/com/supwisdom/dlpay/consume/controller/PayapiAction.java b/src/main/java/com/supwisdom/dlpay/consume/controller/PayapiAction.java deleted file mode 100644 index ac7d7feb..00000000 --- a/src/main/java/com/supwisdom/dlpay/consume/controller/PayapiAction.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.supwisdom.dlpay.consume.controller; - -import com.supwisdom.dlpay.consume.bean.BaseResp; -import com.supwisdom.dlpay.consume.bean.ReqParam; -import com.supwisdom.dlpay.consume.service.PayapiService; -import com.supwisdom.dlpay.consume.service.PaytypeService; -import com.supwisdom.dlpay.framework.data.SystemDateTime; -import com.supwisdom.dlpay.util.Code; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * 统一支付入口 - * 1.支付 - * 2.冲正 - * 3.充值 - * - * 校验 - * -参数 - * -签名 - */ -@RestController -@RequestMapping("/unified") -public class PayapiAction { - @Autowired - private PayapiService payapiService; - - /** - * 公共参数校验 - * */ - - private boolean checkCommonParam(BaseResp resp,ReqParam param){ - if(param.getAmount()==null){ - resp.setRetcode("1"); - resp.setRetmsg("参数错误[amount]"); - return false; - } - if(StringUtils.isEmpty(param.getPayinfo())){ - resp.setRetcode("1"); - resp.setRetmsg("参数错误[payinfo]"); - return false; - } - if(StringUtils.isEmpty(param.getPaytype())){ - resp.setRetcode("1"); - resp.setRetmsg("参数错误[paytype]"); - return false; - } - if(StringUtils.isEmpty(param.getRefno())){ - resp.setRetcode("1"); - resp.setRetmsg("参数错误[refno]"); - return false; - } - return true; - } - /** - * - * 统一消费接口 - * - * - * */ - @RequestMapping("/consume") - public BaseResp consume(@RequestBody ReqParam param) { - BaseResp resp = new BaseResp(); - if(!checkCommonParam(resp,param)){ - return resp; - } - payapiService.doConsume(param,resp); - return resp; - } - - /** - * - * 统一冲正接口 - * - * - * */ - @RequestMapping("/reverse") - public BaseResp reverse() { - BaseResp resp = new BaseResp(); - resp.setCode(Code.SUCCESS); - return resp; - } - - /** - * - * 统一充值接口 - * - * */ - @RequestMapping("/recharge") - public BaseResp recharge() { - BaseResp resp = new BaseResp(); - resp.setCode(Code.SUCCESS); - return resp; - } -} diff --git a/src/main/java/com/supwisdom/dlpay/consume/dao/TransdtlDao.java b/src/main/java/com/supwisdom/dlpay/consume/dao/TransdtlDao.java deleted file mode 100644 index a49de57b..00000000 --- a/src/main/java/com/supwisdom/dlpay/consume/dao/TransdtlDao.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.supwisdom.dlpay.consume.dao; - -import com.supwisdom.dlpay.consume.domain.TTransdtl; -import com.supwisdom.dlpay.framework.data.VoucherTemp; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; -import org.springframework.web.bind.annotation.RequestParam; - -import java.util.List; - -@Repository -public interface TransdtlDao extends JpaRepository { -// @Query(value="select a.drsubjno,a.crsubjno,a.summary,t.shopaccno,count(t.refno) as transcnt,sum(t.paidamt) as transamt " + -// "from tb_transdtl t left join tb_transtype a on t.transtype=a.transtype " + -// "where t.status='success' and t.accdate=:settledate " + -// "group by a.drsubjno,a.crsubjno,a.summary,t.shopaccno ", nativeQuery = true) -// List getVouhcerData(@RequestParam("settledate") String settledate); -// -// @Query(value="select a.drsubjno,a.crsubjno,a.summary,t.shopaccno,count(t.refno) as transcnt,sum(t.feeamt) as transamt " + -// "from tb_transdtl t left join tb_feetype_config a on t.feetype=a.feetype and t.paytype=a.paytype " + -// "where t.status='success' and t.feetype!='none' and t.accdate=:settledate " + -// "group by a.drsubjno,a.crsubjno,a.summary,t.shopaccno ", nativeQuery = true) -// List getFeeVoucherData(@RequestParam("settledate") String settledate); - - TTransdtl getByOuttradenoAndStatus(String outtradeno,String status); - - @Query(value = " select to_char(sysdate,'yyyyMMddhh24missSSS')||to_char(SEQ_REFNO.nextval,'FM0000000') as billno from dual ",nativeQuery = true) - String getReno(); - - @Query(value = " select to_char(CURRENT_TIMESTAMP,'yyyyMMddhh24missSS')||to_char(nextval('SEQ_REFNO'),'FM0000000') as billno ",nativeQuery = true) - String getRenoPG(); -} diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TTransdtl.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TTransdtl.java deleted file mode 100644 index 309a1220..00000000 --- a/src/main/java/com/supwisdom/dlpay/consume/domain/TTransdtl.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.supwisdom.dlpay.consume.domain; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -@Entity -@Table(name = "TB_TRANSDTL") -public class TTransdtl { - @Id - @Column(name = "REFNO", nullable = false, length = 32) - private String refno; - - @Column(name = "ACCDATE", length = 8) - private String accdate; - - @Column(name = "ACCNO", length = 32) - private String accno; - - @Column(name = "PAYTYPE", length = 20) - private String paytype; //支付方式 balance,wechat,alipay - - @Column(name = "PAYINFO", length = 200) - private String payinfo; //记录支付信息备用字段 - - @Column(name = "AMOUNT", precision = 9, scale = 2) - private Double amount; - - @Column(name = "PAIDAMT", precision = 9, scale = 2) - private Double paidamt; - - @Column(name = "FEETYPE", length = 20) - private String feetype="none"; //费用类型 - - @Column(name = "FEEAMT", precision = 9, scale = 2) - private Double feeamt=0D; //费用金额 - - @Column(name = "STATUS", length = 20) - private String status; - - @Column(name = "BEFBAL", precision = 9, scale = 2) - private Double befbal; - - @Column(name = "AFTBAL", precision = 9, scale = 2) - private Double aftbal; - - @Column(name = "SHOPACCNO", length = 32) - private String shopaccno; - - @Column(name = "TRANSCODE", precision = 4) - private Integer transcode; //指定交易类型 - - @Column(name = "TRANSTYPE", precision = 4) - private Integer transtype; //指定借贷双方 - - @Column(name = "TRANSDESC", length = 240) - private String transdesc; - - @Column(name = "CREATETIME", length = 14) - private String createtime; - - @Column(name = "ENDTIME", length = 14) - private String endtime; - - @Column(name = "OUTTRADENO", length = 60) - private String outtradeno; - - @Column(name = "TRANSDATE", length = 8) - private String transdate; - - @Column(name = "TRANSTIME", length = 6) - private String transtime; - - @Column(name = "REVFLAG", nullable = false, precision = 1) - private Integer revflag = 0; - - @Column(name="REMARK", length = 240) - private String remark; - - public String getRefno() { - return refno; - } - - public void setRefno(String refno) { - this.refno = refno; - } - - public String getAccdate() { - return accdate; - } - - public void setAccdate(String accdate) { - this.accdate = accdate; - } - - public String getAccno() { - return accno; - } - - public void setAccno(String accno) { - this.accno = accno; - } - - public String getPaytype() { - return paytype; - } - - public void setPaytype(String paytype) { - this.paytype = paytype; - } - - public String getPayinfo() { - return payinfo; - } - - public void setPayinfo(String payinfo) { - this.payinfo = payinfo; - } - - public Double getAmount() { - return amount; - } - - public void setAmount(Double amount) { - this.amount = amount; - } - - public Double getPaidamt() { - return paidamt; - } - - public void setPaidamt(Double paidamt) { - this.paidamt = paidamt; - } - - public String getFeetype() { - return feetype; - } - - public void setFeetype(String feetype) { - this.feetype = feetype; - } - - public Double getFeeamt() { - return feeamt; - } - - public void setFeeamt(Double feeamt) { - this.feeamt = feeamt; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - public Double getBefbal() { - return befbal; - } - - public void setBefbal(Double befbal) { - this.befbal = befbal; - } - - public Double getAftbal() { - return aftbal; - } - - public void setAftbal(Double aftbal) { - this.aftbal = aftbal; - } - - public String getShopaccno() { - return shopaccno; - } - - public void setShopaccno(String shopaccno) { - this.shopaccno = shopaccno; - } - - public Integer getTranscode() { - return transcode; - } - - public void setTranscode(Integer transcode) { - this.transcode = transcode; - } - - public Integer getTranstype() { - return transtype; - } - - public void setTranstype(Integer transtype) { - this.transtype = transtype; - } - - public String getTransdesc() { - return transdesc; - } - - public void setTransdesc(String transdesc) { - this.transdesc = transdesc; - } - - public String getCreatetime() { - return createtime; - } - - public void setCreatetime(String createtime) { - this.createtime = createtime; - } - - public String getEndtime() { - return endtime; - } - - public void setEndtime(String endtime) { - this.endtime = endtime; - } - - public String getOuttradeno() { - return outtradeno; - } - - public void setOuttradeno(String outtradeno) { - this.outtradeno = outtradeno; - } - - public String getTransdate() { - return transdate; - } - - public void setTransdate(String transdate) { - this.transdate = transdate; - } - - public String getTranstime() { - return transtime; - } - - public void setTranstime(String transtime) { - this.transtime = transtime; - } - - public Integer getRevflag() { - return revflag; - } - - public void setRevflag(Integer revflag) { - this.revflag = revflag; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } -} diff --git a/src/main/java/com/supwisdom/dlpay/consume/service/PayapiService.java b/src/main/java/com/supwisdom/dlpay/consume/service/PayapiService.java deleted file mode 100644 index 0c8bec0c..00000000 --- a/src/main/java/com/supwisdom/dlpay/consume/service/PayapiService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.supwisdom.dlpay.consume.service; - -import com.supwisdom.dlpay.consume.bean.BaseResp; -import com.supwisdom.dlpay.consume.bean.ReqParam; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -/** - * Created by shuwei on 2019/4/9. - */ -public interface PayapiService { - @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) - boolean doConsume(ReqParam param, BaseResp resp); -} diff --git a/src/main/java/com/supwisdom/dlpay/consume/service/impl/PayapiServiceImpl.java b/src/main/java/com/supwisdom/dlpay/consume/service/impl/PayapiServiceImpl.java deleted file mode 100644 index 382d8212..00000000 --- a/src/main/java/com/supwisdom/dlpay/consume/service/impl/PayapiServiceImpl.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.supwisdom.dlpay.consume.service.impl; - -import com.google.gson.Gson; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.WebResource; -import com.supwisdom.dlpay.consume.bean.BaseResp; -import com.supwisdom.dlpay.consume.bean.ReqParam; -import com.supwisdom.dlpay.consume.bean.SupStatusRevResp; -import com.supwisdom.dlpay.consume.bean.SupYktResp; -import com.supwisdom.dlpay.consume.dao.TransdtlDao; -import com.supwisdom.dlpay.consume.domain.TPaytype; -import com.supwisdom.dlpay.consume.domain.TTransdtl; -import com.supwisdom.dlpay.consume.service.PayapiService; -import com.supwisdom.dlpay.consume.service.PaytypeService; -import com.supwisdom.dlpay.framework.data.SystemDateTime; -import com.supwisdom.dlpay.framework.service.SystemUtilService; -import com.supwisdom.dlpay.framework.util.DateUtil; -import com.supwisdom.dlpay.framework.util.TradeCode; -import com.supwisdom.dlpay.util.*; -import org.apache.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - -import java.util.HashMap; -import java.util.Map; - -/** - * Created by shuwei on 2019/4/9. - */ -@Service -public class PayapiServiceImpl implements PayapiService { - @Autowired - private TransdtlDao transdtlDao; - @Autowired - private SystemUtilService systemUtilService; - @Autowired - private PaytypeService paytypeService; - private static final Logger logger = Logger.getLogger(PayapiServiceImpl.class); - private static final Gson gson = new Gson(); - - @Override - public boolean doConsume(ReqParam param, BaseResp resp) { - TTransdtl tTransdtl = transdtlDao.getByOuttradenoAndStatus(param.getRefno(), ConstUtil.STATUS_SUCCESS); - if (tTransdtl != null) { - resp.setRetcode("1"); - resp.setRetmsg("流水号重复"); - return false; - } - String refno = transdtlDao.getReno(); - if (StringUtils.isEmpty(refno)) { - resp.setCode(Code.SYS_ERROR); - return false; - } - tTransdtl = new TTransdtl(); - tTransdtl.setAccno(param.getAccno()); - tTransdtl.setAmount(MoneyUtil.FenToYuan(param.getAmount())); - tTransdtl.setPaidamt(MoneyUtil.FenToYuan(param.getAmount())); - tTransdtl.setShopaccno(param.getShopaccno()); - tTransdtl.setOuttradeno(param.getRefno()); - tTransdtl.setPaytype(param.getPaytype()); - tTransdtl.setTransdate(DateUtil.getNow("yyyyMMdd")); - tTransdtl.setTranstime(DateUtil.getNow("hhmmss")); - tTransdtl.setCreatetime(DateUtil.getNow()); - tTransdtl.setPayinfo(param.getPayinfo()); - tTransdtl.setStatus(ConstUtil.STATUS_INIT); - tTransdtl.setRefno(refno); - transdtlDao.save(tTransdtl); - switch (param.getPaytype()) { - case PaytypeUtil.YKTPAY: - return doYKTPay(param, tTransdtl, resp); - } - resp.setCode(Code.PAYTYPE_NOT_SUPPORT); - return false; - } - - /** - * 一卡通支付 - */ - - private boolean doYKTPay(ReqParam param, TTransdtl dtl, BaseResp resp) { - //TODO - TPaytype paytype = paytypeService.getByPaytype(PaytypeUtil.YKTPAY); - if (paytype == null || !ConstUtil.ENABLE_YES.equals(paytype.getEnable())) { - resp.setCode(Code.PAYTYPE_NOT_SUPPORT); - return false; - } - Map config = paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY); - String appid = config.get("appid"); - String appkey = config.get("appkey"); - String orderurl = config.get("orderurl"); - if (config.size() == 0 - || StringUtils.isEmpty(appid) - || StringUtils.isEmpty(appkey) - || StringUtils.isEmpty(orderurl)) { - resp.setCode(Code.PAYTYPE_CONFIG_ERROR); - logger.error("支付方式未配置,appid=" + appid + ",appkey=" + appkey + ",orderurl=" + orderurl); - return false; - } - SystemDateTime systemDateTime = systemUtilService.getSysdatetime(); - dtl.setAccdate(systemDateTime.getHostdate()); - Map params = new HashMap(); - params.put("partner_id", appid); - params.put("stuempno", param.getAccno()); - params.put("tradeno", dtl.getRefno()); - params.put("tradename", param.getPayinfo()); - params.put("amount", param.getAmount() + ""); - params.put("shopid", param.getYktshopid()); - params.put("devphyid", param.getDevphyid()); - params.put("calcmanagefee", "T");//是否计算费率 - params.put("timestamp", systemDateTime.getHostdatetime()); - - params.put("sign_method", "HMAC"); - params.put("limitflag", "off"); //是否判断消费限额,on-判断;off-不判断。默认on(判断限额)。为空或不为off都是on; - String signstr = HmacUtil.createLinkString(HmacUtil.paraFilter(params)); - String sign = HmacUtil.HMACSHA1(signstr, appkey); - signstr += "&sign=" + sign + "&sourcetype=food"; - Client c = Client.create(); - c.setConnectTimeout(20000); - dtl.setTranstype(TradeCode.TRANSTYPE_YKTPAY); - dtl.setTranscode(TradeCode.TRANSCODE_YKTPAY); - - WebResource r = c.resource(orderurl); - ClientResponse respClient = r.post(ClientResponse.class, signstr); - if (200 == respClient.getStatus()) { - String ret = respClient.getEntity(String.class); - logger.error("***************yktpay.ret=" + ret + "*************************"); - if (ret != null) { - try { - SupYktResp result = gson.fromJson(ret, SupYktResp.class); - if (result == null) { - resp.setCode(Code.RESPNOSE_CONTENT_ERROR); - logger.error("支付内容转换失败:null"); - return false; - } - if (!"0".equals(result.getRetcode())) { - if ("30".equals(result.getRetcode())) { - if (result.getOther() != null) { - try { - SupStatusRevResp supStatusRevResp = gson.fromJson(result.getOther(), SupStatusRevResp.class); - if (supStatusRevResp != null) { - //同流水号,同一笔已经支付完成的,不重复支付。 - if (3 == supStatusRevResp.getStatus() && supStatusRevResp.getRevflag() != null && !supStatusRevResp.getRevflag()) { - dtl.setStatus(ConstUtil.STATUS_SUCCESS); - dtl.setAccdate(systemDateTime.getHostdate()); - transdtlDao.save(dtl); - resp.setCode(Code.SUCCESS); - return true; - } - } - } catch (Exception e) { - e.printStackTrace(); - logger.error("返回内容转换失败:" + e.getMessage()); - } - } - } - resp.setRetcode("1"); - resp.setRetmsg("交易失败:" + result.getRetmsg()); - logger.error(result.getRetmsg()); - //dtl.setErrmsg(result.getRetmsg()); - //payApiDTLDao.save(dtl); - return false; - } - dtl.setStatus(ConstUtil.STATUS_SUCCESS); - dtl.setAccdate(systemDateTime.getHostdate()); - transdtlDao.save(dtl); - resp.setCode(Code.SUCCESS); - return true; - } catch (Exception e) { - e.printStackTrace(); - resp.setCode(Code.RESPNOSE_CONTENT_ERROR); - logger.error("支付内容转换失败:" + e.getMessage()); - return false; - } - } else { - resp.setCode(Code.REQUEST_ERROR); - return false; - } - } else { - resp.setCode(Code.REQUEST_ERROR); - logger.error("请求返回失败:" + respClient.getEntity(String.class) + ",code=" + respClient.getStatus()); - return false; - } - } -} diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/MoneyUtil.java b/src/main/java/com/supwisdom/dlpay/framework/util/MoneyUtil.java index 0ac1b7b9..d384340c 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/util/MoneyUtil.java +++ b/src/main/java/com/supwisdom/dlpay/framework/util/MoneyUtil.java @@ -28,5 +28,8 @@ public class MoneyUtil { double money = ((double) YuanToFen(yuan)) / 100; return df.format(money); } + public static double FenToYuan(int fen) { + return formatYuan(fen / 100.0); + } } diff --git a/src/main/java/com/supwisdom/dlpay/util/MoneyUtil.java b/src/main/java/com/supwisdom/dlpay/util/MoneyUtil.java deleted file mode 100644 index fac8ed41..00000000 --- a/src/main/java/com/supwisdom/dlpay/util/MoneyUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.supwisdom.dlpay.util; - - -import java.text.DecimalFormat; - -public class MoneyUtil { - - public static int YuanToFen(double yuan) { - return (int) (Math.round(yuan * 100)); - } - - public static boolean moneyCompare(double x1, double x2) { - return YuanToFen(x1) == YuanToFen(x2); - } - - public static double formatYuan(double yuan) { - DecimalFormat df = new DecimalFormat("##0.00"); - double money = ((double) YuanToFen(yuan)) / 100; - return Double.valueOf(df.format(money)); - } - - public static double FenToYuan(int fen) { - return formatYuan(fen / 100.0); - } - - public static String format(double num, String format) { - DecimalFormat df = new DecimalFormat(format); - return df.format(num); - } -} diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt index 8419452c..52efca07 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt @@ -7,8 +7,8 @@ import com.supwisdom.dlpay.consume.bean.BaseResp import com.supwisdom.dlpay.consume.bean.SupStatusRevResp import com.supwisdom.dlpay.consume.bean.SupYktResp import com.supwisdom.dlpay.consume.domain.TUserdtl +import com.supwisdom.dlpay.framework.util.MoneyUtil import com.supwisdom.dlpay.util.HmacUtil -import com.supwisdom.dlpay.util.MoneyUtil /** * Created by shuwei on 2019/4/11. diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt index 61784ece..82406a61 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt @@ -9,7 +9,9 @@ import com.supwisdom.dlpay.consume.service.PaytypeService import com.supwisdom.dlpay.consume.service.PersonBalancePayService import com.supwisdom.dlpay.consume.service.PersonService import com.supwisdom.dlpay.framework.util.DateUtil +import com.supwisdom.dlpay.framework.util.TradeCode import com.supwisdom.dlpay.framework.util.TradeDict +import com.supwisdom.dlpay.framework.util.Tradetype import com.supwisdom.dlpay.util.PaytypeUtil import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity @@ -69,25 +71,32 @@ class ConsumeController { @PostMapping("/ykt/payinit") fun yktPayInit(userid: String, amount: Int, manageFee: Int, stuempno: String, shopid: String, transdate: String, transtime: String, - outtradeno: String, payinfo: String): ResponseEntity { + outtradeno: String, payinfo: String,feetype:String): ResponseEntity { //一卡通支付款 112240 + var drsubjectno = "" + var ccsubjectno = "" + var person = personService.getPersonByThirdUniqueIdenty(stuempno) val dtl = PersonTransBuilder.newBuilder(accountUtilServcie) .setTransDatetime(transdate, transtime) .selectPaytype(PaytypeUtil.YKTPAY, payinfo) .setOuttradeno(outtradeno) .setOwner(person) + .setTransinfo(TradeCode.TRANSCODE_YKTPAY,"一卡通支付") + .chooseTradetype(Tradetype.CONSUME) .addDetail(AccountHolder.subject("112240"), AccountHolder.shop(shopid), - amount / 100.0, "") + amount / 100.0, "一卡通支付") + .addDetail(AccountHolder.subject("112240"), + AccountHolder.subject("2002"), + manageFee / 100.0, "搭伙费") .done(personBalancePayService, false) return ResponseEntity.ok(dtl) } @PostMapping("/ykt/payfinish") fun yktPayFinish(refno: String, yktshopid: String, devphyid: String?): ResponseEntity { - val dtl = PersonTransBuilder.newBuilder(accountUtilServcie) - .done(refno, TradeDict.DTL_STATUS_WIP, personBalancePayService) + var dtl = personBalancePayService.wip(refno) var person = personService.getPersonByUserid(dtl.userid) val code = CallService.callYktPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY), dtl, DateUtil.getNow(),person?.thirdUniqueIdenty,yktshopid,devphyid) diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt index 44c0a564..b592a60c 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt @@ -149,7 +149,7 @@ class PersonBalancePayServiceImpl : PersonBalancePayService { } private fun doDealShopacc(shopaccno: String, amount: Double) { - TODO("商户更新余额逻辑") + return } override fun process(builder: PersonTransBuilder): TUserdtl { @@ -260,12 +260,16 @@ class PersonBalancePayServiceImpl : PersonBalancePayService { } } - override fun wip(paydtl: TUserdtl, builder: PersonTransBuilder): TUserdtl { - return wip(paydtl.refno, builder) + override fun wip(paydtl: TUserdtl): TUserdtl { + return wip(paydtl.refno) } - override fun wip(refno: String, builder: PersonTransBuilder): TUserdtl { + override fun wip(refno: String): TUserdtl { var userdtl = getLockUserdtlNowait(refno) + if(TradeDict.DTL_STATUS_WIP == userdtl.status){ + return userdtl + } + if (TradeDict.DTL_STATUS_INIT != userdtl.status) throw TransactionProcessException(TradeErrorCode.TRANSDTL_STATUS_NOT_INIT, "交易参考号<$refno>非初始化流水") diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt index 8bfc9009..84da4085 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt @@ -43,9 +43,9 @@ interface PersonBalancePayService { /** * 两步交易,交易过程中判断交易状态,并更新交易状态为 wip */ - fun wip(paydtl: TUserdtl, builder: PersonTransBuilder): TUserdtl + fun wip(paydtl: TUserdtl): TUserdtl - fun wip(refno: String, builder: PersonTransBuilder): TUserdtl + fun wip(refno: String): TUserdtl } \ No newline at end of file -- 2.17.1