Rokh Management Consulting

ﺭﺍﻫﻨﻤﺎی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ 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 = 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 ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻧﻤﺎﻳﻴﺪ ﺗﺎ ﺩﻭ

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

ﻧﻤﻮﻧﻪ ﭘﻴﻜﺮﺑﻨﺪی ﺳﺎﺩﻩ 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. ﺍﺭﺳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ

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

ﺭﺩﻳﻒ ﻋﻨﻮﺍﻥ ﻗﻠﻢ ﺍﻃﻼﻋﺎﺗﻲ ﺟﺎﻳﮕﺎﻩ ﻓﻴﻠﺪ
۱ ﺷﻤﺎﺭﻩ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﻣﺎﻟﻴﺎﺗﻲ 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 ﺍﺳﺘﻔﺎﺩﻩ میﻛﻨﻴﻢ . ﺑﺮﺍﻱ ﺍﺭﺳﺎﻝ ﺻﻮﺭﺕ ﺣﺴﺎﺏ ﺑﺎﻳﺪ ﻣﺎﻧﻨﺪ ﺯﻳﺮ ﻋﻤﻞ ﻛﻨﻴﺪ. ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ 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;

منبع: راهرخ

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

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

دسته‌ها

تازه ها

آنچه مدیر منابع انسانی بهتر است بداند

آنچه مدیر مالی و بهای تمام شده بهتر است بداند

آنچه مدیر بازاریابی بهتر است بداند

آنچه مدیر تولید بهتر است بداند

آنچه مدیر توزیع و فروش بهتر است بداند

آنچه مدیر زنجیره تامین بهتر است بداند

آنچه مدیر فناوری اطلاعات و ارتباطات بهتر است بداند

آنچه مدیر ارتباط با مشتری بهتر است بداند

انتشار در شبکه‌های اجتماعی!

3 دیدگاه

  1. علی 2023-06-25 در 14:48 - پاسخ

    SDK رو از کجا میشه دانلود ;رد

  2. هادی حاجی حیدری 2024-02-28 در 12:43 - پاسخ

    مطالب بسیار با ارزش و گرانبهایی می باشد . در حال مطالعه هستم

    • درود به همراه عرض تبریک سال نو،
      از توجه و حسن نظر شما سپاسگزاریم، وقتی مطالعه کنندگانی چون شما بازخورد ارائه میکنید، به ما در راستای تولید محتوای کابردی بهتر برای کسب و کارها و علاقمندان کمک میکنید لذا کمال تشکر را از شما عزیزان داریم.
      سپاس

دیدگاه خود را بنویسید

رفتن به بالا