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));
    }
}

results matching ""

    No results matching ""