Sha256: c9168a9292dd6117dbff809d64dbf949f091778a3a4a5b75b624d2c542ef1fce
Contents?: true
Size: 1.2 KB
Versions: 4
Compression:
Stored size: 1.2 KB
Contents
require 'europe/vat/rates' require 'europe/vat/format' require 'savon' # Europe Gem module Europe # VAT module Vat WSDL = 'http://ec.europa.eu/taxation_customs/' \ 'vies/checkVatService.wsdl'.freeze NS = 'urn:ec.europa.eu:taxud:vies:services:checkVat:types'.freeze def self.validate(number) response = send_request(number[0..1], number[2..-1]) return :failed unless response.success? response.body[:check_vat_response].tap { |x| x.delete(:@xmlns) } rescue Savon::HTTPError, Savon::SOAPFault return :failed rescue Timeout::Error return :timeout end def self.charge_vat?(origin_country, number) return false if number.nil? || number.empty? if origin_country.to_sym == number[0..1].to_sym true else Europe::Countries::COUNTRIES .keys.include?(number[0..1].to_sym) end end def self.send_request(country_code, number) client = Savon.client(wsdl: WSDL, namespace: NS, open_timeout: 10, read_timeout: 10) client.call(:check_vat, message: { countryCode: country_code, vatNumber: number.delete(' ') }) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
europe-0.0.8 | lib/europe/vat/vat.rb |
europe-0.0.7 | lib/europe/vat/vat.rb |
europe-0.0.6 | lib/europe/vat/vat.rb |
europe-0.0.5 | lib/europe/vat/vat.rb |