VatNumberKit 是一个 Swift 库,用于在 iOS 和 macOS 上检查和验证增值税号(基于校验和 & 在线政府服务)。
Swift Package Manager 是一种用于管理 Swift 代码分发的工具。 它与 Swift 构建系统集成,可自动执行下载、编译和链接依赖项的过程。
需要 Xcode 11+ 才能使用 Swift Package Manager 构建 VatNumberKit。
要使用 Swift Package Manager 将 VatNumberKit 集成到您的 Xcode 项目中,请将其添加到您的 Package.swift
的 dependencies 值中。
dependencies: [
.package(url: "https://github.com/frederik-jacques/vatnumberkit.git", .upToNextMajor(from: "0.1.0"))
]
如果您不想使用 Swift Package Manager,您可以手动将 VatNumberKit 集成到您的项目中。
使用静态方法 VatNumberKit.validateFormat(vatNumber:)
来检查增值税号格式(基于正则表达式)是否有效。
此调用的结果返回一个 VatNumberKit.ValidationOutput
对象,该对象具有以下属性。
rawVatNumber
: 原始增值税号vatNumber
: 一个 VatNumber
对象(国家/地区和号码已分离)isValid
: 格式是否有效import VatNumberKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let validationOutput = VatNumberKit.validateFormat(vatNumber: "BE0651634023"), validationOutput.isValid {
print("The VAT number has a valid format")
}
}
}
使用静态方法 VatNumberKit.validateChecksum(rawVatNumber:)
来检查给定增值税号的校验和是否有效。
此调用的结果返回一个 Boolean
,指示校验和是否正确。
import VatNumberKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if VatNumberKit.validateChecksum(rawVatNumber: "BE0651634023"){
print("The VAT number has a valid checksum")
}
}
}
VatNumberKit 还允许您根据 2 项在线服务验证增值税号。
使用静态方法 VatNumberKit.validateOnline(vatNumber:completionHandler:)
来使用在线验证。
VatNumberKit 将根据国家/地区代码自动选择正确的服务。
VatNumberKit.validateOnline(vatNumber: "GB835145337") { result in
switch result {
case .success(let validation):
if validation.isValid {
// Retrieve the meta data for this VAT number (name & address)
// Metadata is not always available.
if let metaData = validation.metaData {
print("§§ Name - \(metaData.name)")
print("§§ Address - \(metaData.address)")
}
}
else {
print("§§ VAT number is not valid")
}
case .failure(let error):
print("Error validating number")
if let validationError = error as? VatNumberKit.ValidationServiceError {
switch validationError {
case .invalidUrl:
print("The request url was not valid")
case .invalidJsonResponse:
print("The json returned from the service is invalid")
case .invalidUrlResponse:
print("The response returned from the service is invalid")
case .validationServiceDown:
print("The validation services is down")
case .vatNumberHasIncorrectNumberOfDigits:
print("The supplied VAT number has an incorrect number of digits (UK service only)")
case .vatNumberDoesNotMatchRegisteredCompany:
print("The supplied VAT number does not match a registered company (UK service only)")
}
}
else {
// Regular error
}
}
使用静态方法 VatNumberKit.searchVatNumbersInText(:applyChecksumValidation:)
在文本中查找增值税号。
此方法返回一个 VatNumberKit.ValidationOutput
结构的 Set。
import VatNumberKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let validationObjects = VatNumberKit.searchVatNumbersInText(text: "This is a VAT number that is BE0651634023 somewhere in the text. \n Apple's Belgian VAT number is BE0842936235")
// Will contain 2 VatNumberKit.ValidationOutput structs.
}
}
国家/地区 | 离线格式验证(正则表达式) | 离线校验和验证 | 在线验证 |
---|---|---|---|
奥地利 | ✅ | ✅ | ✅ |
比利时 | ✅ | ✅ | ✅ |
保加利亚 | ✅ | ✅ | ✅ |
克罗地亚 | ✅ | ✅ | ✅ |
塞浦路斯 | ✅ | ✅ | ✅ |
捷克共和国 | ✅ | ✅ | ✅ |
丹麦 | ✅ | ✅ | ✅ |
爱沙尼亚 | ✅ | ✅ | ✅ |
欧洲实体 | ✅ | ✅ | ✅ |
芬兰 | ✅ | ✅ | ✅ |
法国 | ✅ | ✅ | ✅ |
德国 | ✅ | ✅ | ✅ |
英国 | ✅ | ✅ | ✅ |
希腊 | ✅ | ✅ | ✅ |
匈牙利 | ✅ | ✅ | ✅ |
爱尔兰 | ✅ | ✅ | ✅ |
意大利 | ✅ | ✅ | ✅ |
拉脱维亚 | ✅ | ✅ | ✅ |
立陶宛 | ✅ | ✅ | ✅ |
卢森堡 | ✅ | ✅ | ✅ |
马耳他 | ✅ | ✅ | ✅ |
荷兰 | ✅ | ✅ | ✅ |
北爱尔兰 | ✅ | ✅ | ✅ |
波兰 | ✅ | ✅ | ✅ |
葡萄牙 | ✅ | ✅ | ✅ |
罗马尼亚 | ✅ | ✅ | ✅ |
斯洛伐克 | ✅ | ✅ | ✅ |
斯洛文尼亚 | ✅ | ✅ | ✅ |
西班牙 | ✅ | ✅ | ✅ |
瑞典 | ✅ | ✅ | ✅ |
请随时打开 PR 以添加其他国家/地区!
用于查找有关校验和的更多信息的来源,因为似乎每个国家/地区都忘记记录它是如何计算的 :)
VatNumberKit 在 MIT 许可证下发布。 有关详细信息,请参阅 LICENSE。