xiaoyong931011
2023-02-14 098fbb51845dbda46ceed0cfff6e818d3636aa51
微信支付,去掉了auth_code参数
4 files modified
246 ■■■■■ changed files
src/main/java/cc/mrbird/febs/pay/model/JsApiPayReqData.java 56 ●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 2 ●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/PayTest.java 51 ●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/ProfitTest.java 137 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/model/JsApiPayReqData.java
@@ -18,30 +18,30 @@
public class JsApiPayReqData {
    //每个字段具体的意思请查看API文档
    private String appid = "";
    private String mch_id = "";
    private String device_info = "";
    private String nonce_str = "";
    private String sign = "";
    private String body = "";
    private String detail = "";
    private String attach = "";
    private String out_trade_no = "";
    private String fee_type = "";
    private int total_fee = 0;
    private String appid = "";//公众账号ID
    private String mch_id = "";//商户号
    private String device_info = "";//设备号
    private String nonce_str = "";//随机字符串
    private String sign = "";//签名
    private String body = "";//商品描述
    private String detail = "";//商品详情
    private String attach = "";//附加数据
    private String out_trade_no = "";//商户订单号
    private String fee_type = "";//标价币种
    private int total_fee = 0;//标价金额
    /**
     * 接收微信支付异步通知回调地址
     */
    private String trade_type = WechatConfigure.TRADE_TYPE_JSAPI;
    private String notify_url ;
    private String openid = "";
    private String limit_pay = "";
    private String spbill_create_ip = "";
    private String product_id = "";
    private String time_start = "";
    private String time_expire = "";
    private String goods_tag = "";
    private String auth_code = "";
    private String trade_type = WechatConfigure.TRADE_TYPE_JSAPI;//交易类型
    private String notify_url ;//通知地址
    private String openid = "";//用户标识
    private String limit_pay = "";//指定支付方式
    private String spbill_create_ip = "";//终端IP
    private String product_id = "";//商品ID
    private String time_start = "";//交易起始时间
    private String time_expire = "";//交易结束时间
    private String goods_tag = "";//订单优惠标记
//    private String auth_code = "";//
    
    public JsApiPayReqData() {
@@ -268,13 +268,13 @@
        this.goods_tag = goods_tag;
    }
    public String getAuth_code() {
        return auth_code;
    }
    public void setAuth_code(String auth_code) {
        this.auth_code = auth_code;
    }
//    public String getAuth_code() {
//        return auth_code;
//    }
//
//    public void setAuth_code(String auth_code) {
//        this.auth_code = auth_code;
//    }
    public Map<String,Object> toMap(){
        Map<String,Object> map = new HashMap<String, Object>();
src/main/resources/application-dev.yml
@@ -81,4 +81,4 @@
  serviceName: yiyuanshucai
system:
  job: false
  job: true
src/test/java/cc/mrbird/febs/PayTest.java
@@ -1,13 +1,23 @@
package cc.mrbird.febs;
import cc.mrbird.febs.common.properties.XcxProperties;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.common.utils.SpringContextHolder;
import cc.mrbird.febs.pay.util.WechatConfigure;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import com.ijpay.alipay.AliPayApi;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
/**
 * @author wzy
@@ -17,17 +27,36 @@
@SpringBootTest
public class PayTest {
    @Autowired
    private RedisUtils redisUtils;
    @Resource
    RestTemplate restTemplate;
    @Test
    public void aliPay() throws AlipayApiException {
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
        model.setBody("这是测试用");
        model.setSubject("支付测试用的");
        model.setOutTradeNo("2021092712215802974");
        model.setTimeoutExpress("15m");
        model.setTotalAmount("0.01");
        model.setPassbackParams("callback params");
        model.setProductCode("QUICK_MSECURITY_PAY");
        AlipayTradeAppPayResponse resp = AliPayApi.appPayToResponse(model, "");
        log.info("=====>>>{}", JSONObject.toJSONString(resp));
    public void aliPay(){
        String appId = "wxfb1acf504eb9d058";
        String appSecret = "7ee226a964b1be7cfb96f5e0dc739c44";
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
        String jsonStr = restTemplate.getForObject(url, String.class);
        /**
         * 返回结果
         * {"access_token":"ACCESS_TOKEN","expires_in":7200}
         */
        if (!jsonStr.contains("access_token")) {
            System.out.println("获取微信access_token失败");
        }
        String accessTokenKey = WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY;
        JSONObject jsonObject = JSONObject.parseObject(jsonStr);
        String accessToken = jsonObject.getString(accessTokenKey);
        if (StrUtil.isEmpty(accessToken)) {
            log.error("获取access token失败: {}" , jsonObject.getString("errmsg"));
            throw new ApiException("获取access token失败");
        } else {
            log.info("wx access_token : {}",accessToken);
            redisUtils.set(accessTokenKey,accessToken);
        }
    }
}
src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -5,14 +5,17 @@
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.HttpCurlUtil;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.dto.AdminLeaderAddFenceDto;
import cc.mrbird.febs.mall.dto.ApiLeaderRefundOrderDto;
import cc.mrbird.febs.mall.dto.ApiRechargeWalletDto;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
import cc.mrbird.febs.pay.model.WxGenerateQrCodeDto;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.WechatConfigure;
@@ -411,62 +414,88 @@
    @Test
    public void qrcode(){
        MallMember member = mallMemberMapper.selectById(58L);
        Long id = 320L;
        MallMember member = mallMemberMapper.selectById(402L);
//        ApiRechargeWalletDto apiRechargeWalletDto = new ApiRechargeWalletDto();
//        apiRechargeWalletDto.setAmount(new BigDecimal(1));
//        apiRechargeWalletDto.setMemberId(402L);
//        BrandWCPayRequestData brandWCPayRequestData = null;
//        try {
//            brandWCPayRequestData = iXcxPayService.startRechargeWallet(apiRechargeWalletDto);
//        } catch (Exception e) {
//            throw new FebsException("支付失败");
//        }
//        String wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData);
//        String payResultStr = brandWCPayRequestData.getPrepay_id();
//        Map<String, Object> map = new HashMap<>();
//        map.put("orderInfo", payResultStr);
//        map.put("wxResultStr", wxResultStr);
        Long id = 345417L;
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderInfo)){
        BrandWCPayRequestData brandWCPayRequestData = null;
        try {
            brandWCPayRequestData = iXcxPayService.startPayment(mallOrderInfo);
        } catch (Exception e) {
            throw new FebsException("支付失败");
        }
        Integer status = mallOrderInfo.getStatus();
        if(OrderStatusEnum.WAIT_SHIPPING.getValue() != status){
        }
        Integer deliveryState = mallOrderInfo.getDeliveryState();
        if(1 != deliveryState){
        }
        //根据子订单生成退款记录
        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id);
        if(CollUtil.isEmpty(mallOrderItemList)){
        }
        for(MallOrderItem mallOrderItem : mallOrderItemList){
            QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>();
            objectQueryWrapper.eq("member_id",member.getId());
            objectQueryWrapper.eq("order_id",mallOrderInfo.getId());
            objectQueryWrapper.eq("item_id",mallOrderItem.getId());
            MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper);
            MallRefundEntity mallRefundEntity = new MallRefundEntity();
            if(ObjectUtil.isEmpty(mallRefund)){
                mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+mallOrderItem.getId());
                mallRefundEntity.setMemberId(member.getId());
                mallRefundEntity.setOrderId(mallOrderInfo.getId());
                mallRefundEntity.setItemId(mallOrderItem.getId());
                if("余额支付".equals(mallOrderInfo.getPayMethod())){
                    mallRefundEntity.setType(3);
                }else if("微信支付".equals(mallOrderInfo.getPayMethod())){
                    mallRefundEntity.setType(1);
                }else{
                    mallRefundEntity.setType(3);
                }
                mallRefundEntity.setState(3);
                mallRefundEntity.setAmount(mallOrderItem.getAmount());
                mallRefundMapper.insert(mallRefundEntity);
            }else{
                if(mallRefund.getState() == 2){
                    mallRefundEntity.setId(mallRefund.getId());
                    mallRefundEntity.setRefundNo(mallRefund.getRefundNo());
                    mallRefundEntity.setMemberId(mallRefund.getMemberId());
                    mallRefundEntity.setOrderId(mallRefund.getOrderId());
                    mallRefundEntity.setItemId(mallRefund.getItemId());
                    mallRefundEntity.setType(mallRefund.getType());
                    mallRefundEntity.setState(3);
                    mallRefundEntity.setAmount(mallRefund.getAmount());
                    mallRefundMapper.updateById(mallRefundEntity);
                }
            }
            ApiLeaderRefundOrderDto apiLeaderRefundOrderDto = new ApiLeaderRefundOrderDto();
            apiLeaderRefundOrderDto.setOrderId(mallOrderInfo.getId());
            apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId());
            apiLeaderRefundOrderDto.setAgreeState(1);
            iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
        }
        String s = JSONUtil.toJsonStr(brandWCPayRequestData);
        String prepay_id = brandWCPayRequestData.getPrepay_id();
//        if(ObjectUtil.isEmpty(mallOrderInfo)){
//        }
//        Integer status = mallOrderInfo.getStatus();
//        if(OrderStatusEnum.WAIT_SHIPPING.getValue() != status){
//        }
//        Integer deliveryState = mallOrderInfo.getDeliveryState();
//        if(1 != deliveryState){
//        }
//        //根据子订单生成退款记录
//        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id);
//        if(CollUtil.isEmpty(mallOrderItemList)){
//        }
//        for(MallOrderItem mallOrderItem : mallOrderItemList){
//            QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>();
//            objectQueryWrapper.eq("member_id",member.getId());
//            objectQueryWrapper.eq("order_id",mallOrderInfo.getId());
//            objectQueryWrapper.eq("item_id",mallOrderItem.getId());
//            MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper);
//            MallRefundEntity mallRefundEntity = new MallRefundEntity();
//            if(ObjectUtil.isEmpty(mallRefund)){
//                mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+mallOrderItem.getId());
//                mallRefundEntity.setMemberId(member.getId());
//                mallRefundEntity.setOrderId(mallOrderInfo.getId());
//                mallRefundEntity.setItemId(mallOrderItem.getId());
//                if("余额支付".equals(mallOrderInfo.getPayMethod())){
//                    mallRefundEntity.setType(3);
//                }else if("微信支付".equals(mallOrderInfo.getPayMethod())){
//                    mallRefundEntity.setType(1);
//                }else{
//                    mallRefundEntity.setType(3);
//                }
//                mallRefundEntity.setState(3);
//                mallRefundEntity.setAmount(mallOrderItem.getAmount());
//                mallRefundMapper.insert(mallRefundEntity);
//            }else{
//                if(mallRefund.getState() == 2){
//                    mallRefundEntity.setId(mallRefund.getId());
//                    mallRefundEntity.setRefundNo(mallRefund.getRefundNo());
//                    mallRefundEntity.setMemberId(mallRefund.getMemberId());
//                    mallRefundEntity.setOrderId(mallRefund.getOrderId());
//                    mallRefundEntity.setItemId(mallRefund.getItemId());
//                    mallRefundEntity.setType(mallRefund.getType());
//                    mallRefundEntity.setState(3);
//                    mallRefundEntity.setAmount(mallRefund.getAmount());
//                    mallRefundMapper.updateById(mallRefundEntity);
//                }
//            }
//            ApiLeaderRefundOrderDto apiLeaderRefundOrderDto = new ApiLeaderRefundOrderDto();
//            apiLeaderRefundOrderDto.setOrderId(mallOrderInfo.getId());
//            apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId());
//            apiLeaderRefundOrderDto.setAgreeState(1);
//            iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
//        }
    }
    /**