2012-02-06 6 views
22

कोई भी VIES को सत्यापित करने के लिए हमारी वेबसाइट पर एक फॉर्म को शामिल करने का तरीका जानता है? मुझे यूरोपीय संघ की वेबसाइट के माध्यम से इसे प्रमाणित करने के लिए जानकारी मिलती है।VIES वैट संख्या सत्यापन

http://ec.europa.eu/taxation_customs/vies/vieshome.do

और क्या ब्याज मुझे मेरी वेबसाइट से भुगतान डेटा के रूप से सीधे मान्य है।

धन्यवाद।

उत्तर

6

यह वेबसाइटें सर्वर पर एक साधारण HTML फॉर्म भेजती हैं।

सबसे आसान समाधान यूआरएल में पैराम पास करना है और प्रतिक्रिया प्राप्त करने के लिए file_get_contents का उपयोग करना है।

प्रतिक्रिया को तब आप जो जानकारी चाहते हैं उसे निकालने के लिए पार्स किया जा सकता है। परीक्षण नहीं किया गया, लेकिन विचार दिखाता है:

$country1 = 'PL'; 
$country2 = 'PL'; 
$vatnum1 = '123456'; 
$vatnum2 = '789012'; 

//Prepare the URL 
$url = 'http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms='.$country1.'&iso='.$country1.'&vat='.$vatnum1.'&name=&companyType=&street1=&postcode=&city=&requesterMs='.$country2.'&requesterIso='.$country2.'&requesterVat='.$vatnum2.'&BtnSubmitVat=Verify'; 

$response = file_get_contents($url); 
// Do sth with the response 
echo $response; 
+0

बहुत धन्यवाद, मैंने संख्या मान्य होने पर तुलना करने के लिए $ प्रतिक्रिया पर preg_match फ़ंक्शन का उपयोग किया। अब यह वास्तव में काम करने के लिए एक वैध संख्या की आवश्यकता है। कोड: यदि (preg_match ("/ नहीं, अवैध वैट नंबर/i", "$ प्रतिक्रिया")) { गूंज "अमान्य संख्या"; } अन्य { गूंज "मान्य संख्या"; } – Minucioso

+1

यह काफी आसान लग रहा है। हालांकि अगर उनकी वेबसाइट कभी बदलती है तो यह टूट जाएगी। क्या कोई आधिकारिक एपीआई है? – Johan

+10

@Johan यह आलेख वर्णन करता है कि VIES वैट SOAP वेब सेवा का उपयोग कैसे करें: http://www.webmastersdiary.com/2011/12/php-vies-vat-number-validation-european.html –

78

वास्तव में, VIES डेटाबेस को उनके API के माध्यम से पूछताछ की जा सकती है।
वे केवल एसओएपी प्रोटोकॉल का समर्थन करते हैं, लेकिन यह पर्याप्त होना चाहिए। यहाँ

$client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"); 
var_dump($client->checkVat(array(
    'countryCode' => $countryCode, 
    'vatNumber' => $vatNo 
))); 

डबल्यूएसडीएल है::

यहाँ एक सरल उदाहरण है http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl

एपीआई जो मूल एक पर आधारित होते हैं के कई प्रदाताओं रहे हैं, लेकिन अलग अलग प्रोटोकॉल का उपयोग प्रदान करते हैं। बस कहा, वे अनुवादकों की तरह कार्य करते हैं - अपने आवेदन के साथ जेसन का उपयोग करके और मूल एपीआई में एसओएपी का उपयोग करके कनेक्ट करें। कनेक्शन टाइमआउट के साथ इनका एक बड़ी समस्या है।

ऐसे समय होते हैं जहां VIES डेटाबेस धीरे-धीरे प्रतिक्रिया दे रहा है, इस प्रकार प्रतिक्रिया वापस करने के लिए और अधिक समय की आवश्यकता होती है। यह आपके आवेदन को डिजाइन करते समय विचार किया जाना चाहिए।

http://www.braemoor.co.uk/software/vat.shtml

डाउनलोड लिंक: http://www.braemoor.co.uk/software/downloads/jsvat.zip

webservices का उपयोग करते हुए कुछ समय एक विकल्प नहीं है

+0

I इस साबुन एपीआई पर आधिकारिक दस्तावेज की खोज कर रहे हैं, क्या डॉकू का लिंक है? – Pablo

+0

ठीक है, यदि आप ब्राउज़र में लिंक खोलते हैं तो आप "xsd: दस्तावेज़" नोड की सामग्री देख सकते हैं। –

+0

http://ec.europa.eu/taxation_customs/vies/faq.html#item_16 - Q16 में SOAP इंटरफ़ेस पर कुछ जानकारी है। – kasimir

2

यहाँ एक पूर्ण ढेर सत्यापन जावास्क्रिप्ट regex + देश प्रति सापेक्ष साथ आधारित सत्यापन स्क्रिप्ट है।

इसके अलावा यूरोपीय संघ के वैट सत्यापन के लिए पीएचपी बंदरगाहों देखें:

+1

इसके लिए https://github.com/se-panfilov/jsvat बेहतर उपयोग करें - यह ब्रामूर के lib पर आधारित है, लेकिन आधुनिक स्टैंडअर्ट और परीक्षणों के साथ फिर से लिखना, और बोवर और एनपीएम –

+1

में भी जोड़ा गया है आपके lib का दावा करने के लिए गणित जादू बनाने का दावा कौन सा वैट एनआर मान्य है और जो नहीं है। इसका मतलब है कि (ए) यह गैर-आधिकारिक वैट एल्गोरिदम पर निर्भर करता है, क्योंकि उन्हें आधिकारिक रूप से प्रकाशित नहीं किया जाता है (कुछ गोपनीय हैं), और वे अप्रचलित हो सकते हैं और (बी) तथ्य यह है कि एक संख्या वैध है इसका मतलब यह नहीं है कि यह वास्तव में है आवंटित। केवल आधिकारिक VIES सेवा ही जांच सकती है, क्योंकि यह सदस्य देशों के डेटाबेस में जाती है। मैं यह नहीं कह रहा कि आपने एक बुरी नौकरी की है, लेकिन आपको सीमाओं के बारे में स्पष्ट होना चाहिए :) –

16

तो कुछ कारणों से आप साबुन का उपयोग नहीं कर सकते हैं अपने सर्वर पर (उपलब्ध नहीं है, जो कुछ भी) तो के लिए file_get_contents आपका मित्र है।

के नीचे कार्यान्वयन SOAP, कर्ल, XMLParser (सरल या नहीं) पर पर निर्भर नहीं है। यह मानक PHP कोड है जो आपके पास होने वाले किसी भी PHP संस्करण पर काम करना चाहिए।

फ़ंक्शन निम्न आइटम:

  • countryCode
  • VATNUMBER
  • requestDate
  • वैध
  • नाम
  • पता

ठीक है, मुझे आशा है कि यह मदद करता है :-)

<?php 
DEFINE ('VIES_URL', 'http://ec.europa.eu/taxation_customs/vies/services/checkVatService'); 

/** 
* VIES VAT number validation 
* 
* @author Eugen Mihailescu 
*   
* @param string $countryCode   
* @param string $vatNumber   
* @param int $timeout   
*/ 
function viesCheckVAT($countryCode, $vatNumber, $timeout = 30) { 
    $response = array(); 
    $pattern = '/<(%s).*?>([\s\S]*)<\/\1/'; 
    $keys = array (
      'countryCode', 
      'vatNumber', 
      'requestDate', 
      'valid', 
      'name', 
      'address' 
    ); 

    $content = "<s11:Envelope xmlns:s11='http://schemas.xmlsoap.org/soap/envelope/'> 
    <s11:Body> 
    <tns1:checkVat xmlns:tns1='urn:ec.europa.eu:taxud:vies:services:checkVat:types'> 
     <tns1:countryCode>%s</tns1:countryCode> 
     <tns1:vatNumber>%s</tns1:vatNumber> 
    </tns1:checkVat> 
    </s11:Body> 
</s11:Envelope>"; 

    $opts = array (
      'http' => array (
        'method' => 'POST', 
        'header' => "Content-Type: text/xml; charset=utf-8; SOAPAction: checkVatService", 
        'content' => sprintf ($content, $countryCode, $vatNumber), 
        'timeout' => $timeout 
      ) 
    ); 

    $ctx = stream_context_create ($opts); 
    $result = file_get_contents (VIES_URL, false, $ctx); 

    if (preg_match (sprintf ($pattern, 'checkVatResponse'), $result, $matches)) { 
     foreach ($keys as $key) 
      preg_match (sprintf ($pattern, $key), $matches [2], $value) && $response [$key] = $value [2]; 
    } 
    return $response; 
} 

print_r (viesCheckVAT ('RO', '19386256')); 
?> 
1

आप यूरोपीय वैट सत्यापन के लिए अब js lib उपयोग कर सकते हैं:

jsvat - small library to check validity of EU VAT number

braemoor's vat lib के आधार पर, लेकिन साथ पुनर्लेखन आधुनिक जेएस स्टैंडअर्ट्स (ब्रेमूर, एक्सपैम्प स्टिल उपयोग .eval()) के लिए उपयोग किया गया और bower और npm रजिस्ट्री में जोड़ा गया। यूनिट परीक्षणों के साथ भी।

bower i jsvat --save

या

npm i jsvat --save

1

मैं रूबी में इस की जरूरत है, इसलिए यहाँ मेरी कोड

  • मणि है स्थापित savon
  • अपने नियंत्रक

    के लिए इस विधि को जोड़ने
    def validateVAT 
        # create a client for the service 
        client = Savon.client(wsdl: 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl') 
        response = client.call(:check_vat, message: {countryCode: params[:country_code], vatNumber: params[:vat]}) 
        render json: { valid: response.body[:check_vat_response][:valid] }, status: :ok 
    end 
    
0

VIES डेटाबेस के लिए एक एपीआई भी है। https://vatlayer.com/documentation

मैं पता जानकारी को विभाजित करने के लिए चारों ओर एक काम की तलाश में हूं। अब आप इसे प्राप्त कर सकते हैं लेकिन यह एक स्ट्रिंग है।

1

मैं http://vatid.eu पर बाकी सेवा करते थे, लेकिन जब से वे Vies द्वारा अवरुद्ध कर रहे थे (मैं निवेदनों की अधिक संख्या के कारण लगता है), मैं http://apilayer.net/ में बदला गया है।

नि: शुल्क योजना प्रति माह 100 अनुरोध है, इसलिए मैंने एक छोटा कैश लागू किया है और मैं अपनी वैट संख्या (प्रत्येक वर्ष नवीकरणीय) की अपनी तालिका उत्पन्न करता हूं, इसलिए मैं वही वैट नंबर की जांच करने के अनुरोधों को अधिक खर्च नहीं करता एक बार। मेरी ज़रूरतों को पूरा करता है;)

+0

एफवाईआई यह अवरुद्ध है क्योंकि वे डेटा को मुद्रीकृत करने की कोशिश कर रहे हैं। टीओएस से: "इस साइट की सामग्री का कोई भी पुनर्वितरण, चाहे वाणिज्यिक उद्देश्य के लिए या अन्यथा [...] स्पष्ट रूप से प्रतिबंधित है।" –

+1

यह अजीब है ... vatid.eu मुक्त था, और अब वे अवरुद्ध हैं। vatlayer.com वर्तमान में मुद्रीकरण कर रहे हैं, और वे चल रहे हैं। ऐसा क्यों हो सकता है? – Tarrakis

0

यह एक संगीतकार पैकेज है, जो VIES वेब सेवा को लपेटता है। आप इस तेज़ और आसान का उपयोग कर सकते हैं: https://github.com/drahosistvan/vatvalidation

संबंधित मुद्दे