2014-02-22 221 views
1

我來自哪裏我不需要做增值稅(增值稅)。但是我正在做的一個項目需要它的輸入來合法完成交易。我在哪裏可以找到VAT API?

我在哪裏可以找到一個API,可以從VAT稅號中獲取相關信息(地址,公司名稱等)?我想用它來自動填充表單,因爲沒有更好的辦法來嚇跑客戶,而不是讓他工作。

+2

通過*增值稅* ,你的意思是*增值稅*,對吧?應根據哪些法律計算增值稅? – Oswald

+0

你想讓這個世界的哪個區域適用?例如,您的「增值稅」是否包含美國銷售稅?我懷疑你會找到適用於每個國家的增值稅登記處的解決方案。 –

+0

嗨,謝謝。以下是直接從項目文件中摘錄的內容:「歐洲使用的英語單詞是增值稅 VAT的荷蘭語翻譯是BTW 在澳大利亞和新西蘭,它們將增值稅GST稱爲」...所以我們正在談論這些地區。我不確定縮寫的具體細節,但這裏是一個典型的格式化的增值稅號碼,它應該回答它的用途問題「NL174904241B0」 – Orangeman555

回答

2

在評論中提到的VIES有一個API。我已經實現了你所要求的,主要是出於同樣的原因。和它的'PHP。在這裏你去:

class VatValidator { 

const validVatId = 'valid'; 
const invalidVatId = 'invalid'; 

/** 
* 
* The european commission (ec) provides a validation database for VAT Id's, which can be accessed via WSDL. 
* We check the given VAT against that Database. 
* 
* Actually that is more reliable than any captcha !!! 
* 
* * only companies have one 
* * the code can not be "brute forced" 
* * simple mass requests can be cut off easily 
* 
* @param String $requestedVatId entire VAT Id including country code 
* @param string $company optional Company Name 
* @param string $city optional company city 
* @return Multiple false on error, String self::validVatId or String self::invalidVatId according to state. 
*/ 
public static function validateVATID($requestedVatId, $company=null, $city=null) 
{ 
    $ret = false; 
    $ecUrl = "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"; 
    $vatid = str_replace(array(' ', '.', '-', ',', ', '), '', trim($requestedVatId)); 
    $cc = substr($vatid, 0, 2); 
    $vn = substr($vatid, 2); 
    $client = new SoapClient($ecUrl); 

    if($client) 
    { 
     $params = array('countryCode' => $cc, 
         'vatNumber' => $vn, 
     ); 

     /* 
     * simple request only since we do not get any further information anyway. 
     * 
     * with $r = $client->checkVatApprox($params); 
     * we could: 
     * 
        'requesterCountryCode' => 'XXX', 
        'requesterVatNumber' => 'XXX' // Own ID!! 

     if (!empty($company)) 
      $params['traderName'] = $company; 
     if (!empty($city)) 
      $params['traderCity'] = $city; 

     $params["traderCompanyType"] = 1; 
     $params["traderStreet"] = 'xyz'; 
     $params["traderPostcode"] = '1234'; 
     */ 

     try 
     { 
      //$r = $client->checkVatApprox($params); 
      $r = $client->checkVat($params); 
      if($r->valid == true) 
      { 
       logMessage(Constants::$debug, 'valid: ' . $vatid); 
       $ret = self::validVatId; 
      } 
      else 
      { 
       logMessage(Constants::$debug, 'invalid: ' . $vatid); 
       $ret = self::invalidVatId; 
      } 

      // This foreach shows every single line of the returned information 
      //    foreach($r as $k=>$prop) 
      //    { 
      //     logMessage(Constants::$debug, $k.': '.$prop); 
      //    } 
      //logMessage(Constants::$debug, print_r($r, true)); 

     } catch(SoapFault $e) { 
      logMessage(Constants::$debug, 'Error, see message: '.$e->faultstring); 
      $ret = $e->faultstring; 
     } 
    } 
    else 
    { 
     logMessage(Constants::$debug, 'cannot connect to ' . $ecUrl); 
     $ret = 'CONNECTERROR'; 
    } 
    return $ret; 
} 
} 

的「XXX」代碼可能是你自己的增值稅號,爲了防止有點frauding通過只是在你自己的ID把...

+0

這是美麗的 - 我不會期望的!我仍然困惑你想出了這個:http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl儘管如此,非常感謝!謝謝! – Orangeman555

+0

公司名稱檢查怎麼辦?此工具只會檢查該號碼是否爲有效號碼,而不是如果向您提供此號碼的客戶來自該公司。我如何檢查增值稅號碼是否適合給定的公司名稱? – Ello

+0

@Ello AFAIK這個工具也可以檢查給定的公司,如果公司名稱在請求中提供,它會檢查。它不會透露任何信息,但會給你一個「有效」或「無效」 –

相關問題