SmrattaxClient 快速开始
SmarttaxClient旨在为税务用户提供开箱即用的SDK,屏蔽复杂的参数与繁琐的通信流程
语言支持
- [x] JAVA (SpringBoot)
接入流程
1. 引入依赖
Maven
- 在maven settings文件
<servers>
节点内添加:
<server>
<id>rdc-snapshots</id>
<username>YLAUhb</username>
<password></password>
</server>
密码见配置列表
- 工程项目pom文件引入sim-client-starter
<!-- 引入仓库 -->
<repositories>
<repository>
<id>rdc-snapshots</id>
<url>https://repo.rdc.aliyun.com/repository/124956-snapshot-jMwdvf/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<!-- smarttax-client -->
<dependency>
<groupId>net.smarttax</groupId>
<artifactId>sim-client-starter</artifactId>
<version>{版本}</version>
</dependency>
Gradle
allprojects {
repositories {
maven {
credentials {
username 'YLAUhb'
password ''
}
url 'https://repo.rdc.aliyun.com/repository/124956-snapshot-jMwdvf/'
}
}
}
密码见配置列表
目前最新版本为: 1.1.5-SNAPSHOT
2. 配置响应Listener
因税盘多耗时操作,故SmarttaxClient采用异步通信模型,所有的操作结果会异步回调至
net.smarttax.sim.facade.SmarttaxOperationListener
相应方法上。
创建自定义Listener实现
net.smarttax.sim.facade.SmarttaxOperationListener
接口,复写相应方法填充自定义业务实现。添加注解修饰自定义Listener:
net.smarttax.sim.annotation.SmarttaxRespListener
SmarttaxRespListener
Slf4j
public class OperationPrinter implements SmarttaxOperationListener {
@Override
public void blanks(RespDTO<BlanksQueryResp> results) {
log.info(results.toJSONFormat());
}
@Override
public void eInvoiceQuery(RespDTO<InvoiceQueryResp> results) {
log.info(results.toJSONFormat());
}
@Override
public void eInvoice(RespDTO<InvoicingResp> results) {
log.info(results.toJSONFormat());
}
@Override
public void invoiceReversing(RespDTO<InvoicingResp> results) {
log.info(results.toJSONFormat());
}
@Override
public void invoiceCancellation(RespDTO<InvoicingResp> results) {
log.info(results.toJSONFormat());
}
}
3. 开启SmarttaxClient
- 在应用启动类上增加注解并配置响应Listener扫描路径
net.smarttax.sim.annotation.EnableSmarttaxClient
@SpringBootApplication
@EnableSmarttaxClient(scanPackages = "net.smarttax.sdkdemo.listener")
public class SdkDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SdkDemoApplication.class, args);
}
}
4. 添加相应配置
- 在应用配置文件添加相关配置,以yaml为例:
smarttax:
droplet:
enable: true # 开启smarttax client
mock: false # mock模式,保持false
endpoint: 127.0.0.1 # 接入点,以参数列表为准
port: 4567 # 接入端口,以配置参数列表为准
ak: hs2021 # app key, 以配置参数列表为准
sk: 2c8621c5bb364c # secret key, 以配置参数列表为准
tracer: false # @since v1.1.4 默认false关闭, true 打开客户端信息追踪
5. 检查日志
SmarttaxClient会随用户应用启动后根据配置尝试与远程接入点建立连接,当日志输出"hello,[{企业名称}]"
字样表示配置正确且已成功建立连接。
INFO 77351 --- [ntLoopGroup-2-1] n.smarttax.sim.handler.AuthRespHandler : hello, [smarttax_test]
6. SmarttaxClient
6.1 注入SmartaxClient
您可在Spring的上下文中任意注入net.smarttax.sim.facade.SmarttaxClient
并调用相应的业务方法。
@RestController
@RequestMapping("/mock/")
@Slf4j
public class MockController {
private final SmarttaxClient smarttaxClient;
public MockController(SmarttaxClient smarttaxClient) {
this.smarttaxClient = smarttaxClient;
}
@GetMapping("b")
public String blanks(@RequestParam("taxCode")String taxCode
, @RequestParam("deviceCode")String deviceCode
,@RequestParam("invoiceType") InvoiceType invoiceType){
return smarttaxClient.blanks(ReqDTO.build(CommonUtils.buildUUID16()
, taxCode, deviceCode, invoiceType));
}
}