• ﺭﺍﻫﻨﻤﺎی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ SDK ﺩﺍﺕ ﻧﺖ در اتصال به سامانه مودیان

    ﺭﺍﻫﻨﻤﺎی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ SDK ﺩﺍﺕ ﻧﺖ در اتصال به سامانه مودیان
    این پست شامل فایل دانلود می باشد مشاهده

    1. ﻣﻘﺪﻣﻪ

    ﺩﺭ ﺍﻳﻦ ﺳﻨﺪ ﺭﺍﻫﻨﻤﺎی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ SDK ﺩﺍﺕ ﻧﺖ ﺟﻬﺖ ﺳﻬﻮﻟﺖ ﺩﺭ ﺍﺗﺼﺎﻝ ﺑﻪ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ ﺷﺮﺡ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ. API ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ ﺍﺯ ﺩﻭ ﻻﻳﻪ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ، ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ ﻭ ﻻﻳﻪ ﻣﻔﻬﻮﻡ. ﺩﺭ ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ ﻣﺴﺘﻘﻞ ﺍﺯ ﺍﻳﻨﻜﻪ ﭼﻪ ﻧﻮﻉ ﺩﺍﺩﻩ ﺍﻱ ﺗﺒﺎﺩﻝ ﻣﻴﺸﻮﺩ، ﻭﻇﺎﻳﻒ ﺭﻣﺰﻧﮕﺎﺭی ﻭ ﺍﻣﻀﺎﻱ ﺑﺴﺘﻪ ﺭﺍ ﺑﺮ ﻋﻬﺪﻩ ﺩﺍﺭﺩ. ﺩﺭ ﻻﻳﻪ ﻣﻔﻬﻮﻡ، ﺍﻧﻮﺍﻉ ﺑﺴﺘﻪ ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﻭ ﺑﺴﺘﻪ ﻫﺎ ﺍﺯ ﻃﺮﻳﻖ ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ ﺑﻪ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ ﺍﺭﺳﺎﻝ ﻣﻴﺸﻮﺩ. ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺍﻳﻦ ﻻﻳﻪ ﻫﺎ ﺩﻭ Api ﻣﺴﺘﻘﻞ ﻃﺮﺍحی ﺷﺪﻩ ﺍﺳﺖ. ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺑﺴﺘﻪ ﺟﺪﻳﺪﻱ ﺑﻪ ﺳﺎﻣﺎﻧﻪ ﺍﺿﺎﻓﻪ ﺷﻮﺩ، ﺗﻨﻬﺎ ﻛﺎفی ﺍﺳﺖ ﻛﻪ Api ﻻﻳﻪ ﻣﺤﺘﻮﺍ ﺑﺮﻭﺯﺭﺳﺎنی ﺷﻮﺩ ﻭ ﻳﺎ ﻣﻴﺘﻮﺍﻥ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ Api ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ ﺑﺴﺘﻪ ﻫﺎی ﺟﺪﻳﺪ ﺭﺍ ﺍﺭﺳﺎﻝ ﻛﺮﺩ.

    1.1. ﺷﺮﻭﻉ ﺳﺮﻳﻊ

    ﺑﺮﺍی ﺷﺮﻭﻉ ﺳﺮﻳﻊ ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﻛﺘﺎﺑﺨﺎﻧﻪ‌ﻫﺎی ﺍﺻﻠﻲ ﺭﺍ ﺩﺍﻧﻠﻮﺩ ﻭ ﺑﻪ ﭘﺮﻭﮊﻩ ﺍﺿﺎﻓﻪ ﻛﺮﺩﻩ ﻭ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﺪ ﺯﻳﺮ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺭﺍ ﺍﺭﺳﺎﻝ ﻛﻨﻴﺪ. ﮔﺮﻓﺘﻦ ﺍﻃﻼﻋﺎﺕ ﺳﺮﻭﺭ ﺗﻨﻬﺎ ﻳﻚ ﺑﺎﺭ ﺑﺮﺍی ﺩﺭﻳﺎﻓﺖ ﻛﻠﻴﺪ ﻋﻤﻮمی ﺳﺎﺯﻣﺎﻥ ﻭ ﮔﺮﻓﺘﻦ ﺗﻮﻛﻦ ﺩﺳﺘﺮسی ﺩﺭ ﺻﻮﺭﺕ منقضی ﺷﺪﻥ ﺁﻥ ﺗﻜﺮﺍﺭ می‌ﺷﻮﺩ.

    TaxApiService.Instance.Init(CLIENT_ID, new SignatoryConfig(PRIVATE_KEY, null)); 
    TaxApiService.Instance.TaxApis.GetServerInformation();
    TaxApiService.Instance.TaxApis.RequestToken();
    new InvoiceDto= InvoiceDto invoiceDto ();
    new List<InvoiceDto> = var invoices 
    { 
    invoiceDto 
    }; 
    TaxApiService.Instance.TaxApis.SendInvoices(invoices); 
     

    1.2. ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ

     ﻭﻇﻴﻔﻪ ﺍﻳﻦ ﻻﻳﻪ ﺍﺭﺳﺎﻝ ﺑﺴﺘﻪ ﺑﻪ ﺻﻮﺭﺕ ﻫﻤﮕﺎﻡ ﻭ ﻳﺎ ﻧﺎﻫﻤﮕﺎﻡ ﺳﻤﺖ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ ﺍﺳﺖ. ﺭﻣﺰﻧﮕﺎﺭی ﻭ ﺍﻣﻀﺎی ﺑﺴﺘﻪ ﻫﺎ ﻧﻴﺰ ﺗﻮﺳﻂ ﺍﻳﻦ ﻻﻳﻪ ﺻﻮﺭﺕ می ﭘﺬﻳﺮﺩ.

    1.2.1. ﭘﻴﻜﺮﺑﻨﺪی ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ

     ﺑﺮﺍﻱ ﭘﻴﻜﺮﺑﻨﺪی ﺩﻭ ﺭﺍﻩ ﻭﺟﻮﺩ ﺩﺍﺭﺩ. ﺭﺍﻩ ﺍﻭﻝ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﻼﺱ TaxApiService ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺍﺩﺍﻣﻪ ﺗﻮﺿﻴﺢ می‌ﺩﻫﻴﻢ. ﺭﺍﻩ ﺩﻭﻡ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ Dependency Injection ﺍﺳﺖ.

    1.2.2. ﭘﻴﻜﺮﺑﻨﺪی ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﻼﺱ TaxApiService

     ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﻛﻼﺱ TaxApiService ﻧﻴﺎﺯ ﺍﺳﺖ ﻛﻪ ﺍﺑﺘﺪﺍ ﺁﻥ ﺭﺍ ﭘﻴﻜﺮﺑﻨﺪی ﻛﻨﻴﻢ. ﺍﻳﻦ ﻛﻼﺱ ﻳﻚ ﺗﺎﺑﻊ Init ﺑﺎ ۲ ﭘﻴﺎﺩﻩ ﺳﺎﺯی ﺩﺍﺭﺩ ﻛﻪ ﺗﻌﺪﺍﺩی ﻭﺭﻭﺩی می‌ﮔﻴﺮﺩ. ﺍﻳﻦ ﻭﺭﻭﺩی‌ﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻫﺴﺘﻨﺪ.

    ﻭﺭﻭﺩﻱ

    ﻧﻮﻉ ﻭﺭﻭﺩﻱ

    ﻣﻘﺎﺩﻳﺮ ﭘﻴﺶ ﻓﺮﺽ

    ﺗﻮﺿﻴﺤﺎﺕ

    clientId

    String

    Null

    ﺷﻨﺎﺳﻪ ﻛﻼﻳﻨﺖ ﺩﺭﺧﻮﺍﺳﺖ ﺩﻫﻨﺪﻩ

    signatoryConfig

    SignatoryConfig

    Null

    ﻛﺎﻧﻔﻴﮓ ﻣﺮﺑﻮﻁ ﺑﻪ ﺍﻣﻀﺎﻱ ﻳﻚ ﺭﺷﺘﻪ، ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻳﻨﻜﻪ ﺍﺯ ﭼﻪ

    ﻣﻜﺎﻧﻴﺰﻣﻲ ﺑﺮﺍﻱ ﺍﻣﻀﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ، (ﺗﻮﻛﻦ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ،

    ﺳﺨﺖ ﺍﻓﺰﺍﺭﻱ، (...

    ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﻼﺱ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪﻩ

    ﺍﺳﺖ. ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺩﻳﮕﺮ ﺗﺎﺑﻊ Init ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ

    ﻛﻪ ﻭﺭﻭﺩﻱ signatoryConfig ﺭﺍ ﻧﺪﺍﺭﺩ ﺑﻪ ﭼﺎﻱ ﺁﻥ ﺑﺎﻳﺪ

    ﻛﻼﺱ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺍﻣﻀﺎ ﺑﻪ ﺻﻮﺭﺕ ﺟﻨﺮﻳﻚ ﺑﻪ ﺗﺎﺑﻊ Init ﺩﺍﺩﻩ

    ﺷﻮﺩ .

    ﻧﻜﺘﻪ : ﻛﻼﺱ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺍﻣﻀﺎ ﺑﺎﻳﺪ ﺣﺘﻤﺎ ﺍﻳﻨﺘﺮﻓﻴﺲ

    ISignatory ﺭﺍ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻛﻨﺪ ﻛﻪ ﺷﺎﻣﻞ ﺩﻭ ﺗﺎﺑﻊ Sign

    GetKeyId ﺍﺳﺖ ﻛﻪ ﺑﺎﻳﺴﺘﻲ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺷﻮﻧﺪ .

    ﺩﺭ SDK ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ InMemorySignatory ﻗﺮﺍﺭ ﺩﺍﺩﻩ

    ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ ﻛﻠﻴﺪ ﺧﺼﻮﺻﻲ ﺩﺭ ﺭﻡ ﻧﮕﻬﺪﺍﺭﻱ ﻣﻴﺸﻮﺩ. ﺩﺭ

    ﺻﻮﺭﺗﻲ ﻛﻪ ﻣﻲ ﺧﻮﺍﻫﻴﺪ ﺍﺯ ﺍﻳﻦ ﻛﻼﺱ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ ﺑﺎﻳﺪ

    ﻭﺭﻭﺩﻱ signatoryConfig ﺭﺍ ﺑﻪ ﺗﺎﺑﻊ Init ﺑﺪﻫﻴﺪ .

    baseUrl

    String

    https://tp.tax.gov.ir/req/api/self-

    tsp

    ﺁﺩﺭﺱ ﭘﺎﻳﻪ ﺍﺗﺼﺎﻝ ﺑﻪ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ. ﺍﻳﻦ ﺁﺩﺭﺱ ﺑﺮ ﺍﺳﺎﺱ

    ﺍﻳﻨﻜﻪ ﺑﻪ ﭼﻪ ﺳﺮﻭﺭﻱ (ﻋﻤﻠﻴﺎﺗﻲ، ﺁﺯﻣﺎﻳﺸﻲ) ﻗﺮﺍﺭ ﺍﺳﺖ ﻣﺘﺼﻞ

    ﺷﻮﻧﺪ ﻣﺘﻔﺎﻭﺕ ﺧﻮﺍﻫﺪ ﺑﻮﺩ .

    apiVersion

    String

    ﺧﺎﻟﻲ

    ﺷﻤﺎﺭﻩ ﻧﺴﺨﻪ API ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ

    encryptionConfig

    EncryptionConfig

    null

    ﻛﻼﺱ ﻣﺮﺑﻮﻁ ﺑﻪ ﻛﺎﻧﻔﻴﮓ ﺭﻣﺰﻧﮕﺎﺭﻱ ﺑﺴﺘﻪ ﻫﺎ ﺟﻬﺖ ﺍﺭﺳﺎﻝ ﺑﻪ

    ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ

    ﺍﻳﻦ ﻛﻼﺱ ﺩﺍﺭﺍﻱ ﺳﺎﺯﻧﺪﻩ ﺍﻱ ﺷﺎﻣﻞ ﺩﻭ ﻭﺭﻭﺩﻱ ﺯﻳﺮ ﺍﺳﺖ :

    : taxOrgPublicKey ﻛﻠﻴﺪ ﻋﻤﻮﻣﻲ ﺳﺎﺯﻣﺎﻥ

    : encryptionKeyId ﺷﻨﺎﺳﻪ ﻛﻠﻴﺪ ﺭﻣﺰﻧﮕﺎﺭﻱ

    ﻧﻜﺘﻪ : ﺩﺭ ﺻﻮﺭﺕ ﭘﺮ ﻧﻜﺮﺩﻥ ﺍﻳﻦ ﻛﺎﻧﻔﻴﮓ ﺑﺎﻳﺪ ﻗﺒﻞ ﺍﺯ

    ﻓﺮﺍﺧﻮﺍﻧﻲ ﻫﺮﻛﺪﺍﻡ ﺍﺯ api ﻫﺎ ﺑﺎﻳﺪ

    GetServerInformation() api ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻧﻤﺎﻳﻴﺪ ﺗﺎ ﺩﻭ

    ورودی قبلی به طور خودکار پر شوند

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    TaxApiService.Instance.Init(CLIENT_ID, new SignatoryConfig(PRIVATE_KEY, null)) ;

     ﻧﻤﻮﻧﻪ ﭘﻴﻜﺮﺑﻨﺪی ﭘﻴﭽﻴﺪﻩ ﺗﺮ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ. API_VERSION ﻧﺴﺨﻪ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺻﻮﺭﺕ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺴﺨﻪ ﺟﺪﻳﺪ ﺑﺎﻳﺪ ﺑﺮﺍﺑﺮ ﺑﺎ ﻣﻘﺪﺍﺭ ” v1 ” ﺑﺎﺷﺪ.

    TaxApiService.Instance.Init(CLIENT_ID ,new SignatoryConfig(PRIVATE_KEY, null) ,"https://tp.tax.gov.ir/req/api/self-tsp ",API_VERSION , new EncryptionConfig(ORG_PUBLIC_KEY, ORG_KEY_ID));

    دﺭ ﺻﻮﺭتی ﻛﻪ ﺑﺨﻮﺍﻫﻴﺪ ﺍﺯ ﻛﻼﺱ ﺍﻣﻀﺎی ﺩﻟﺨﻮﺍﻩ ﺧﻮﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ، ﺑﺎﻳﺪ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﭘﻴﻜﺮﺑﻨﺪی ﻛﻨﻴﺪ. CustomSignatory ﻛﻼﺱ ﺍﻣﻀﺎی ﺩﻟﺨﻮﺍﻩ ﺍﺳﺖ ﻛﻪ ﺣﺘﻤﺎ ﺑﺎﻳﺪ ﺍﻳﻨﺘﺮﻓﻴﺲ ISignatory ﺭﺍ ﭘﻴﺎﺩﻩ ﺳﺎﺯی ﻛﻨﺪ.

    TaxApiService.Instance.Init<CustomSignatory>(CLIENT_ID) ;

    ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻧﻤﻮﻧﻪ ﭘﻴﻜﺮﺑﻨﺪی ﭘﻴﭽﻴﺪﻩ‌ﺗﺮ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ. API_VERSION ﻧﺴﺨﻪ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺻﻮﺭﺕ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺴﺨﻪ ﺟﺪﻳﺪ ﺑﺎﻳﺪ ﺑﺮﺍﺑﺮ ﺑﺎ ﻣﻘﺪﺍﺭ ” v1 ” ﻭ ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ ﺻﻮﺭﺕ ﺧﺎلی ﺑﺎﺷﺪ.

    TaxApiService.Instance.Init<CustomSignatory>(CLIENT_ID ,"  https://tp.tax.gov.ir/req/api/self-tsp " ,API_VERSION ,new EncryptionConfig(ORG_PUBLIC_KEY, ORG_KEY_ID)) ;

    ﭘﺲ ﺍﺯ ﭘﻴﻜﺮﺑﻨﺪی، ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ می ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﭘﺮﺍﭘﺮتی TransferApi ﻛﻼﺱ TaxApiService ﺑﻪ ﻋﻨﻮﺍﻥ ﻛﻼﺱ ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ ﻭ ﭘﺮﺍﭘﺮتی TaxApis ﺍﻳﻦ ﻛﻼﺱ ﺑﻪ ﻋﻨﻮﺍﻥ ﻛﻼﺱ اصلی api ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ. ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﺩﺭﺻﻮﺭتی ﻛﻪ ﭘﻴﻜﺮﺑﻨﺪی ﺭﺍ ﺍﻧﺠﺎﻡ ﻧﺪﺍﺩﻩ ﺑﺎﺷﻴﺪ، ﺑﺎ ﻓﺮﺍﺧﻮﺍنی ﭘﺮﺍﭘﺮتی ﻫﺎی ﻣﺬﻛﻮﺭ ﺑﺎ ﺧﻄﺎ ﻣﻮﺍﺟﻪ ﺧﻮﺍﻫﻴﺪ ﺷﺪ.

     

    1.2.3. ﭘﻴﻜﺮﺑﻨﺪی ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ Dependency Injection

    ﺑﺮﺍﻱ ﭘﺒﻜﺮﺑﻨﺪی ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺭﻭﺵ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺑﺎﻳﺪ ﻋﻤﻞ ﻛﻨﻴﺪ. ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﭘﺮﺍﭘﺮتی ﻫﺎ ﻣﺸﺎﺑﻪ ﺭﻭﺵ ﻗﺒﻞ ﺍﺳﺖ.

    ﻧﻜﺘﻪ‌: ﺑﺮﺍی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺭﻭﺵ ﺑﺎﻳﺪ ﺣﺘﻤﺎ ﭘﻜﻴﺞ Microsoft.Extensions.DependencyInjection ﻧﺼﺐ ﺷﺪﻩ ﺑﺎﺷﺪ.

    serviceCollection.AddTaxApi(" https://wantolan.ir/requestsmanager/api/self-tsp ","" , CLIENT_ID ,
    , 
    new SignatoryConfig(PRIVATE_KEY, null) ,,new EncryptionConfig(ORG_PUBLIC_KEY, ORG_KEY_ID) );
    ) 

    ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﻛﻼﺱ ﭘﻴﺎﺩﻩ ﺳﺎﺯی ﺍﻣﻀﺎی ﺩﻟﺨﻮﺍﻩ ﺧﻮﺩ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻛﻨﻴﺪ. CustomSignatory ﻛﻼﺱ  ﺍﻣﻀﺎی ﺩﻟﺨﻮﺍﻩ ﺍﺳﺖ ﻛﻪ ﺣﺘﻤﺎ ﺑﺎﻳﺪ ﺍﻳﻨﺘﺮﻓﻴﺲ ISignatory ﺭﺍ ﭘﻴﺎﺩﻩ ﺳﺎﺯی ﻛﻨﺪ.

    < serviceCollection.AddTaxApi<CustomSignaroty ) 
    " https://wantolan.ir/requestsmanager/api/self-tsp " ,"" , CLIENT_ID , new EncryptionConfig(ORG_PUBLIC_KEY, ORG_KEY_ID)); 
    
    

     

    1.2.4. ﭘﻴﻜﺮﺑﻨﺪی ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ ﺑﺎ ﻧﺴﺨﻪ V 1ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ

    نسخه جدید سامانه مودیان بهینه سازی هایی در بحث امضا صورت گرفته است که به جای استفاده از ObjectNormalizer که بسیار سنگین و پیچیده است از SimpleNormalizer استفاده میکند. کلاس پیاده ساز برای نسخه لایه انتقال SimpleTransferApi است. برای پیکربندی این نسخه از API تنها کافیست ورودی apiversion تابع Init کلاس TaxApiService را برابر با “v1 “قرار دهید. نمونه این پیکربندی به صورت زیر است

    TaxApiService.Instance.Init(CLIENT_ID , new SignatoryConfig(PRIVATE_KEY, null) , " https://tp.tax.gov.ir/req/api/self-tsp , " " v1 , " new EncryptionConfig(ORG_PUBLIC_KEY, ORG_KEY_ID));
    var transferApi = TaxApiService.TransferApi ; 

     

    1.2.5. ﺗﻮﺍﺑﻊ ﺍﺭﺳﺎﻝ ﺑﺴﺘﻪ

     دو تابع این لی ه ارائه میدهد. تابع ارسال همگام بسته و تابع ارسال ناهمگام بسته ها. تابع SendPacketAsync یک بسته را به صورت همگام ارسال میکند و تابع SendPacketsAsync مجموعه ای از بسته ها را به صورت غیرهمگام ارسال میکند

    public interface ITransferApi { 
    Task<HttpResponse<AsyncResponseModel?>?> 
     SendPacketsAsync<TRequest>(List<PacketDto<TRequest>> packets, 
    Dictionary<string, string> headers, 
    bool encrypt, 
    bool sign, 
    PriorityLevel.NORMAL); = PriorityLevel priorityLevel 
     
    SendPacketAsync<TRequest, 
    Task<HttpResponse<SyncResonseModel<TResponse>?>> 
    TResponse>(PacketDto<TRequest> packet, 
     
    Dictionary<string, string> headers, 
    bool encrypt, 
    bool sign); 
    } 

     

     

    ﻭﺭﻭﺩﻱ ﺩﻭﻡ ﺍﻳﻦ ﺗﺎﺑﻊ ﻫﺪﺭﻫﺎی ﺩﺭﺧﻮﺍﺳﺖ ﻫﺴﺘﻨﺪ. ﺳﻪ ﻫﺪﺭ ﺩﺭ ﺍﻳﻦ ﻻﻳﻪ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪﻩ ﺍﺳﺖ. ﺩﺭ ﺻﻮﺭتی ﻛﻪ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦ ﻫﺪﺭﻫﺎ ﺩﺭ ﻭﺭﻭﺩی ﺗﻌﺮﻳﻒ ﻧﺸﻮﺩ، ﺑﻪ ﺻﻮﺭﺕ ﺧﻮﺩﻛﺎﺭ ﭘﺮ ﻣﻴﺸﻮﻧﺪ. ﻫﺪﺭﻫﺎ ﺑﻪ ﺷﺮﺡ ﺯﻳﺮ ﺍﺳﺖ.

    ﻋﻨﻮﺍﻥ ﺗﻮﻛﻦ

    ﺗﻮﺿﻴﺤﺎﺕ

    Authorization

    ﺗﻮﻛﻦ ﺩﺳﺘﺮﺳﻲ ﺑﻪ api

    requestTraceId

    ﺷﻨﺎﺳﻪ ﺗﺼﺎﺩﻓﻲ ﺑﺮﺍﻱ ﺟﻠﻮﮔﻴﺮﻱ ﺍﺯ ﺗﻜﺮﺍﺭ ﺩﺭﺧﻮﺍﺳﺖ

    timestamp

    ﺯﻣﺎﻥ ﺍﺭﺳﺎﻝ ﺑﺴﺘﻪ ﺑﻪ ﺻﻮﺭﺕ timestamp ﺑﻪ ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ

     

     

     

     

     

     

     

     

    ﻗﺒﻞ ﺍﺯ ﺍﺭﺳﺎﻝ ﻫﺮ ﺑﺴﺘﻪ ﻧﻴﺎﺯ ﺍﺳﺖ ﻛﻪ ﺷﻨﺎﺳﻪ ﺗﺼﺎﺩفی ﺗﻮﻟﻴﺪ ﺷﺪﻩ ﻭ ﺍﺯ ﻃﺮﻳﻖ ﻫﺪﺭ ﺍﺭﺳﺎﻝ ﺷﻮﺩ. ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺷﻨﺎﺳﻪ ﻣﺎﻧﻊ ﭘﺮﺩﺍﺯﺵ ﺩﻭﺑﺎﺭﻩ ﺑﺴﺘﻪ ﻫﺎی ﺗﻜﺮﺍﺭی ﮔﺮﻓﺘﻪ ﺧﻮﺍﻫﺪ ﺷﺪ. ﻗﺒﻞ ﺍﺯ ﺍﺭﺳﺎﻝ ﺑﺴﺘﻪ ﻧﻴﺎﺯ ﺍﺳﺖ ﻛﻪ ﺯﻣﺎﻥ ﺗﻮﻟﻴﺪ ﺑﺴﺘﻪ ﺭﺍ ﻧﻴﺰ ﺑﻪ ﻫﺪﺭ ﺿﻤﻴﻤﻪ ﻛﻨﻴﻢ ﺗﺎ ﺩﺭﺧﻮﺍﺳﺘﻬﺎیی ﻛﻪ ﺯﻣﺎﻥ ﺍﺭﺳﺎﻝ ﺁﻧﻬﺎ ﺑﺴﻴﺎﺭ ﮔﺬﺷﺘﻪ ﻣﺴﺪﻭﺩ ﺷﻮﺩ .

    ﺩﺭ ﺻﻮﺭتی ﻛﻪ ﺑﺨﻮﺍﻫﻴﻢ ﺑﺴﺘﻪ ﺑﻪ ﺻﻮﺭﺕ ﺭﻣﺰﻧﮕﺎﺭی ﺷﺪﻩ ﺍﺭﺳﺎﻝ ﺷﻮﺩ، ﻓﻴﻠﺪ encrypt ﺭﺍ true ﻗﺮﺍﺭ ﻣﻴﺪﻫﻴﻢ.

    ﺩﺭ ﺻﻮﺭتی ﻛﻪ ﺑﺨﻮﺍﻫﻴﻢ ﻣﺤﺘﻮﺍی ﺑﺴﺘﻪ ﺍﻣﻀﺎ ﺷﻮﺩ ﻣﻘﺪﺍﺭ ﻓﻴﻠﺪ sign ﺭﺍ true ﻗﺮﺍﺭ ﻣﻴﺪﻫﻴﻢ.

    ﻭﺭﻭﺩی ﺁﺧﺮ ﻧﻴﺰ ﺍﻭﻟﻮﻳﺖ ﭘﺮﺩﺍﺯﺵ ﺑﺴﺘﻪ ﺍﺳﺖ ﻛﻪ ﺑﻪ ﻃﻮﺭ ﭘﻴﺸﻔﺮﺽ ﺍﻭﻟﻮﻳﺖ ﻣﻌﻤﻮلی ﺍﺳﺖ.

    1.3. ﻻﻳﻪ ﻣﻔﻬﻮﻡ

    ﻭﻇﻴﻔﻪ ﺍﻳﻦ ﻻﻳﻪ ﺍﻳﺠﺎﺩ ﺑﺴﺘﻪ ﻫﺎ ﻣﻄﺎﺑﻖ ﺑﺴﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻴﻜﻨﺪ ﺍﺳﺖ. ﺑﺴﺘﻪ ﻫﺎﻱ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺑﻪ ﻛﻤﻚ ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ، ﺑﻪ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ ﺍﺭﺳﺎﻝ ﻣﻴﺸﻮﺩ. ﺩﺭ ﺍﻳﻦ ﺑﺨﺶ ﺑﺮﺍﻱ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺑﺴﺘﻪ ﻫﺎ ﻧﻤﻮﻧﻪ ﻛﺪ ﺍﺭﺍﺋﻪ ﺷﺪﻩ ﺍﺳﺖ .

    ﻛﻼﺱ ﻻﻳﻪ ﻣﻔﻬﻮﻡ ITaxApi ﺍﺳﺖ ﻭ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ DefaultTaxApiClient ﺑﻪ ﻋﻨﻮﺍﻥ ﻧﻤﻮﻧﻪ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺍﻳﻦ ﻻﻳﻪ ﺩﺭ SDK ﻗﺮﺍﺭ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ.

     

    ﺩﺭ ﺍﻳﻦ ﻛﻼﺱ ﻫﺮ api ﺩﻭ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ sync ﻭ async ﺩﺍﺭﺩ ﻛﻪ ﺑﺴﺘﻪ ﺑﻪ ﻧﻴﺎﺯ ﺧﻮﺩ ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﻫﺮ ﻛﺪﺍﻡ ﺭﺍ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ .

    1.3.1. ﺩﺭﻳﺎﻓﺖ ﺍﻃﻼﻋﺎﺕ ﺳﺮﻭﺭ

    ﺩﺭ ﺻﻮﺭتی ﻛﻪ ﻛﻠﻴﺪ ﻋﻤﻮمی ﺳﺎﺯﻣﺎﻥ ﺑﺮﺍی ﺭﻣﺰﻧﮕﺎﺭی ﺩﺭ ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﻧﺸﺪﻩ ﺑﺎﺷﺪ، ﻗﺒﻞ ﺍﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ taxApi ﻧﻴﺎﺯ ﺍﺳﺖ ﻛﻪ ﻳﻚ ﺑﺎﺭ ﺗﺎﺑﻊ ﺯﻳﺮ ﺻﺪﺍ ﺯﺩﻩ ﺷﻮﺩ ﺗﺎ ﻛﻠﻴﺪ ﻋﻤﻮمی ﺳﺎﺯﻣﺎﻥ ﺩﺭ ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ ﺑﺎﺭﮔﺬﺍﺭی ﺷﻮﺩ.

    ServerInformationModel serverInformation =TaxApiService.Instance.TaxApis.GetServerInformation();  
     

    1.3.2. ﺩﺭﻳﺎﻓﺖ ﺗﻮﻛﻦ ﺩﺳﺘﺮسی

    ﺑﺮﺍﻱ ﮔﺮﻓﺘﻦ ﺗﻮﻛﻦ ﺩﺳﺘﺮسی ﺍﺯ ﺗﺎﺑﻊ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﻜﻨﻴﻢ. ﺑﺎ ﻳﻚ ﺑﺎﺭ ﺻﺪﺍ ﺯﺩﻥ ﺍﻳﻦ api ﺩﺍﺧﻞ ﻛﻼﺱ DefaultTaxApiClient ﺗﻮﻛﻦ ﺫﺧﻴﺮﻩ ﻣﻴﺸﻮﺩ ﻭ ﺩﺭ ﺑﻘﻴﻪ ﺩﺭﺧﻮﺍﺳﺘﻬﺎ ﺍﺯ ﺁﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﺸﻮﺩ. ﻃﻮﻝ ﻋﻤﺮ ﺗﻮﻛﻦ ﺩﺭ ﭘﺎﺳﺦ ﺑﺎﺯﮔﺮﺩﺍنی ﻣﻴﺸﻮﺩ ﻭ ﺍﺯ ﺯﻣﺎﻥ ﺩﺭﻳﺎﻓﺖ ﺁﻥ ﺗﺎ ﻣﺪﺕ ﺫﻛﺮ ﺷﺪﻩ، ﺗﻮﻛﻦ ﺍﻋﺘﺒﺎﺭ ﺩﺍﺭﺩ. ﺩﺭ ﺻﻮﺭﺕ منقضی ﺷﺪﻥ ﺗﻮﻛﻦ ﻭ ﻳﺎ ﺩﺭﻳﺎﻓﺖ ﻛﺪ ۴۰۱ ﻧﻴﺎﺯ ﺍﺳﺖ ﻛﻪ ﺗﻮﻛﻦ ﺩﺳﺘﺮسی ﺟﺪﻳﺪ ﺩﺭﻳﺎﻓﺖ ﺷﻮﺩ.

    ﺗﻐﻴﻴﺮ ﺗﻮﻛﻦ ﺑﻪ ﺻﻮﺭﺕ ﺑﺮﻧﺎﻣﻪ ﺭﻳﺰی ﺷﺪﻩ ﻧﻴﺰ ﻓﺮﺍﻫﻢ ﺷﺪﻩ ﺍﺳﺖ .

    TaxApiService.Instance.TaxApis.RequestToken(); = TokenModel token 

     

    1.4. ﺍﺭﺳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ

    ﺑﺮﺍی ﺍﺭﺳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﻧﻴﺎﺯ ﺍﺳﺖ ﻛﻪ ﻓﻴﻠﺪﻫﺎی ﺯﻳﺮ ﺑﻪ ﺻﻮﺭﺕ ﺩﻗﻴﻖ ﭘﺮ ﺷﻮﻧﺪ.

     

    ﺭﺩﻳﻒ

    ﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲ

    ﺟﺎﻳﮕﺎﻩ

    ﻓﻴﻠﺪ

    ۱

    ﺷﻤﺎﺭﻩ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﻣﺎﻟﻴﺎﺗﻲ

    header

    Taxid

    ۲

    ﺗﺎﺭﻳﺦ ﺯﻣﺎﻥ ﺻﺪﻭﺭ ﺻﻮﺭﺗﺤﺴﺎﺏ(ﻣﻴﻼﺩﻱ)

    header

    Indatim

    ۳

    ﺗﺎﺭﻳﺦ ﺯﻣﺎﻥ ﺍﻳﺠﺎﺩ ﺻﻮﺭﺗﺤﺴﺎﺏ(ﻣﻴﻼﺩﻱ)

    header

    Indati2m

    ۴

    ﻧﻮﻉ ﺻﻮﺭﺗﺤﺴﺎﺏ

    header

    Inty

    ۵

    ﺳﺮﻳﺎﻝ ﺻﻮﺭﺗﺤﺴﺎﺏ

    header

    Inno

    ۶

    ﺷﻤﺎﺭﻩ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﻣﺎﻟﻴﺎﺗﻲ ﺻﻮﺭﺗﺤﺴﺎﺏ ﻣﺮﺟﻊ

    header

    Irtaxid

    ۷

    ﺍﻟﮕﻮﻱ ﺻﻮﺭﺗﺤﺴﺎﺏ

    header

    Inp

    ۸

    ﻣﻮﺿﻮﻉ ﺻﻮﺭﺗﺤﺴﺎﺏ

    header

    Ins

    ۹

    ﺷﻤﺎﺭﻩ ﺍﻗﺘﺼﺎﺩﻱ ﻓﺮﻭﺷﻨﺪﻩ

    header

    Tins

    ۱۰

    ﻧﻮﻉ ﺷﺨﺺ ﺧﺮﻳﺪﺍﺭ

    header

    Tob

    ۱۱

    ﺷﻤﺎﺭﻩ/ﺷﻨﺎﺳﻪ ﻣﻠﻲ/ﺷﻨﺎﺳﻪ ﻣﺸﺎﺭﻛﺖ ﻣﺪﻧﻲ/ﻛﺪ ﻓﺮﺍﮔﻴﺮ ﺧﺮﻳﺪﺍﺭ

    header

    Bid

    ۱۲

    ﺷﻤﺎﺭﻩ ﺍﻗﺘﺼﺎﺩﻱ ﺧﺮﻳﺪﺍﺭ

    header

    Tinb

    ۱۳

    ﻛﺪ ﺷﻌﺒﻪ ﻓﺮﻭﺷﻨﺪﻩ

    header

    Sbc

    ۱۴

    ﻛﺪ ﭘﺴﺘﻲ ﺧﺮﻳﺪﺍﺭ

    header

    Bpc

    ۱۵

    ﻛﺪ ﺷﻌﺒﻪ ﺧﺮﻳﺪﺍﺭ

    header

    Bbc

    ۱۶

    ﻧﻮﻉ ﭘﺮﻭﺍﺯ

    header

    Ft

    ۱۷

    ﺷﻤﺎﺭﻩ ﮔﺬﺭﻧﺎﻣﻪ ﺧﺮﻳﺪﺍﺭ

    header

    Bpn

    ۱۸

    ﺷﻤﺎﺭﻩ ﭘﺮﻭﺍﻧﻪ ﮔﻤﺮﻛﻲ ﻓﺮﻭﺷﻨﺪﻩ

    header

    Scln

    ۱۹

    ﻛﺪ ﮔﻤﺮﻙ ﻣﺤﻞ ﺍﻇﻬﺎﺭ

    header

    Scc

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ﺭﺩﻳﻒ

    ﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲ

    ﺟﺎﻳﮕﺎﻩ

    ﻓﻴﻠﺪ

    ۲۰

    ﺷﻨﺎﺳﻪ ﻳﻜﺘﺎﻱ ﺛﺒﺖ ﻗﺮﺍﺭﺩﺍﺩ ﻓﺮﻭﺷﻨﺪﻩ

    header

    Crn

    ۲۱

    ﺷﻤﺎﺭﻩ ﺍﺷﺘﺮﺍﻙ/ ﺷﻨﺎﺳﻪ ﻗﺒﺾ ﺑﻬﺮﻩ ﺑﺮﺩﺍﺭ

    header

    Billid

    ۲۲

    ﻣﺠﻤﻮﻉ ﻣﺒﻠﻎ ﻗﺒﻞ ﺍﺯ ﻛﺴﺮ ﺗﺨﻔﻴﻒ

    header

    Tprdis

    ۲۳

    ﻣﺠﻤﻮﻉ ﺗﺨﻔﻴﻔﺎﺕ

    header

    Tdis

    ۲۴

    ﻣﺠﻤﻮﻉ ﻣﺒﻠﻎ ﭘﺲ ﺍﺯ ﻛﺴﺮ ﺗﺨﻔﻴﻒ

    header

    Tadis

    ۲۵

    ﻣﺠﻤﻮﻉ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩ

    header

    Tvam

    ۲۶

    ﻣﺠﻤﻮﻉ ﺳﺎﻳﺮ ﻣﺎﻟﻴﺎﺕ، ﻋﻮﺍﺭﺽ ﻭﺟﻮﻩ ﻗﺎﻧﻮﻧﻲ

    header

    Todam

    ۲۷

    ﻣﺠﻤﻮﻉ ﺻﻮﺭﺗﺤﺴﺎﺏ

    header

    Tbill

    ۲۸

    ﺭﻭﺵ ﺗﺴﻮﻳﻪ

    header

    Setm

    ۲۹

    ﻣﺒﻠﻎ ﭘﺮﺩﺍﺧﺘﻲ ﻧﻘﺪﻱ

    header

    Cap

    ۳۰

    ﻣﺒﻠﻎ ﭘﺮﺩﺍﺧﺘﻲ ﻧﺴﻴﻪ

    header

    Insp

    ۳۱

    ﻣﺠﻤﻮﻉ ﺳﻬﻢ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩ ﺍﺯ ﭘﺮﺩﺍﺧﺖ

    header

    Tvop

    ۳۲

    ﻋﺪﻡ ﭘﺮﺩﺍﺧﺖ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩ ﺧﺮﻳﺪﺍﺭ

    header

    Dpvb

    ۳۳

    ﻣﺎﻟﻴﺎﺕ ﻣﻮﺿﻮﻉ ﻣﺎﺩﻩ ۱۷

    header

    Tax17

    ۳۴

    ﺷﻨﺎﺳﻪ ﻛﺎﻻ/ﺧﺪﻣﺖ

    body

    Sstid

    ۳۵

    ﺷﺮﺡ ﻛﺎﻻ/ﺧﺪﻣﺖ

    body

    Sstt

    ۳۶

    ﻭﺍﺣﺪ ﺍﻧﺪﺍﺯﻩ ﮔﻴﺮﻱ

    body

    Mu

    ۳۷

    ﺗﻌﺪﺍﺩ/ﻣﻘﺪﺍﺭ

    body

    Am

    ۳۸

    ﻣﺒﻠﻎ ﻭﺍﺣﺪ

    body

    Fee

    ۳۹

    ﻣﻴﺰﺍﻥ ﺍﺭﺯ

    body

    Cfee

    ۴۰

    ﻧﻮﻉ ﺍﺭﺯ

    body

    Cut

    ۴۱

    ﻧﺮﺥ ﺑﺮﺍﺑﺮﻱ ﺍﺭﺯ ﺑﺎ ﺭﻳﺎﻝ

    body

    Exr

    ۴۲

    ﻣﺒﻠﻎ ﻗﺒﻞ ﺍﺯ ﺗﺨﻔﻴﻒ

    body

    Prdis

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ﺭﺩﻳﻒ

    ﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲ

    ﺟﺎﻳﮕﺎﻩ

    ﻓﻴﻠﺪ

    ۴۳

    ﻣﺒﻠﻎ ﺗﺨﻔﻴﻒ

    body

    Dis

    ۴۴

    ﻣﺒﻠﻎ ﺑﻌﺪ ﺍﺯ ﺗﺨﻔﻴﻒ

    body

    Adis

    ۴۵

    ﻧﺮﺥ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵﺍﻓﺰﻭﺩﻩ

    body

    Vra

    ۴۶

    ﻣﺒﻠﻎ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩ

    body

    Vam

    ۴۷

    ﻣﻮﺿﻮﻉ ﺳﺎﻳﺮﻣﺎﻟﻴﺎﺕ ﻋﻮﺍﺭﺽ

    body

    Odt

    ۴۸

    ﻧﺮﺥ ﺳﺎﻳﺮﻣﺎﻟﻴﺎﺕ ﻋﻮﺍﺭﺽ

    body

    Odr

    ۴۹

    ﻣﺒﻠﻎ ﺳﺎﻳﺮﻣﺎﻟﻴﺎﺕ ﻋﻮﺍﺭﺽ

    body

    Odam

    ۵۰

    ﻣﻮﺿﻮﻉ ﺳﺎﻳﺮ ﻭﺟﻮﻩ ﻗﺎﻧﻮﻧﻲ

    body

    Olt

    ۵۱

    ﻧﺮﺥ ﺳﺎﻳﺮ ﻭﺟﻮﻩ ﻗﺎﻧﻮﻧﻲ

    body

    Olr

    ۵۲

    ﻣﺒﻠﻎ ﺳﺎﻳﺮ ﻭﺟﻮﻩ ﻗﺎﻧﻮﻧﻲ

    body

    Olam

    ۵۳

    ﺍﺟﺮﺕ ﺳﺎﺧﺖ

    body

    Consfee

    ۵۴

    ﺳﻮﺩ ﻓﺮﻭﺷﻨﺪﻩ

    body

    Spro

    ۵۵

    ﺣﻖ ﺍﻟﻌﻤﻞ

    body

    Bros

    ۵۶

    ﺟﻤﻊ ﻛﻞ ﺍﺟﺮﺕ، ﺣﻖﺍﻟﻌﻤﻞ ﺳﻮﺩ

    body

    Tcpbs

    ۵۷

    ﺳﻬﻢ ﻧﻘﺪﻱ ﺍﺯ ﭘﺮﺩﺍﺧﺖ

    body

    Cop

    ۵۸

    ﺳﻬﻢ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩ ﺍﺯ ﭘﺮﺩﺍﺧﺖ

    body

    Vop

    ۵۹

    ﺷﻨﺎﺳﻪ ﻳﻜﺘﺎﻱ ﺛﺒﺖ ﻗﺮﺍﺭﺩﺍﺩ ﺣﻖ ﺍﻟﻌﻤﻠﻜﺎﺭﻱ

    body

    Bsrn

    ۶۰

    ﻣﺒﻠﻎ ﻛﻞ ﻛﺎﻻ/ﺧﺪﻣﺖ

    body

    Tsstam

    ۶۱

    ﺷﻤﺎﺭﻩ ﺳﻮﻳﻴﭻ ﭘﺮﺩﺍﺧﺖ

    payment

    Iinn

    ۶۲

    ﺷﻤﺎﺭﻩ ﭘﺬﻳﺮﻧﺪﻩ ﻓﺮﻭﺷﮕﺎﻫﻲ

    payment

    Can

    ۶۳

    ﺷﻤﺎﺭﻩ ﭘﺎﻳﺎﻧﻪ

    payment

    Trmn

    ۶۴

    ﺷﻤﺎﺭﻩ ﭘﻴﮕﻴﺮﻱ

    payment

    Trn

    ۶۵

    ﺷﻤﺎﺭﻩ ﻛﺎﺭﺕ ﭘﺮﺩﺍﺧﺖ ﻛﻨﻨﺪﻩ ﺻﻮﺭﺗﺤﺴﺎﺏ

    payment

    Pcn

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ﺭﺩﻳﻒ

    ﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲ

    ﺟﺎﻳﮕﺎﻩ

    ﻓﻴﻠﺪ

    ۶۶

    ﺷﻤﺎﺭﻩ/ﺷﻨﺎﺳﻪ ﻣﻠﻲ/ﻛﺪ ﻓﺮﺍﮔﻴﺮ ﺍﺗﺒﺎﻉ ﻏﻴﺮ ﺍﻳﺮﺍﻧﻲ ﭘﺮﺩﺍﺧﺖ ﻛﻨﻨﺪﻩ ﺻﻮﺭﺗﺤﺴﺎﺏ

    payment

    Pid

    ۶۷

    ﺗﺎﺭﻳﺦ ﺯﻣﺎﻥ ﭘﺮﺩﺍﺧﺖ ﺻﻮﺭﺗﺤﺴﺎﺏ

    payment

    Pdt

     

     

     

     

     

    ﺑﺮﺍﻱ ﺍﺭﺳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺍﺯ TaxApiService.Instance.TaxApis.SendInvoices ﺍﺳﺘﻔﺎﺩﻩ میﻛﻨﻴﻢ. ﺑﺮﺍd ﺍﺭﺳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺑﺎﻳﺪ ﻣﺎﻧﻨﺪ ﺯﻳﺮ ﻋﻤﻞ ﻛﻨﻴﺪ. ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ invoice1 ﻭ invoice2 ﻭ … ﻫﺮ ﻳﻚ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺟﺪﺍﮔﺎﻧﻪ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺎﻳﺪ ﭘﺮ ﺷﻮﻧﺪ. ﻫﻤﭽﻨﻴﻦ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺟﻨﺲ InvoiceDto ﻫﺴﺘﻨﺪ.

    ﻧﻜﺘﻪ‌: میﺗﻮﺍﻥ ﺑﻪ ﺟﺎﻱ invoice1 ﻭ invoice2 ﻭ … ، ﻳﻚ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺭﺍ ﺍﺭﺳﺎﻝ ﻛﺮﺩ.

    var invoices=  new List<InvoiceDto>{
    invoice1, 
    invoice2, 
    invoice3, 
    ... 
     }; 
    TaxApiService.Instance.TaxApis.SendInvoices(invoices); 
    
    

     

     

    ﺷﻤﺎﺭﻩ ﻣﺎﻟﻴﺎتی ﺍﺯ ﺳﻪ ﺑﺨﺶ ﺗﺸﻜﻴﻞ ﻣﻴﺸﻮﺩ. ﺑﺨﺶ ﺍﻭﻝ ﺷﻨﺎﺳﻪ ﺣﺎﻓﻈﻪ، ﺑﺨﺶ ﺩﻭﻡ ﺗﺎﺭﻳﺦ ﺍﻳﺠﺎﺩ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﻭ ﺑﺨﺶ ﺳﻮﻡ ﺳﺮﻳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺍﺳﺖ. ﺑﺮﺍی ﺳﻬﻮﻟﺖ ﺗﻮﻟﻴﺪ ﺷﻤﺎﺭﻩ ﻣﺎﻟﻴﺎتی ﻣﻴﺘﻮﺍﻧﻴﺪ ﺍﺯ ﻛﻼﺱ ITaxIdGenerator ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ. ﻛﺪ ﺯﻳﺮ ﻧﻤﻮﻧﻪ ﺗﻮﻟﻴﺪ ﺷﻤﺎﺭﻩ ﻣﺎﻟﻴﺎتی ﺭﺍ ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ.

    string taxId = TaxApiService.Instance.TaxIdGenerator.GenerateTaxId("A1119R", 10001, 
    invoiceCreatedDate); 

     

    پارامتر اول شناسه حافظه، پارامتر دوم سریال صورت حساب که عدد ی حداکثر با طول 12 رقم است و پارامتر آخر زمان  دور صورت حساب با فرمت DateTime زبان C #است. نمونه کد ارسال صورت حساب به صورت زیر است:

    //Generate Random Serial number 
    var random = new Random(); 
     
    long randomSerialDecimal = random.Next(999999999); 
    var now = new DateTimeOffset(DateTime.Now).ToUnixTimeMilliseconds(); 
    var taxId = TaxApiService.Instance.TaxIdGenerator.GenerateTaxId("A1119R", 
    randomSerialDecimal, DateTime.Now); 
     
    var header = new InvoiceHeaderDto 
    { 
     
    Inty = 1, 
    Inp = 1, 
    Inno = randomSerialDecimal, 
    Ins = 1, 
    Tins = "5555555555", 
    Tprdis = 1000_000, 
    Tdis = 0, 
    Tvam = 0, 
    Todam = 0, 
    Tbill = 1000_000, 
    Setm = 1, 
    Cap = 1000_000, 
    Insp = 1000_000, 
    Tvop = 0, 
    Tax17 = 0, 
    Indatim = now, 
    Indati2m = now, 
    Taxid = taxId 
    }; 
     
    var body = new InvoiceBodyDto 
    { 
    Sstid = "1111111111", 
    Sstt = " ﺷﻴﺮ ﻛﻢ ﭼﺮﺏ ﭘﺎﺳﺘﻮﺭﻳﺰﻩ ", Mu = 23, 
    Am = 2, 
    Fee = 500_000, 
    Prdis = 500_000, 
    Dis = 0, 
    Adis = 500_000, 
    Vra = 0, 
    Vam = 0, 
    Tsstam = 1000_000 
    }; 
    
    
    var payment = new PaymentDto 
    { 
     
    Iinn = "1131244211", 
    Acn = "2131244212", 
    Trmn = "3131244213", 
    Trn = "4131244214" 
    }; 
    var invoices = new List<InvoiceDto> 
    { 
    new InvoiceDto 
     
    { 
    Body = new() {body}, 
    Header = header, 
    Payments = new() {payment} 
     
    } 
    }; 
     
    var responseModel = TaxApiService.Instance.TaxApis.SendInvoices(invoices); 
    var packetResponse = responseModel.Body.Result.First(); 
    var uid = packetResponse.Uid; 
    var referenceNumber = packetResponse.ReferenceNumber; 
    
    

     

     

    1.5. ﺍﺳﺘﻌﻼﻡ ﻧﺘﻴﺠﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻏﻴﺮ ﻫﻤﮕﺎﻡ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ UID

    ﺧﺮﻭجی ﺍﺭﺳﺎﻝ ﺑﺴﺘﻪ ﻫﺎی ﻏﻴﺮﻫﻤﮕﺎﻡ UID ﻭ referenceNumber ﺍﺳﺖ. ﻓﻴﻠﺪ uid ﺳﻤﺖ ﻛﻼﻳﻨﺖ ﻭ ﻓﻴﻠﺪ referenceNumber ﺳﻤﺖ ﺳﺮﻭﺭ ﺗﻮﻟﻴﺪ ﻣﻴﺸﻮﺩ. ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﻛﺪ ﻫﺎ ﻣﻴﺘﻮﺍﻧﻴﻢ ﺍﺯ ﻭﺿﻌﻴﺖ ﺑﺴﺘﻪ ﺍﺭﺳﺎﻝ ﺷﺪﻩ ﺑﺎ ﺧﺒﺮ ﺷﻮﻳﻢ. ﻧﻤﻮﻧﻪ ﻛﺪ ﺍﺳﺘﻌﻼﻡ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ.

    new UidAndFiscalId = var uidAndFiscalId 
    { 
    uid, = Uid 
    CLIENT_ID = FiscalId 
    }; 
    var inquiryResultModels =TaxApiService.Instance.TaxApis.InquiryByUidAndFiscalId(new(){uidAndFiscalId}) ;
    
    

     

     

    1.6. ﺍﺳﺘﻌﻼﻡ ﻧﺘﻴﺠﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻏﻴﺮ ﻫﻤﮕﺎﻡ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ referenceNumber

    ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﻛﺪ ﻫﺎ ﻣﻴﺘﻮﺍﻧﻴﻢ ﺍﺯ ﻭﺿﻌﻴﺖ ﺑﺴﺘﻪ ﺍﺭﺳﺎﻝ ﺷﺪﻩ ﺑﺎ ﺧﺒﺮ ﺷﻮﻳﻢ. ﻧﻤﻮﻧﻪ ﻛﺪ ﺍﺳﺘﻌﻼﻡ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ .

    var inquiryResultModels =TaxApiService.Instance.TaxApis.InquiryByReferenceId(new(){referenceNumber}) 
     

    1.7. ﺍﺳﺘﻌﻼﻡ ﻧﺘﻴﺠﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻏﻴﺮ ﻫﻤﮕﺎﻡ ﺑﺮ ﺍﺳﺎﺱ ﺯﻣﺎﻥ

    ﻧﺘﻴﺠﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎ ﺍﺯ ﻳﻚ ﺯﻣﺎﻥ ﺑﺰﺭﮔﺘﺮ ﺭﺍ ﻣﻴﺘﻮﺍﻧﻴﻢ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺗﺎﺑﻊ ﺑﺎ ﺧﺒﺮ ﺷﻮﻳﻢ. ﻭﺭﻭﺩی ﺍﻳﻦ ﺗﺎﺑﻊ، ﺗﺎﺭﻳﺦ ﺑﻪ ﺻﻮﺭﺕ شمسی ﺍﺳﺖ.

     var inquiryResultModels=  TaxApiService.Instance.TaxApis.InquiryByTime("14010101");
     

    1.8. ﺍﺳﺘﻌﻼﻡ ﻧﺘﻴﺠﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻏﻴﺮ ﻫﻤﮕﺎﻡ ﺑﺮ ﺍﺳﺎﺱ ﺑﺎﺯﻩ ﺯﻣﺎﻥ

    ﻧﺘﻴﺠﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎ ﺍﺯ ﺩﺭ ﻳﻚ ﺑﺎﺯﻩ ﺯﻣﺎنی ﺭﺍ ﻣﻴﺘﻮﺍﻧﻴﻢ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺗﺎﺑﻊ ﺑﺎ ﺧﺒﺮ ﺷﻮﻳﻢ. ﻭﺭﻭﺩی ﺍﻳﻦ ﺗﺎﺑﻊ، ﺗﺎﺭﻳﺦ ﺑﻪ ﺻﻮﺭﺕ شمسی ﺍﺳﺖ.

    var inquiryResultModels = TaxApiService.Instance.TaxApis.InquiryByTimeRange("14020101" ,"14010101“);
     

    1.9. ﮔﺮﻓﺘﻦ ﺍﻃﻼﻋﺎﺕ ﺣﺎﻓﻈﻪ

    ﻭﺭﻭﺩی ﺍﻳﻦ ﺗﺎﺑﻊ ﺷﻨﺎﺳﻪ ﺣﺎﻓﻈﻪ ﺑﻮﺩﻩ ﻭ ﺧﺮﻭجی ﺁﻥ ﺍﻃﻼﻋﺎﺕ ﺣﺎﻓﻈﻪ ﻣﺮﺑﻮﻃﻪ ﺍﺳﺖ.

     var fiscalInformation = TaxApiService.Instance.TaxApis.GetFiscalInformation(CLIENT_ID);
     

    1.10. ﺍﺳﺘﻌﻼﻡ ﻛﺪ ﺍﻗﺘﺼﺎﺩی

    ﻭﺭﻭﺩﻱ ﺍﻳﻦ ﺗﺎﺑﻊ ﻛﺪ ﺍﻗﺘﺼﺎﺩی ﺑﻮﺩﻩ ﻭ ﺧﺮﻭجی ﺁﻥ ﺍﻃﻼﻋﺎﺕ ﻛﺪ ﺍﻗﺘﺼﺎﺩی ﺍﺳﺖ.

    var economicCodeInformation = TaxApiService.Instance.TaxApis.GetEconomicCodeInformation( "5555555555”);
     

    1.11. ﮔﺮﻓﺘﻦ ﺍﻃﻼﻋﺎﺕ ﻛﺎﻻ ﻭ ﺧﺪﻣﺎﺕ

    ﻭﺭﻭﺩﻱ ﺍﻳﻦ ﺗﺎﺑﻊ ﻓﻴﻠﺘﺮﻫﺎ ﻭ ﺻﻔﺤﻪ ﺑﻨﺪی ﻫﺎ ﺟﻬﺖ ﮔﺮﻓﺘﻦ ﺍﻃﻼﻋﺎﺕ ﻛﺎﻻ ﻭ ﺧﺪﻣﺎﺕ ﺍﺳﺖ. ﻧﻤﻮﻧﻪ ﻛﺪ ﺯﻳﺮ ﺑﺮﺍﻱ ﺑﺎﺭﮔﺬﺍﺭی ﺍﻃﻼﻋﺎﺕ ۱۰ ﻛﺎﻻ ﺍﺳﺖ.

    var searchDto = new SearchDto 
    { Page = 1, 
    Size = 10 }; 
    var serviceStuffList = TaxApiService.Instance.TaxApis.GetServiceStuffList(searchDto).Result; 

     

     


    برای دانلود فایل های پیوست، می بایست در سایت ثبت نام و وارد شوید

    ورود، ثبت نام


    نظرات ارسال شده ارسال نظر جدید
    برای تبادل نظر، می بایست در سایت وارد شوید

    ورود به سایت
تماس سبد خرید بالا