KKSU
2024-01-16 67dd3f9631b9c0919884061e7b8053a16fe8d6b0
src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -13,7 +13,9 @@
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.mall.vo.MallMemberCouponVo;
import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
import cc.mrbird.febs.pay.model.HeaderDto;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.service.WxFaPiaoService;
import cc.mrbird.febs.pay.util.WechatConfigure;
import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
import cn.hutool.core.collection.CollUtil;
@@ -22,10 +24,17 @@
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.HttpUrl;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
@@ -33,6 +42,8 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@@ -40,6 +51,7 @@
import java.math.BigDecimal;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.security.KeyPair;
import java.util.*;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
@@ -89,18 +101,81 @@
    private MallGoodsMapper mallGoodsMapper;
    @Autowired
    private CouponGoodsMapper couponGoodsMapper;
    @Autowired
    private WxFaPiaoService wxFaPiaoService;
    @Autowired
    ResourceLoader resourceLoader;
    @Test
    public void rankProfit() {
//        memberProfitService.rankProfit();
        MallMemberCouponDto mallMemberCouponDto = new MallMemberCouponDto();
        mallMemberCouponDto.setMemberId(72L);
        mallMemberCouponDto.setExpireTime(DateUtil.date());
        List<Long> couponIds = couponGoodsMapper.selectByGoodId(10L);
        List<MallMemberCouponVo> mallMemberCouponVos = new ArrayList<>();
        if(CollUtil.isNotEmpty(couponIds)){
            mallMemberCouponVos = mallMemberCouponMapper.selectListCreateInPage(mallMemberCouponDto,couponIds);
            System.out.println(mallMemberCouponVos);
    public void rankProfit() throws IOException {
//        System.out.println(new ClassPathResource("wxP12/apiclient_cert.p12").getFile().exists());
//        System.out.println(new File("src/main/resources/wxP12/apiclient_cert.p12").exists());
//
//        InputStream inputStream = new FileInputStream(file);
//        System.out.println(resourceLoader.getResource("classpath:/wxP12/apiclient_cert.p12").exists());
        KeyPair privateKey = wxFaPiaoService.getPrivateKey();
        HeaderDto headerDto = new HeaderDto();
        headerDto.setCallback_url("https://api.blnka.cn/api/xcxPay/fapiaoCallBack");
        headerDto.setShow_fapiao_cell(true);
        String parseObj = JSONUtil.parseObj(headerDto).toString();
        String baseUrl = "https://api.mch.weixin.qq.com";
        String canonicalUrl = "/v3/new-tax-control-fapiao/merchant/development-config";
        String postStr = wxFaPiaoService.createAuthorization(
                "POST",
                canonicalUrl,
                parseObj,
                privateKey
        );
        // 创建httppost
        try {
            HttpClient httpClient = new HttpClient();
            PostMethod post = new PostMethod("https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/merchant/development-config");
            post.setRequestHeader("Accept", "application/json");
            post.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36");
            post.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
            post.setRequestHeader("Connection", "keep-alive");
            post.setRequestHeader("Authorization",  "WECHATPAY2-SHA256-RSA2048 "+postStr);
            RequestEntity entity = new StringRequestEntity(parseObj, "text/html", "utf-8");
            post.setRequestEntity(entity);
            httpClient.executeMethod(post);
            String responseBodyAsString = post.getResponseBodyAsString();
            cn.hutool.json.JSONObject maps = JSONUtil.parseObj(responseBodyAsString);
            System.out.println(maps);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void rankProfit2() throws IOException {
        KeyPair privateKey = wxFaPiaoService.getPrivateKey();
        String baseUrl = "https://api.mch.weixin.qq.com";
        String canonicalUrl = "/v3/new-tax-control-fapiao/merchant/development-config";
        String postStr = wxFaPiaoService.createAuthorization(
                "GET",
                canonicalUrl,
                "",
                privateKey
        );
        try {
            HttpClient httpClient = new HttpClient();
            GetMethod method = new GetMethod(baseUrl+canonicalUrl);
            method.setRequestHeader("Accept", "application/json");
            method.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36");
            method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
            method.setRequestHeader("Connection", "keep-alive");
            method.setRequestHeader("Authorization", "WECHATPAY2-SHA256-RSA2048 "+postStr);
            httpClient.executeMethod(method);
            System.out.println(method);
            String responseBodyAsString = method.getResponseBodyAsString();
            cn.hutool.json.JSONObject maps = JSONUtil.parseObj(responseBodyAsString);
            System.out.println(maps);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }