Skip to content

ZUOXIANGE/NuoNuoSdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NuoNuoSdk NuoNuoOpenSdk NuoNuoOpenSdk

诺诺开放平台SDK - 支持 .NET 8/9/10

✨ 特性

  • 🚀 开箱即用:使用强类型模型参数,无需手动拼接参数
  • 🎯 多版本支持:.NET 8、.NET 9、.NET 10
  • 🔧 依赖注入:完美集成 ASP.NET Core 依赖注入容器
  • 📝 完整文档:提供详细的 XML 文档注释
  • 🛡️ 类型安全:强类型请求和响应模型
  • 高性能:使用最新的 .NET 特性优化性能

📦 安装

dotnet add package NuoNuoOpenSdk

🚀 快速开始

1. 配置服务

// 方式一:从配置文件读取
builder.Services.AddNuoNuoSdk(builder.Configuration, "NuoNuo");

// 方式二:直接配置
builder.Services.AddNuoNuoSdk(options =>
{
    options.AppKey = "your_app_key";
    options.AppSecret = "your_app_secret";
    options.UserTax = "your_user_tax";
    options.AccessToken = "your_access_token"; // 可选
    options.Timeout = 30; // 超时时间(秒)
});

2. 配置文件示例 (appsettings.json)

{
  "NuoNuo": {
    "AppKey": "your_app_key",
    "AppSecret": "your_app_secret",
    "UserTax": "your_user_tax",
    "AccessToken": "your_access_token",
    "Timeout": 30
  }
}

3. 使用示例

public class InvoiceController : ControllerBase
{
    private readonly INuoNuoSdk _nuoNuoSdk;
    
    public InvoiceController(INuoNuoSdk nuoNuoSdk)
    {
        _nuoNuoSdk = nuoNuoSdk;
    }
    
    [HttpGet("token")]
    public async Task<IActionResult> GetToken()
    {
        // 获取访问令牌
        var token = await _nuoNuoSdk.GetMerchantTokenAsync();
        return Ok(token);
    }
    
    [HttpGet("stock")]
    public async Task<IActionResult> GetInvoiceStock()
    {
        // 查询发票余量
        var stockRes = await _nuoNuoSdk.GetInvoiceStockAsync(new GetInvoiceStockRequest
        {
            // AccessToken 会自动从配置中获取,也可以手动指定
        });
        return Ok(stockRes);
    }
    
    [HttpPost("billing")]
    public async Task<IActionResult> RequestBilling([FromBody] RequestBillingRequest request)
    {
        // 请求开具发票
        var result = await _nuoNuoSdk.RequestBillingRequest(request);
        return Ok(result);
    }
}

📋 支持的API

  • ✅ 获取访问令牌 (GetMerchantTokenAsync)
  • ✅ ISV获取访问令牌 (GetIsvTokenAsync)
  • ✅ ISV刷新访问令牌 (RefreshIsvTokenAsync)
  • ✅ 企业发票余量查询 (GetInvoiceStockAsync)
  • ✅ 请求开具发票 (RequestBillingRequest)
  • ✅ 开票结果查询 (QueryInvoiceResultAsync)
  • ✅ 开票重试 (ReInvoiceAsync)
  • ✅ 发票重新交付 (DeliveryInvoiceAsync)
  • ✅ 发票作废 (InvoiceCancellationAsync)

🔧 高级用法

自定义HTTP客户端配置

builder.Services.AddNuoNuoSdk(builder.Configuration)
    .ConfigureHttpClient(client =>
    {
        client.Timeout = TimeSpan.FromSeconds(60);
        // 其他自定义配置
    });

错误处理

try
{
    var result = await _nuoNuoSdk.GetInvoiceStockAsync(request);
    if (result.Success)
    {
        // 处理成功结果
        Console.WriteLine($"库存查询成功: {result.Result}");
    }
    else
    {
        // 处理业务错误
        Console.WriteLine($"业务错误: {result.Code} - {result.Describe}");
    }
}
catch (HttpRequestException ex)
{
    // 处理网络错误
    Console.WriteLine($"网络错误: {ex.Message}");
}

📄 许可证

MIT License - 详见 LICENSE 文件

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📞 支持

如有问题,请访问 诺诺开放平台官方文档 或提交 Issue。

About

诺诺开放平台SDK.电子发票等

Topics

Resources

License

Stars

Watchers

Forks

Languages