J.W. Ile to by kosztowało?
340k
@kzkzg: to ja powiem 339k
Pytanie co rozumiesz przez "integrację z KSeF"?
Tylko zmapowanie interface sieciowego czy jakąś logikę biznesową?
Zależy od liczby ludzi. Im więcej ludzi tym wyższy koszt.
@MarekR22: Zmapowanie, w postaci plików .dll
coś na wzór:
using System.IO;
using System.Xml.Schema;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System;
using System.Linq;
using System.Net.Http;
namespace RESTAPI3
{
[ComVisible(true)]
[ProgId("RESTAPI3.Class1")]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class Class1
{
private string body;
private string bodyTok;
private string GenTok;
async void getchallenge(string bramka, string nip)
{
string datawej = @" {""contextIdentifier"": {""type"": ""onip"", ""identifier"": " + nip + "}}";
var doc = new StringContent(datawej, Encoding.UTF8, "application/json");
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(bramka);
var response = client.PostAsync("api/online/Session/AuthorisationChallenge/", doc).Result;
if (response.IsSuccessStatusCode)
//if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
{
//Console.Write("Success");
this.body = await response.Content.ReadAsStringAsync();
}
else
{
this.body = await response.Content.ReadAsStringAsync();
}
}
}
async void InitToken(string bramka)
{
string datawej = "";
var doc = new StringContent(datawej, Encoding.UTF8, "application/octet-stream");
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(bramka);
var response = client.PostAsync("api/online/Session/InitToken/", doc).Result;
if (response.IsSuccessStatusCode)
//if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
{
//Console.Write("Success");
this.bodyTok = await response.Content.ReadAsStringAsync();
}
else
{
this.bodyTok = await response.Content.ReadAsStringAsync();
}
}
}
async void generateToken(string bramka, string roleType, string description)
{
string aa = @" {""contextIdentifier"": {""type"": ""onip"", ""identifier"": " + description + "}}";
string datawej = @" {""generateToken"": {""description"": ""opis"", ""credentialsRoleList"": [{""roleType"":""introspection"",""roleDescription"": ""opis""}]}}";
var doc = new StringContent(datawej, Encoding.UTF8, "application/json");
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(bramka);
var response = client.PostAsync("api/online/Credentials/GenerateToken/", doc).Result;
if (response.IsSuccessStatusCode)
//if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
{
//Console.Write("Success");
this.GenTok = await response.Content.ReadAsStringAsync();
}
else
{
this.GenTok = await response.Content.ReadAsStringAsync();
}
}
}
public string getchall(string bramka, string nip)
{
this.getchallenge(bramka,nip);
return this.body;
}
public string InitTok(string bramka)
{
this.InitToken(bramka);
return this.bodyTok;
}
public string genTok(string bramka, string roleType, string description)
{
this.generateToken(bramka, roleType, description);
return this.GenTok;
}
}
}
Ten dll zwraca numer referencyjny z bramki dla podanego nipu. Do reszty nie wiem jak się zabrać. Chodziłoby o podpis XML, wysyłkę pojedynczej faktury, wysyłkę paczki faktur, pobranie UPO, pobranie faktur już wysłanych i nadawanie uprawnień. Bez generowania XML, to już jest.
Ja ci to zrobię za złotówkę plus VAT jak mi uzasadnisz "C# bo...?"
marian pazdzioch napisał(a):
"C# bo...?"
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.