Appearance
代码示例
备注
- 解压方法 发票实时归集小节的最后
java
import cn.hutool.core.codec.Base64;
import cn.hutool.crypto.digest.HMac;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.my.mytest.utils.ZipUtil;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
public class InvoiceServiceMain {
private static final String APP_ID = "yourAppId";
private static final String APP_SECRET = "yourAppSecret";
private static final String NSRSBH = "yourNsrsbh";
private static final String JTNSRSBH = "yourJtnsrsbh";
private static final String URL = "yourUrl";
public static void main(String[] args) {
String url = URL + "S000601";
JSONObject object = new JSONObject();
object.put("appid", APP_ID);
object.put("serviceid", "S000522");
object.put("nsrsbh", NSRSBH);
object.put("jtnsrsbh", JTNSRSBH);
JSONObject con = new JSONObject();
con.put("sjlx", "1");
con.put("fplx", "81,82,83,84,85,86,08,10,01,04,03,15,11,14,61,51");
con.put("fpzt", "01,02,03,04");
con.put("kprqq", LocalDate.now().minusMonths(11).withDayOfMonth(1).toString());
con.put("kprqz", LocalDate.now().minusMonths(1).withDayOfMonth(LocalDate.now().minusMonths(1).lengthOfMonth()).toString());
con.put("iszip", "1");
object.put("con", con);
String contentJson = JSON.toJSONString(con);
String contentBase64 = Base64.encode(contentJson);
String signType = "1"; // 或者 "0"
String signature;
if ("0".equals(signType)) {
String toSign = String.format("appid=%s&content=%s&jtnsrsbh=%s&nsrsbh=%s&serviceid=%s",
object.get("appid"), contentBase64, object.get("jtnsrsbh"), object.get("nsrsbh"), object.get("serviceid"));
HMac hMac = new HMac("HmacSHA256", APP_SECRET.getBytes(StandardCharsets.UTF_8));
signature = Base64.encode(hMac.digest(toSign));
} else {
String toSign = object.get("appid") + APP_SECRET + contentBase64 + object.get("jtnsrsbh") + object.get("nsrsbh") + object.get("serviceid");
signature = MD5.create().digestHex(toSign).toUpperCase();
}
HttpRequest form = HttpRequest.post(url)
.header("Content-Type", "application/x-www-form-urlencoded")
.form("appid", object.get("appid"))
.form("serviceid", object.get("serviceid"))
.form("nsrsbh", object.get("nsrsbh"))
.form("jtnsrsbh", object.get("jtnsrsbh"))
.form("content", contentBase64)
.form("signature", signature)
.form("signType", signType);
System.out.println("Request: " + form.toString());
String response = form.execute().body();
System.out.println("Response: " + response);
JSONObject jsonObject = JSON.parseObject(response);
String respContent = jsonObject.getString("content");
System.out.println("解压后内容: " + ZipUtil.unzipDecode(respContent, "1".equals(con.get("iszip"))));
}
}