|
|
@@ -12,12 +12,16 @@ import com.kym.common.config.WxPayConfig;
|
|
|
import com.kym.common.constant.ResponseEnum;
|
|
|
import com.kym.common.exception.BusinessException;
|
|
|
import com.kym.common.utils.CommUtil;
|
|
|
+import com.kym.common.utils.HttpUtil;
|
|
|
import com.kym.common.utils.LambadaTools;
|
|
|
import com.kym.common.utils.OrderUtils;
|
|
|
import com.kym.entity.miniapp.Account;
|
|
|
import com.kym.entity.miniapp.PayLog;
|
|
|
import com.kym.entity.miniapp.RefundLog;
|
|
|
import com.kym.entity.miniapp.WalletDetail;
|
|
|
+import com.kym.entity.wechat.FaPiao;
|
|
|
+import com.kym.entity.wechat.InvoiceBaseInfo;
|
|
|
+import com.kym.entity.wechat.TaxCodes;
|
|
|
import com.kym.service.miniapp.*;
|
|
|
import com.kym.service.wechat.WxPayService;
|
|
|
import com.wechat.pay.java.core.Config;
|
|
|
@@ -36,6 +40,7 @@ import com.wechat.pay.java.service.refund.model.*;
|
|
|
import jakarta.annotation.PostConstruct;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import lombok.SneakyThrows;
|
|
|
+import okhttp3.Headers;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.core.io.ClassPathResource;
|
|
|
@@ -498,4 +503,58 @@ public class WxPayServiceImpl implements WxPayService {
|
|
|
throw new BusinessException("验签失败");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取商户开票基础信息
|
|
|
+ */
|
|
|
+ private InvoiceBaseInfo baseInformation() {
|
|
|
+ var url = "https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/merchant/base-information";
|
|
|
+ Headers headers = Headers.of(
|
|
|
+ "Authorization", "",
|
|
|
+ "Accept", "application/json",
|
|
|
+ "Content-Type", "application/json"
|
|
|
+ );
|
|
|
+ var res = HttpUtil.post(url, headers);
|
|
|
+ return JSONObject.parseObject(res).toJavaObject(InvoiceBaseInfo.class);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取商户可开具的商品和服务税收分类编码对照表
|
|
|
+ */
|
|
|
+ private TaxCodes.TaxCodeItem getTaxCodes() {
|
|
|
+ var url = "https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/merchant/tax-codes";
|
|
|
+ Headers headers = Headers.of(
|
|
|
+ "Authorization", "",
|
|
|
+ "Accept", "application/json"
|
|
|
+ );
|
|
|
+ var params = """
|
|
|
+ {
|
|
|
+ "offset" : %d,
|
|
|
+ "limit" :%d
|
|
|
+ }
|
|
|
+ """.stripIndent().formatted(0, 100);
|
|
|
+ var res = HttpUtil.post(url, params, headers);
|
|
|
+ return JSONObject.parseObject(res).toJavaObject(TaxCodes.TaxCodeItem.class);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 申请发票
|
|
|
+ */
|
|
|
+ public void applyInvoice() {
|
|
|
+ var url = "https://api.mch.weixin.qq.com/v3/new-tax-control-fapiao/fapiao-applications";
|
|
|
+ Headers headers = Headers.of(
|
|
|
+ "Authorization", "",
|
|
|
+ "Accept", "application/json",
|
|
|
+ "Content-Type", "application/json",
|
|
|
+ "Wechatpay-Serial", "6A45EEB068369430B2FFD45EA29F641A8E18165F"
|
|
|
+ );
|
|
|
+
|
|
|
+ var invoiceId = OrderUtils.getOrderNo();
|
|
|
+ var fapiao = new FaPiao();
|
|
|
+ var res = HttpUtil.post(url, JSONObject.toJSONString(fapiao), headers);
|
|
|
+ }
|
|
|
+
|
|
|
}
|