برای دریافت سورس کد نمونه و مشاوره لطفا با شماره ۷۷۹۵۸۲۱۳-۰۲۱ تماس بگیرید.

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 = var invoices { invoiceDto }; TaxApiService.Instance.TaxApis.SendInvoices(invoices);

1.2. ﻻﻳﻪ ﺍﻧﺘﻘﺎﻝ

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

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

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

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

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

  • افزودن بخش (سکشن)
  • ویرایش بخش (سکشن)
  • حذف بخش (سکشن)
  • ویرایش ستون
  • ویرایش تصویر
ﻭﺭﻭﺩﻱﻧﻮﻉ ﻭﺭﻭﺩﻱﻣﻘﺎﺩﻳﺮ ﭘﻴﺶ ﻓﺮﺽﺗﻮﺿﻴﺤﺎﺕ
clientIdStringNullﺷﻨﺎﺳﻪ ﻛﻼﻳﻨﺖ ﺩﺭﺧﻮﺍﺳﺖ ﺩﻫﻨﺪﻩ
signatoryConfigSignatoryConfigNullﻛﺎﻧﻔﻴﮓ ﻣﺮﺑﻮﻁ ﺑﻪ ﺍﻣﻀﺎﻱ ﻳﻚ ﺭﺷﺘﻪ، ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻳﻨﻜﻪ ﺍﺯ ﭼﻪ

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

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

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

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

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

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

ﺷﻮﺩ .

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

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

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

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

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

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

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

baseUrlStringhttps://tp.tax.gov.ir/req/api/self-tspﺁﺩﺭﺱ ﭘﺎﻳﻪ ﺍﺗﺼﺎﻝ ﺑﻪ ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ. ﺍﻳﻦ ﺁﺩﺭﺱ ﺑﺮ ﺍﺳﺎﺱ

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

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

apiVersionStringﺧﺎﻟﻲﺷﻤﺎﺭﻩ ﻧﺴﺨﻪ API ﺳﺎﻣﺎﻧﻪ ﻣﻮﺩﻳﺎﻥ
encryptionConfigEncryptionConfignullﻛﻼﺱ ﻣﺮﺑﻮﻁ ﺑﻪ ﻛﺎﻧﻔﻴﮓ ﺭﻣﺰﻧﮕﺎﺭﻱ ﺑﺴﺘﻪ ﻫﺎ ﺟﻬﺖ ﺍﺭﺳﺎﻝ ﺑﻪ

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

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

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

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

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

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

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

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

ﻧﻤﻮﻧﻪ ﭘﻴﻜﺮﺑﻨﺪی ﺳﺎﺩﻩ 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(CLIENT_ID) ;

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

TaxApiService.Instance.Init(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(" 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 مجموعه ای از بسته ها را به صورت غیرهمگام ارسال میکند

Task?> SendPacketsAsync(List> packets, Dictionary headers, bool encrypt,bool sign);Task?>> SendPacketAsync(PacketDto packet, Dictionary 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();
جدول ﺭﺍﻫﻨﻤﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ SDK ﺩﺍﺕ ﻧﺖ - جدول ۳
جدول ﺭﺍﻫﻨﻤﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ SDK ﺩﺍﺕ ﻧﺖ - جدول ۴
جدول ﺭﺍﻫﻨﻤﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ SDK ﺩﺍﺕ ﻧﺖ - جدول ۵
جدول ﺭﺍﻫﻨﻤﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ SDK ﺩﺍﺕ ﻧﺖ - جدول ۶

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

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

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

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

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

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

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

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

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

ﺭﺩﻳﻒﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲﺟﺎﻳﮕﺎﻩﻓﻴﻠﺪ
۱ﺷﻤﺎﺭﻩ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﻣﺎﻟﻴﺎﺗﻲheaderTaxid
۲ﺗﺎﺭﻳﺦ ﻭ ﺯﻣﺎﻥ ﺻﺪﻭﺭ ﺻﻮﺭﺗﺤﺴﺎﺏ(ﻣﻴﻼﺩﻱ)headerIndatim
۳ﺗﺎﺭﻳﺦ ﻭ ﺯﻣﺎﻥ ﺍﻳﺠﺎﺩ ﺻﻮﺭﺗﺤﺴﺎﺏ(ﻣﻴﻼﺩﻱ)headerIndati2m
۴ﻧﻮﻉ ﺻﻮﺭﺗﺤﺴﺎﺏheaderInty
۵ﺳﺮﻳﺎﻝ ﺻﻮﺭﺗﺤﺴﺎﺏheaderInno
۶ﺷﻤﺎﺭﻩ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﻣﺎﻟﻴﺎﺗﻲ ﺻﻮﺭﺗﺤﺴﺎﺏ ﻣﺮﺟﻊheaderIrtaxid
۷ﺍﻟﮕﻮﻱ ﺻﻮﺭﺗﺤﺴﺎﺏheaderInp
۸ﻣﻮﺿﻮﻉ ﺻﻮﺭﺗﺤﺴﺎﺏheaderIns
۹ﺷﻤﺎﺭﻩ ﺍﻗﺘﺼﺎﺩﻱ ﻓﺮﻭﺷﻨﺪﻩheaderTins
۱۰ﻧﻮﻉ ﺷﺨﺺ ﺧﺮﻳﺪﺍﺭheaderTob
۱۱ﺷﻤﺎﺭﻩ/ﺷﻨﺎﺳﻪ ﻣﻠﻲ/ﺷﻨﺎﺳﻪ ﻣﺸﺎﺭﻛﺖ ﻣﺪﻧﻲ/ﻛﺪ ﻓﺮﺍﮔﻴﺮ ﺧﺮﻳﺪﺍﺭheaderBid
۱۲ﺷﻤﺎﺭﻩ ﺍﻗﺘﺼﺎﺩﻱ ﺧﺮﻳﺪﺍﺭheaderTinb
۱۳ﻛﺪ ﺷﻌﺒﻪ ﻓﺮﻭﺷﻨﺪﻩheaderSbc
۱۴ﻛﺪ ﭘﺴﺘﻲ ﺧﺮﻳﺪﺍﺭheaderBpc
۱۵ﻛﺪ ﺷﻌﺒﻪ ﺧﺮﻳﺪﺍﺭheaderBbc
۱۶ﻧﻮﻉ ﭘﺮﻭﺍﺯheaderFt
۱۷ﺷﻤﺎﺭﻩ ﮔﺬﺭﻧﺎﻣﻪ ﺧﺮﻳﺪﺍﺭheaderBpn
۱۸ﺷﻤﺎﺭﻩ ﭘﺮﻭﺍﻧﻪ ﮔﻤﺮﻛﻲ ﻓﺮﻭﺷﻨﺪﻩheaderScln
۱۹ﻛﺪ ﮔﻤﺮﻙ ﻣﺤﻞ ﺍﻇﻬﺎﺭheaderScc
ﺭﺩﻳﻒﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲﺟﺎﻳﮕﺎﻩﻓﻴﻠﺪ
۲۰ﺷﻨﺎﺳﻪ ﻳﻜﺘﺎﻱ ﺛﺒﺖ ﻗﺮﺍﺭﺩﺍﺩ ﻓﺮﻭﺷﻨﺪﻩheaderCrn
۲۱ﺷﻤﺎﺭﻩ ﺍﺷﺘﺮﺍﻙ/ ﺷﻨﺎﺳﻪ ﻗﺒﺾ ﺑﻬﺮﻩ ﺑﺮﺩﺍﺭheaderBillid
۲۲ﻣﺠﻤﻮﻉ ﻣﺒﻠﻎ ﻗﺒﻞ ﺍﺯ ﻛﺴﺮ ﺗﺨﻔﻴﻒheaderTprdis
۲۳ﻣﺠﻤﻮﻉ ﺗﺨﻔﻴﻔﺎﺕheaderTdis
۲۴ﻣﺠﻤﻮﻉ ﻣﺒﻠﻎ ﭘﺲ ﺍﺯ ﻛﺴﺮ ﺗﺨﻔﻴﻒheaderTadis
۲۵ﻣﺠﻤﻮﻉ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩheaderTvam
۲۶ﻣﺠﻤﻮﻉ ﺳﺎﻳﺮ ﻣﺎﻟﻴﺎﺕ، ﻋﻮﺍﺭﺽ ﻭ ﻭﺟﻮﻩ ﻗﺎﻧﻮﻧﻲheaderTodam
۲۷ﻣﺠﻤﻮﻉ ﺻﻮﺭﺗﺤﺴﺎﺏheaderTbill
۲۸ﺭﻭﺵ ﺗﺴﻮﻳﻪheaderSetm
۲۹ﻣﺒﻠﻎ ﭘﺮﺩﺍﺧﺘﻲ ﻧﻘﺪﻱheaderCap
۳۰ﻣﺒﻠﻎ ﭘﺮﺩﺍﺧﺘﻲ ﻧﺴﻴﻪheaderInsp
۳۱ﻣﺠﻤﻮﻉ ﺳﻬﻢ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩ ﺍﺯ ﭘﺮﺩﺍﺧﺖheaderTvop
۳۲ﻋﺪﻡ ﭘﺮﺩﺍﺧﺖ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩ ﺧﺮﻳﺪﺍﺭheaderDpvb
۳۳ﻣﺎﻟﻴﺎﺕ ﻣﻮﺿﻮﻉ ﻣﺎﺩﻩ ۱۷headerTax17
۳۴ﺷﻨﺎﺳﻪ ﻛﺎﻻ/ﺧﺪﻣﺖbodySstid
۳۵ﺷﺮﺡ ﻛﺎﻻ/ﺧﺪﻣﺖbodySstt
۳۶ﻭﺍﺣﺪ ﺍﻧﺪﺍﺯﻩ ﮔﻴﺮﻱbodyMu
۳۷ﺗﻌﺪﺍﺩ/ﻣﻘﺪﺍﺭbodyAm
۳۸ﻣﺒﻠﻎ ﻭﺍﺣﺪbodyFee
۳۹ﻣﻴﺰﺍﻥ ﺍﺭﺯbodyCfee
۴۰ﻧﻮﻉ ﺍﺭﺯbodyCut
۴۱ﻧﺮﺥ ﺑﺮﺍﺑﺮﻱ ﺍﺭﺯ ﺑﺎ ﺭﻳﺎﻝbodyExr
۴۲ﻣﺒﻠﻎ ﻗﺒﻞ ﺍﺯ ﺗﺨﻔﻴﻒbodyPrdis
ﺭﺩﻳﻒﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲﺟﺎﻳﮕﺎﻩﻓﻴﻠﺪ
۴۳ﻣﺒﻠﻎ ﺗﺨﻔﻴﻒbodyDis
۴۴ﻣﺒﻠﻎ ﺑﻌﺪ ﺍﺯ ﺗﺨﻔﻴﻒbodyAdis
۴۵ﻧﺮﺥ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵﺍﻓﺰﻭﺩﻩbodyVra
۴۶ﻣﺒﻠﻎ ﻣﺎﻟﻴﺎﺕ ﺑﺮ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩbodyVam
۴۷ﻣﻮﺿﻮﻉ ﺳﺎﻳﺮﻣﺎﻟﻴﺎﺕ ﻭ ﻋﻮﺍﺭﺽbodyOdt
۴۸ﻧﺮﺥ ﺳﺎﻳﺮﻣﺎﻟﻴﺎﺕ ﻭ ﻋﻮﺍﺭﺽbodyOdr
۴۹ﻣﺒﻠﻎ ﺳﺎﻳﺮﻣﺎﻟﻴﺎﺕ ﻭ ﻋﻮﺍﺭﺽbodyOdam
۵۰ﻣﻮﺿﻮﻉ ﺳﺎﻳﺮ ﻭﺟﻮﻩ ﻗﺎﻧﻮﻧﻲbodyOlt
۵۱ﻧﺮﺥ ﺳﺎﻳﺮ ﻭﺟﻮﻩ ﻗﺎﻧﻮﻧﻲbodyOlr
۵۲ﻣﺒﻠﻎ ﺳﺎﻳﺮ ﻭﺟﻮﻩ ﻗﺎﻧﻮﻧﻲbodyOlam
۵۳ﺍﺟﺮﺕ ﺳﺎﺧﺖbodyConsfee
۵۴ﺳﻮﺩ ﻓﺮﻭﺷﻨﺪﻩbodySpro
۵۵ﺣﻖ ﺍﻟﻌﻤﻞbodyBros
۵۶ﺟﻤﻊ ﻛﻞ ﺍﺟﺮﺕ، ﺣﻖﺍﻟﻌﻤﻞ ﻭ ﺳﻮﺩbodyTcpbs
۵۷ﺳﻬﻢ ﻧﻘﺪﻱ ﺍﺯ ﭘﺮﺩﺍﺧﺖbodyCop
۵۸ﺳﻬﻢ ﺍﺭﺯﺵ ﺍﻓﺰﻭﺩﻩ ﺍﺯ ﭘﺮﺩﺍﺧﺖbodyVop
۵۹ﺷﻨﺎﺳﻪ ﻳﻜﺘﺎﻱ ﺛﺒﺖ ﻗﺮﺍﺭﺩﺍﺩ ﺣﻖ ﺍﻟﻌﻤﻠﻜﺎﺭﻱbodyBsrn
۶۰ﻣﺒﻠﻎ ﻛﻞ ﻛﺎﻻ/ﺧﺪﻣﺖbodyTsstam
۶۱ﺷﻤﺎﺭﻩ ﺳﻮﻳﻴﭻ ﭘﺮﺩﺍﺧﺖpaymentIinn
۶۲ﺷﻤﺎﺭﻩ ﭘﺬﻳﺮﻧﺪﻩ ﻓﺮﻭﺷﮕﺎﻫﻲpaymentCan
۶۳ﺷﻤﺎﺭﻩ ﭘﺎﻳﺎﻧﻪpaymentTrmn
۶۴ﺷﻤﺎﺭﻩ ﭘﻴﮕﻴﺮﻱpaymentTrn
۶۵ﺷﻤﺎﺭﻩ ﻛﺎﺭﺕ ﭘﺮﺩﺍﺧﺖ ﻛﻨﻨﺪﻩ ﺻﻮﺭﺗﺤﺴﺎﺏpaymentPcn
ﺭﺩﻳﻒﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲﺟﺎﻳﮕﺎﻩﻓﻴﻠﺪ
۶۶ﺷﻤﺎﺭﻩ/ﺷﻨﺎﺳﻪ ﻣﻠﻲ/ﻛﺪ ﻓﺮﺍﮔﻴﺮ ﺍﺗﺒﺎﻉ ﻏﻴﺮ ﺍﻳﺮﺍﻧﻲ ﭘﺮﺩﺍﺧﺖ ﻛﻨﻨﺪﻩ ﺻﻮﺭﺗﺤﺴﺎﺏpaymentPid
۶۷ﺗﺎﺭﻳﺦ ﻭ ﺯﻣﺎﻥ ﭘﺮﺩﺍﺧﺖ ﺻﻮﺭﺗﺤﺴﺎﺏpaymentPdt
ﺑﺮﺍﻱ ﺍﺭﺳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺍﺯ TaxApiService.Instance.TaxApis.SendInvoices ﺍﺳﺘﻔﺎﺩﻩ میﻛﻨﻴﻢ . ﺑﺮﺍﻱ ﺍﺭﺳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺑﺎﻳﺪ ﻣﺎﻧﻨﺪ ﺯﻳﺮ ﻋﻤﻞ ﻛﻨﻴﺪ. ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ invoice1 ﻭ invoice2 ﻭ … ﻫﺮ ﻳﻚ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺟﺪﺍﮔﺎﻧﻪ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺎﻳﺪ ﭘﺮ ﺷﻮﻧﺪ. ﻫﻤﭽﻨﻴﻦ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺟﻨﺲ InvoiceDto ﻫﺴﺘﻨﺪ .

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

var invoices= new List{ 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 { 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;

منبع: راهرخ

نوشته‌های تازه

آخرین دیدگاه‌ها

دسته‌ها

بیشتر بخوانید  دستورالعمل فنی نحوه اتصال به سامانه مودیان