rgwspublic

package module
v0.0.0-...-cf98899 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 30, 2022 License: AGPL-3.0 Imports: 7 Imported by: 0

README

rgwspublic

client library for greek GSIS tax service in Go

GoDoc

Example

package main

import (
	"fmt"

	"github.com/kamilakis/rgwspublic"
)

func main() {

	// get service version
	v, err := rgwspublic.Version()
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(v)

	// get info using VAT number of a public service
	// replace username and password with the ones you got from
	// https://www1.aade.gr/sgsisapps/tokenservices/protected/displayConsole.htm
	i, err := rgwspublic.GetVATInfo("", "090165560", "username", "password")
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(i)
}

Note that username and password is supplied from the service.

go get -v

go run main.go

Two functions are available, GetVatInfo(string, string, string, string): GetVatInfo() accepts two vat numbers (strings), and service credentials (username, password). First VAT number is the callee, second is the one we want information for. The callee can be empty.

and Version(): which returns the service's current version.

Βήμα - βήμα
  1. Εγγραφή στην υπηρεσία κάνοντας χρήση των κωδικών TAXISnet.
  2. Απόκτηση ειδικών κωδικών πρόσβασης μέσω της εφαρμογής Διαχείριση Ειδικών Κωδικών.
  3. Χρήση ένος προγράμματος της αρεσκείας σας για την κλήση της υπηρεσίας.
Τα βασικά χαρακτηριστικά της υπηρεσίας είναι:
  • Η υπηρεσία μπορεί να αξιοποιηθεί απ’ όλους τους πιστοποιημένους χρήστες του TAXISnet.
  • Υπάρχει μηνιαίο όριο κλήσεων της υπηρεσίας.
  • Ο ΑΦΜ τα στοιχεία του οποίου αναζητούνται, ενημερώνεται με ειδική ειδοποίηση, για το ΑΦΜ / ονοματεπώνυμο που έκανε την αναζήτηση.
  • Μέσω της οθόνης εγγραφής στην υπηρεσία μπορεί κάποιος να εξουσιοδοτήσει ένα τρίτο ΑΦΜ να καλεί την υπηρεσία γι’ αυτόν.

Τα WSDL / ENDPOINT / XSD της αναβαθμισμένης υπηρεσίας είναι:

Πρόκειται για Soap JAX-WS 2.0 Web Service (έκδοσης SOAP 1.2).

Για να καλέσει ένας σταθμός εργασίας την υπηρεσία απαιτείται δικτυακή πρόσβαση στο www1.gsis.gr και στο port 443.

Εφόσον γίνει χρήση Java, απαιτείται χρήση Java 1.8 ή μεταγενέστερη λόγω της χρήσης του πρωτοκόλλου επικοινωνίας TLS1.2.

Περιλαμβάνονται: a) παραδείγματα κλήσης (Request XML / Response XML) του Web Service, b) ένα SoapUI project για να γίνει import στο SoapUI. Προτείνεται χρήση SoapUI Version 5.4.0 ή μεταγενέστερη λόγω της Java 1.8 ( https://www.soapui.org/downloads/latest-release.html ).

Documentation

Index

Constants

View Source
const (
	// Endpoint is the url for WSDL service
	Endpoint                                       = "https://www1.gsis.gr/wsaade/RgWsPublic2/RgWsPublic2"
	RG_WS_PUBLIC_AFM_CALLED_BY_BLOCKED             = "" /* 141-byte string literal not displayed */
	RG_WS_PUBLIC_AFM_CALLED_BY_NOT_FOUND           = "" /* 153-byte string literal not displayed */
	RG_WS_PUBLIC_EPIT_NF                           = "" /* 314-byte string literal not displayed */
	RG_WS_PUBLIC_FAILURES_TOLERATED_EXCEEDED       = "" /* 192-byte string literal not displayed */
	RG_WS_PUBLIC_MAX_DAILY_USERNAME_CALLS_EXCEEDED = "" /* 176-byte string literal not displayed */
	RG_WS_PUBLIC_MONTHLY_LIMIT_EXCEEDED            = "Υπέρβαση του Μέγιστου Επιτρεπτού Μηνιαίου Ορίου Κλήσεων."
	RG_WS_PUBLIC_MSG_TO_TAXISNET_ERROR             = "" /* 148-byte string literal not displayed */
	RG_WS_PUBLIC_NO_INPUT_PARAMETERS               = "" /* 132-byte string literal not displayed */
	RG_WS_PUBLIC_SERVICE_NOT_ACTIVE                = "Η υπηρεσία δεν είναι ενεργή."
	RG_WS_PUBLIC_TAXPAYER_NF                       = "" /* 165-byte string literal not displayed */
	RG_WS_PUBLIC_TOKEN_AFM_BLOCKED                 = "" /* 195-byte string literal not displayed */
	RG_WS_PUBLIC_TOKEN_AFM_NOT_AUTHORIZED          = "" /* 144-byte string literal not displayed */
	RG_WS_PUBLIC_TOKEN_AFM_NOT_FOUND               = "" /* 138-byte string literal not displayed */
	RG_WS_PUBLIC_TOKEN_AFM_NOT_REGISTERED          = "Ο τρέχον χρήστης δεν έχει εγγραφεί για χρήση της υπηρεσίας."
	RG_WS_PUBLIC_TOKEN_USERNAME_NOT_ACTIVE         = "Ο κωδικός χρήστη (username) που χρησιμοποιήθηκε έχει ανακληθεί."
	RG_WS_PUBLIC_TOKEN_USERNAME_NOT_AUTHENTICATED  = "Ο συνδυασμός χρήστη/κωδικού πρόσβασης που δόθηκε δεν είναι έγκυρος."
	RG_WS_PUBLIC_TOKEN_USERNAME_NOT_DEFINED        = "Δεν ορίσθηκε ο χρήστης που καλεί την υπηρεσία."
	RG_WS_PUBLIC_TOKEN_USERNAME_TOO_LONG           = "" /* 142-byte string literal not displayed */
	RG_WS_PUBLIC_WRONG_AFM                         = "O Α.Φ.Μ. για τον οποίο ζητούνται πληροφορίες δεν είναι έγκυρος."
)

Variables

View Source
var (
	ErrInvalidVAT         = errors.New("invalid VAT format given")
	ErrInvalidCredentials = errors.New("username or password cannot be less than 6 chars")
)

Functions

func Version

func Version() (*string, error)

Version gets web service version returns a string or an error

Types

type ErrorInfo

type ErrorInfo struct {
	Code    string `xml:"Code>Value" json:"code"`
	Message string `xml:"Reason>Text" json:"message"`
}

ErrorInfo holds error info

type ErrorVATInfo

type ErrorVATInfo struct {
	Code    string `xml:"error_code" json:"code"`
	Message string `xml:"error_descr" json:"message"`
}

ErrorVATInfo holds error info

type FirmActivity

type FirmActivity struct {
	Code         int    `xml:"firm_act_code" json:"code"`                   // ΚΩΔΙΚΟΣ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ
	Descriptionn string `xml:"firm_act_descr" json:"description"`           // ΠΕΡΙΓΡΑΦΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ
	Kind         int    `xml:"firm_act_kind" json:"kind"`                   // ΕΙΔΟΣ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ: 1=ΚΥΡΙΑ, 2=ΔΕΥΤΕΡΕΥΟΥΣΑ, 3=ΛΟΙΠΗ, 4=ΒΟΗΘΗΤΙΚΗ
	KindDescr    string `xml:"firm_act_kind_descr" json:"kind_description"` // ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ: ΚΥΡΙΑ, ΔΕΥΤΕΡΕΥΟΥΣΑ, ΛΟΙΠΗ, ΒΟΗΘΗΤΙΚΗ
}

type VATCalledBy

type VATCalledBy struct {
	TokenUsername       string `xml:"token_username" json:"username"`
	TokenAFM            string `xml:"token_afm" json:"vat"`
	TokenAFMFullName    string `xml:"token_afm_fullname" json:"vat_fullname"`
	AFMCalledBy         string `xml:"afm_called_by" json:"called_by"`
	AFMCalledByFullName string `xml:"afm_called_by_fullname" json:"vat_called_by_fullname"`
	AsOnDate            string `xml:"as_on_date" json:"as_on_date"`
}

VATCalledBy is the data relative to who did the search

type VATInfo

type VATInfo struct {
	CallSeqID  int            `xml:"call_seq_id" json:"call_seq_id"`
	CalledBy   VATCalledBy    `xml:"afm_called_by_rec" json:"called_by"`
	Result     VATResult      `xml:"basic_rec"  json:"result"`
	Activities []FirmActivity `xml:"firm_act_tab>item" json:"activities"`
	Error      *ErrorVATInfo  `xml:"error_rec" json:"error,omitempty"`
}

func GetVATInfo

func GetVATInfo(calledby, calledfor, user, pass string) (*VATInfo, error)

GetVATInfo associated with a VAT number accepts a called by VAT and a called for VAT, username and password returns AFMData or an error

func (*VATInfo) String

func (a *VATInfo) String() string

type VATResult

type VATResult struct {
	AFM                         string `xml:"afm" json:"afm"`                                              // ΑΦΜ
	DOY                         string `xml:"doy" json:"doy"`                                              // ΚΩΔΙΚΟΣ ΔΟΥ
	DOYDescription              string `xml:"doy_descr" json:"doy_description"`                            // ΠΕΡΙΓΡΑΦΗ ΔΟΥ
	InitialFlagDescription      string `xml:"i_ni_flag_descr" json:"initial_flag_description"`             // ΦΠ /ΜΗ ΦΠ
	DeactivationFlag            string `xml:"deactivation_flag" json:"deactivation_flag"`                  // ΕΝΔΕΙΞΗ ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΟΣ ΑΦΜ:1=ΕΝΕΡΓΟΣ ΑΦΜ 2=ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΟΣ ΑΦΜ
	DeactivationFlagDescription string `xml:"deactivation_flag_desc" json:"deactivation_flag_description"` // ΕΝΔΕΙΞΗ ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΟΣ ΑΦΜ(ΠΕΡΙΓΡΑΦΗ): ΕΝΕΡΓΟΣ ΑΦΜ ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΟΣ ΑΦΜ
	FirmFlagDescription         string `xml:"firm_flag_descr" json:"firm_flag_description"`                // ΤΙΜΕΣ: ΕΠΙΤΗΔΕΥΜΑΤΙΑΣ, ΜΗ ΕΠΙΤΗΔΕΥΜΑΤΙΑΣ, ΠΡΩΗΝ ΕΠΙΤΗΔΕΥΜΑΤΙΑΣ
	Onomasia                    string `xml:"onomasia" json:"onomasia"`                                    // ΕΠΩΝΥΜΙΑ
	CommercialTitle             string `xml:"commer_title" json:"commercial_title"`                        // ΤΙΤΛΟΣ ΕΠΙΧΕΙΡΗΣΗΣ
	LegalStatusDescription      string `xml:"legal_status_descr" json:"legal_status_descr"`                // ΠΕΡΙΓΡΑΦΗ ΜΟΡΦΗΣ ΜΗ Φ.Π.
	PostalAddress               string `xml:"postal_address" json:"postal_address"`                        // ΟΔΟΣ ΕΠΙΧΕΙΡΗΣΗΣ
	PostalAddressNo             string `xml:"postal_address_no" json:"postal_address_no"`                  // ΑΡΙΘΜΟΣ ΕΠΙΧΕΙΡΗΣΗΣ
	PostalZipCode               string `xml:"postal_zip_code" json:"postal_zip_code"`                      // ΤΑΧ. ΚΩΔ. ΕΠΙΧΕΙΡΗΣΗΣ
	PostalAreaDescription       string `xml:"postal_area_description" json:"postal_area_description"`      // ΠΕΡΙΟΧΗ ΕΠΙΧΕΙΡΗΣΗΣ
	RegistrationDate            string `xml:"regist_date" json:"registration_date"`                        // ΗΜ/ΝΙΑ ΕΝΑΡΞΗΣ
	StopDate                    string `xml:"stop_date" json:"stop_date"`                                  // ΗΜ/ΝΙΑ ΔΙΑΚΟΠΗΣ
	NormalVATSystemFlag         string `xml:"normal_vat_system_flag" json:"normal_vat_system_flag"`
}

VATResult is the data relative to an entity's VAT search

type XMLBody

type XMLBody struct {
	VATInfo VATInfo    `xml:"rgWsPublic2AfmMethodResponse>result>rg_ws_public2_result_rtType"`
	Version *string    `xml:"rgWsPublic2VersionInfoResponse>result"`
	Error   *ErrorInfo `xml:"Fault" json:"error,omitempty"`
}

XMLBody is the body of a response

type XMLResponse

type XMLResponse struct {
	XMLName xml.Name `xml:"Envelope"`
	Body    XMLBody  `xml:"Body"`
}

XMLResponse is where we parse an http response

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL