Selaa lähdekoodia

微信回调,增加日志操作

chenyongxing 6 vuotta sitten
vanhempi
commit
de5d104b6f

+ 2 - 0
business/base-service/src/main/java/com/yihu/jw/wechat/dao/WxPayLogDao.java

@ -2,6 +2,7 @@ package com.yihu.jw.wechat.dao;
import com.yihu.jw.entity.base.wx.WxPayLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
@ -9,5 +10,6 @@ import java.util.List;
public interface WxPayLogDao extends PagingAndSortingRepository<WxPayLogDO, String>, JpaSpecificationExecutor<WxPayLogDO> {
    @Query("from WxPayLogDO a where a.seqNo=?1 order by createTime desc")
    List<WxPayLogDO> findBySeqNo(String seqNo);
}

+ 12 - 0
common/common-util/src/main/java/com/yihu/jw/util/wechat/WeiXinPayUtils.java

@ -84,6 +84,18 @@ public class WeiXinPayUtils {
        }
    }
    public static Map<String,Object> unifiedorder(String param,boolean withResult) throws Exception {
        synchronized (WeiXinPayUtils.class) {
            String result = HttpUtil.sendPost("https://api.mch.weixin.qq.com/pay/unifiedorder", param);
            Map<String,Object> wxrs =  XMLUtil.xmltoMap(result);
            if(withResult){
                wxrs.put("wxPayResult",wxrs);
            }
            return wxrs;
        }
    }
    /**
     * 获取随机字符串 Nonce Str
     *

+ 12 - 5
svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/wechat/WechatPayController.java

@ -1,11 +1,13 @@
package com.yihu.jw.patient.endpoint.wechat;
import com.yihu.jw.patient.service.wechat.WechatPayService;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.patient.PatientRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
@ -33,14 +35,19 @@ public class WechatPayController extends EnvelopRestEndpoint {
    @ApiOperation("服务包下单")
    @RequestMapping(value = "createPayOrder", method = RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> unifiedorder(@ApiParam(name = "openid", value = "openid", required = true)
    public Map<String, Object> unifiedorder(
                             @ApiParam(name = "wechatId", value = "wechatId", required = false)
                             @RequestParam(required = false)String wechatId,
                             @ApiParam(name = "openid", value = "openid", required = true)
                             @RequestParam(required = true)String openid,
                                           @ApiParam(name = "ip", value = "终端IP(患者)", required = true)
                             @ApiParam(name = "ip", value = "终端IP(患者)", required = true)
                             @RequestParam(required = true)String ip,
                                           @ApiParam(name = "orderId", value = "订单号[base_service_package_sign_record 的id字段用作与订单id]", required = true)
                             @ApiParam(name = "orderId", value = "订单号[base_service_package_sign_record 的id字段用作与订单id]", required = true)
                             @RequestParam(required = true)String orderId) throws Exception {
        return wechatPayService.unifiedorder(wxId,openid,ip,orderId);
        if(StringUtils.isNotBlank(wechatId)){
            wxId = wechatId;
        }
        return wechatPayService.unifiedorder(wxId, openid, ip, orderId);
    }
    @ResponseBody

+ 16 - 1
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/wechat/WechatPayService.java

@ -1,12 +1,14 @@
package com.yihu.jw.patient.service.wechat;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.entity.base.wx.WxPayLogDO;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.patient.dao.servicepackage.ServicePackageSignRecordDao;
import com.yihu.jw.rm.patient.PatientRequestMapping;
import com.yihu.jw.util.common.XMLUtil;
import com.yihu.jw.util.wechat.WeiXinPayUtils;
import com.yihu.jw.wechat.dao.WechatDao;
import com.yihu.jw.wechat.dao.WxPayLogDao;
import com.yihu.jw.wechat.service.WxPayLogService;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
@ -14,7 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@ -26,6 +30,8 @@ public class WechatPayService {
    private ServicePackageSignRecordDao servicePackageSignRecordDao;
    @Autowired
    private WxPayLogService wxPayLogService;
    @Autowired
    private WxPayLogDao wxPayLogDao;
    /**
@ -36,9 +42,10 @@ public class WechatPayService {
    @Transactional(rollbackFor = Exception.class)
    public Map<String,Object> unifiedorder(Map<String,String> par,String appKey) throws Exception {
        String xml = WeiXinPayUtils.getXmlBeforUnifiedorder(par, appKey);
        Map<String, Object> map = WeiXinPayUtils.unifiedorder(xml);
        Map<String, Object> map = WeiXinPayUtils.unifiedorder(xml,true);
        //创建日志记录
        wxPayLogService.createLog(par,xml,map);
        map.remove("wxPayResult");
        return map;
    }
@ -118,6 +125,14 @@ public class WechatPayService {
            spsr.setStatus(2);
            servicePackageSignRecordDao.save(spsr);
            //操作微信日志表记录
            List<WxPayLogDO> wxPayLogDOs = wxPayLogDao.findBySeqNo(seqNo);
            WxPayLogDO wxPayLogDO = wxPayLogDOs.get(0);
            wxPayLogDO.setPayResponse(result);
            wxPayLogDO.setPayStatus(1);
            wxPayLogDO.setPayTime(new Date());
            wxPayLogDO.setPayStatus(1);
            wxPayLogService.save(wxPayLogDO);
            rs.put("code","1");
            rs.put("message","支付成功");
        }else{