使用外部web服务进行欧盟增值税编号验证

彼得·希尔顿|编剧4分钟读取

如何使用来自Signavio流程治理的欧盟委员会的增值税编号验证SOAP web服务

财务工作流程经常处理公司的增值税号码,当输入错误时,这是一个常见的错误来源。为了防止这种情况,欧盟委员会提供了一项在线服务用于增值税编号验证。这篇博客文ayx爱游戏豪礼盛宴章向您展示了如何使用Signavio流程治理使用此服务进行自动增值税号码验证。

增值税编号验证子流程动作

当您实现集成时,请使其成为只做一件事的最小独立流程,这样您就可以通过子流程任务从其他流程重用它。例如,这是如何配置' Validate EU VAT number '子流程,给定客户国家代码和VAT number字段:

子流程输出将是“有效的增值税号码?”' (Yes/No类型)字段,表示增值税号码是否有效:

子流程动作配置—输出

为此,我们需要创建“验证欧盟增值税编号”流程,该流程将执行增值税编号验证。

验证子流程配置

“验证欧盟增值税编号”流程的目标是表明欧洲增值税编号是有效的。为此,添加一个JavaScript动作来调用在线验证服务。

添加一个带有两个字段的触发器表单:

  1. “国家代码”(文本)-两个字母的ISO 3166-1 alpha-2国家代码
  2. “增值税编号”(文本)-国家代码后的增值税识别编号部分:大多数欧盟国家的增值税编号为8-10位

然后JavaScript操作将使用这两个字段作为输入数据来查询验证服务。

验证web服务

欧盟委员会的增值税编号验证服务是一个基于soap的web服务。它的面向服务的API使用通过HTTP发送的XML消息。

要调用SOAP服务,需要在HTTP POST请求中向服务“端点”URL发送一个XML请求。XML请求将包含国家代码和增值税编号参数。HTTP响应是一个包含“true”或“false”的XML消息,以指示数字是否“有效”。

从JavaScript操作调用SOAP web服务

' Validate VAT number ' JavaScript动作将执行几个步骤。

  1. 验证国家代码
  2. 使用输入变量构造SOAP请求XML消息
  3. 发送请求
  4. 解析接收到的响应XML
  5. 根据XML中的结果更新输出变量

配置JavaScript动作以访问两个触发表单字段(上面),以及一个用于结果的新字段:

  • “有效吗?(是/否)-增值税编号验证结果

现在添加以下JavaScript代码,它基于validate-vat库(https://github.com/viruschidai/validate-vat/).

Const convert = require('xml-js') if (!(countryCode & & vATNumber)) {console.log(“错误:国家代码或增值税号码未指定的)返回}const国家=[‘在’,‘是’,“BG”,“人力资源”,“CY”、“CZ”,“DK”,“情感表达”,“FI”,“FR”、“德”、“EL”,“胡”,“即”,“它”,“LV”、“LT”,“陆”,“太”、“问”、“PL”、“PT”,“罗”,“SK”,“如果”,“西文”,“本身”,' g ']如果(! _。includes(countries, countryCode.toUpperCase())) {console.log('错误:无效的国家代码')return} const soapRequest = ' http://schemas.xmlsoap.org/soap/envelope/”xmlns: tns1 = " urn: ec.europa。欧盟:taxud: vie:服务:checkVat:类型" xmlns: impl = " urn: ec.europa。eu:taxud:vies:services:checkVat">     ${countryCode} ${vatNumber}    ' const url = 'http://ec.europa。eu/taxation_customs/vies/services/checkVatService的const options = {url:url, body:soapRequest}请求。Post(选项,函数(错误,响应,正文){if(响应。statusCode != 200) {console.log(body) return} const fault = result['soap:Envelope']['soap: body ']['soap: fault '] if (fault) {console.log(fault.faultstring._text) return} const result =转换。xml2js(body, {compact: true}) const checkVatResponse = result['soap:Envelope']['soap: body ']。checkVatResponse valid = (checkVatResponse.valid.)_text == 'true')})

使用测试运行器测试脚本,使用有效的VAT编号,例如DE 265675123。测试运行器的变量更新表应该显示“有效”变量的更新值为“true”。

现在,您可以在另一个流程中使用子流程操作来执行VAT编号验证,如上所示。

降低成本的敏捷应用程序集成

与传统的企业应用程序集成相比,开放标准、公共web服务和基于javascript的集成都降低了工作流与外部系统集成的成本。除了使用公共web服务,您还可以开发自己的web服务,这样您就可以将您的工作流与您组织自己的系统集成在一起。

您可以在没有这种集成的情况下开始使用Signavio流程治理,专注于协调人工任务。然而,一旦您有了一个流线型的手工流程,您就可以使用内置的JavaScript集成来增量地自动化工作流的部分,并将其数据与外部系统集成。这就是现代敏捷应用程序集成的工作方式。

使用Signavio过程治理自动化您的工作流程,验证您的增值税号码,并与其他一切集成,注册一个30天免费试用今天。

发布日期:2018年4月19日-最后修改:2020年11月13日