e-Deklaracje w Visual FoxPro

0

Witam
Mam aplikację do wysyłki pitów do bramki Ministerstwa Finansów napisaną w C#. Działa dobrze.
Problem w tym, że muszę zrobić kolejną ale pod Visual FoxPro i tutaj zaczęły się problemy. W żaden sposób nie mogę wysłać pitu do bramki.
Może ktoś wie jak to zrealizować.
Poniżej fragment kodu programu, który ma realizować wysyłkę:

LOCAL loGateServiceSOAP11port AS "XML Web Service"
*LOCAL loGateServiceSOAP11port AS "MSSOAP.SoapClient30"
* Do not remove or alter following line. It is used to support IntelliSense for your XML Web service.
*__VFPWSDef__: loGateServiceSOAP11port = https://test-bramka.edeklaracje.gov.pl/uslugi/dokumenty?wsdl , GateService , GateServiceSOAP11port
LOCAL loWSHandler
TRY
   loWSHandler = NEWOBJECT("WSHandler",IIF(VERSION(2)=0,"",HOME()+"FFC\")+"_ws3client.vcx")
   loGateServiceSOAP11port = loWSHandler.SetupClient("https://test-bramka.edeklaracje.gov.pl/uslugi/dokumenty?wsdl", "GateService", "GateServiceSOAP11port")
   * Call your XML Web service here.  ex: leResult = loGateServiceSOAP11port.SomeMethod() 
   
Local gnFileHandle,nSize
   LOCAL plik as VOID  
   gnFileHandle = FOPEN('d:\\test23.xml.xades')
   nSize =  FSEEK(gnFileHandle, 0, 2)   && Przesuń wskaźnik na EOF
   IF nSize <= 0
       * Jeśli plik jest pusty, wyświetla informacje o tym.
       WAIT WINDOW "Ten plik jest pusty!" NOWAIT
   ELSE
       FSEEK(gnFileHandle, 0, 0)      && Przesuń wskaźnik na BOF       
       plik = FREAD(gnFileHandle, nSize)
       plikB64 = STRCONV(plik,13)
       thisform.writeerror(plikB64,'cotamjest.txt')
   ENDIF 
   FCLOSE(gnFileHandle)
   
   leResult = loGateServiceSOAP11port.sendDocument(plikB64)     // tutaj dostaję błąd niewłaściwy parametr
   

Poniżej fragment kodu w C# który działa

 
eDeklaTestowy.GateServicePortTypeClient bramka = new eDeklaTestowy.GateServicePortTypeClient(@"GateServiceSOAP12port");
eDeklaTestowy.requestUPO reqUPO = new eDeklaTestowy.requestUPO();
eDeklaTestowy.requestUPOResponse reqOdp = new eDeklaTestowy.requestUPOResponse();

reqUPO.refId = nrref;
reqOdp = bramka.requestUPO(reqUPO);
string kododpowiedzi = reqOdp.status.ToString() + ' ' + reqOdp.statusOpis + "\r\n\r\n" + reqOdp.upo;
string odpowiedz = bramka.Endpoint.Address.Uri.ToString();
textBox1.Text = odpowiedz + "\r\n\r\n" + kododpowiedzi;

A to fragment w PHP, który też działa

<?php

$bramka = 'https://test-bramka.edeklaracje.gov.pl/uslugi/dokumenty?wsdl';

$plik = 'test23.xml.xades' /* podpisany plik do wyslania*/

$wskplik = fopen($plik, 'rb');
$tresc = fread($wskplik, filesize($plik));
fclose($wskplik);
$tresc = base64_encode($tresc);

$soap = new SoapClient(null, array('location' => $bramka, 'uri' => ' ' ));

/* wysyłanie podpisanego dokumentu */
$wynik = $soap->sendDocument($tresc);

/* sprawdzenie statusu przy wysyłaniu dokumentu */
print '<br> Nr referencyjny dokumentu: '.$wynik[refId];
print '<br> Nr Statusu: '.$wynik[status];
print '<br> Opis statusu: '.$wynik[statusOpis];

/* sprawdzenie statusu "po czasie" dokumentu o wcześniejszym nr referencyjnym */
$wynikUPO = $soap->requestUPO($wynik[refId]);

print '<br> Nr Statusu: '.$wynikUPO[status];
print '<br> Opis statusu: '.$wynikUPO[statusOpis];
print '<br> UPO: '.$wynikUPO[upo];

?>
 
0

Witam,

Mam bezczelną prośbę. Czy możesz podzielić się programem w C# do wysyłania deklaracji?

Nie bardzo wiem jak zacząć choć po całym dniu mam już jakieś niewielkie wyobrażenie na ten temat. W tym tempie nie zdążymy wysłać pitów do US :). Rozumiem twój trud i wysiłek włożony w ten program. Pewnie dla ciebie to małe piwo a ja muszę mieć rozwiązanie do poniedziałku.

Będę naprawdę wdzięczny
A.Ch.

0
4program napisał(a):

Poniżej fragment kodu w C# który działa

eDeklaTestowy.GateServicePortTypeClient bramka = new eDeklaTestowy.GateServicePortTypeClient(@"GateServiceSOAP12port");
eDeklaTestowy.requestUPO reqUPO = new eDeklaTestowy.requestUPO();
eDeklaTestowy.requestUPOResponse reqOdp = new eDeklaTestowy.requestUPOResponse();

reqUPO.refId = nrref;
reqOdp = bramka.requestUPO(reqUPO);
string kododpowiedzi = reqOdp.status.ToString() + ' ' + reqOdp.statusOpis + "\r\n\r\n" + reqOdp.upo;
string odpowiedz = bramka.Endpoint.Address.Uri.ToString();
textBox1.Text = odpowiedz + "\r\n\r\n" + kododpowiedzi;



Mógłbyś podesłać kod w C# dzięki któremu pobierasz zawartość pliku - przygotowujesz ją i wysyłasz do bramki?

1 użytkowników online, w tym zalogowanych: 0, gości: 1