tathevik/fatca

用于生成FATCA IDES提交文件的PHP库

v1.3.1 2018-02-15 07:41 UTC

README

Build Status

packagist

这是一个PHP库,可以将银行客户数据转换为通过IDES网关可提交的FATCA文件。如果您在这个库中发现任何特定于我完成这项工作的金融机构的代码,请毫不犹豫地通过打开问题向我指出。

有关更多信息,请参阅IRS FATCA IDES技术常见问题解答

有关其他语言实现,请参阅IRS github页面

先决条件

  • php
  • 客户端数据以php数组形式
  • 您金融机构的SSL证书
  • 用于获取SSL证书的私钥和公钥

安装说明

安装composer

php -r "copy('https://getcomposer.org.cn/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '55d6ead61b29c7bdee5cccfb50076874187bd9f21f65d8991d46ec5cc90518f447387fb9f76ebae1fbbacf329e583e30') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

安装PHP扩展

sudo apt-get install php7.0-xml php-mbstring php-zip php-mcrypt php-pear libyaml-dev php-dev php-bcmath
sudo pecl install yaml-2.0.0
sudo echo "extension=yaml.so" > /etc/php/7.0/mods-available/yaml.ini
sudo ln -s /etc/php/7.0/mods-available/yaml.ini /etc/php/7.0/cli/conf.d/20-yaml.ini

composer require shadiakiki1986/fatca-ides-php
composer require swiftmailer/swiftmailer # To enable sending emails
composer install
[sudo] apt-get install php5-mcrypt
[sudo] php5enmod mcrypt
[sudo] service apache2 restart # needed for web applications served with apache

如果启用了电子邮件,将配置(类似于)传递给Transmitter类的toEmail函数(检查下面的示例)

接下来,下载金融机构的SSL证书、私钥和公钥。请注意,公钥可以从证书中提取(将在TODO中隐式表示,无需用户指定)

示例

有关如何使用此库的完整示例,请参阅IDES-Data-Preparation-Php

示例1:生成提交到IDES网关的ZIP文件

require __DIR__.'/vendor/autoload.php';
use FatcaIdesPhp\Transmitter;

// set tax year
$taxYear=2014;

// example client data
$di=array(
  array("Compte"=>"1234","ENT_FIRSTNAME"=>"Clyde","ENT_LASTNAME"=>"Barrow","ENT_FATCA_ID"=>"123-1234-123","ENT_ADDRESS"=>"Some street somewhere","ResidenceCountry"=>"US","posCur"=>100000000,"cur"=>"USD","ENT_TYPE"=>"Individual"),
  array("Compte"=>"5678","ENT_FIRSTNAME"=>"Bonnie","ENT_LASTNAME"=>"Parker","ENT_FATCA_ID"=>"456-1234-123","ENT_ADDRESS"=>"Dallas, Texas","ResidenceCountry"=>"US","posCur"=>100,"cur"=>"LBP","ENT_TYPE"=>"Individual")
);

// config with paths to files downloaded
$config = array(
  # SSL certificate bought using the private key
  "FatcaCrt" => "/var/lib/IDES/keys/ssl_certificate.crt",
  # Private key used to get the SSL certificate
  "FatcaKeyPrivate" => "/var/lib/IDES/keys/institution-fatca-private.pem",
  # public key extracted out of private key above
  "FatcaKeyPublic" => "/var/lib/IDES/keys/institution-fatca-public.pem",

  # Fatca Sender GIIN
  "ffaid" => 'A1BBCD.00000.XY.123',
  # Fatca Receiver GIIN, e.g. IRS
  "ffaidReceiver" => '000000.00000.TA.840',

  # email configuration if Transmitter::toEmail is used
  "swiftmailer" => array(
    "host" => "my.host.com",
    "port" => 12345,
    "username" => "myusername",
    "password" => "mypassword",
    "name" => "My Name",
    "reply" => "myemail@host.com")

);

$factory = new \FatcaIdesPhp\Factory();

$fda = new \FatcaIdesPhp\FatcaDataArray($di);
$fdo = $factory->array2oecd($fda); // , false, null, $taxYear, "zip", "", $config
$tmtr=$factory->transmitter($fdo);
$tmtr->getZip();

示例2:提交更正XML文件

使用与上面相同的代码,但使用

$sxe = simplexml_load_file("path/to/xml");
$fdx = new \FatcaIdesPhp\FatcaDataXml($sxe);
$tmtr=$factory->transmitter($fdx);

还要检查来自IDES-Data-Preparation-PHP项目的correction.php命令行工具

许可证

请检查[[LICENSE]]

测试

composer install
composer run-script test

模式版本

当前状态

模式文件和IRS公钥已提交到assets目录。

提交的版本是2.0版本。

该软件包于2017年1月31日成功通过IDES测试网关进行了测试。测试包括

更新

要更新它们,运行以下两个脚本

  1. ./assets/update.sh:从IRS网站下载文件
  • 请注意,脚本中的URL可能需要更新,因为较新版本通常上传到新的端点
  • 还要注意,脚本中有一些文件重命名行,以便我可以比较版本
    • 例如,git diff ba722d8bcda61f657529a67cdbec873a29dc7d70 5f9545b565ddf0d41997b29c704c3990813f4bb8将比较版本1.1和2.0
  1. php updateXsd.php:将模式文件转换为src/FatcaXsdPhp中的PHP类
  • 我审查更新并将它们提交到存储库
  • 有关这些问题的开放问题
    • 我在更新后手动修复以下问题
    • src/FatcaXsdPhp/oecd/ties/stffatcatypes/v1/Address_Type.php 中似乎存在问题,因为存在两个 AddressFree 字段
    • 缺少 @xmlNamespace urn:oecd:ties:fatca:v1,在 src/FatcaXsdPhp/FATCA_OECD 中待处理,请参考 moyarada/XSD-to-PHP#36
    • AddressFree 字段的命名空间错误:应该是 urn:oecd:ties:stffatcatypes:v1,而不是 urn:oecd:ties:fatca:v1
    • 未生成 ReportingGroup.php,并且缺少其 @var
    • src/FatcaXsdPhp/oecd/ties/stffatcatypes/v1/NamePerson_Type.php
      • @xmlNamespace urn:oecd:ties:fatca:v1
      • 手动修改为
      • @xmlNamespace urn:oecd:ties:stffatcatypes:v1

手动验证

可以通过在 ubuntu 上使用以下命令手动验证现有的 xml 文件是否与模式匹配:

sudo apt-get install libxml2-utils
xmllint --noout --schema assets/fatcaxml/FatcaXML.xsd path/to/file.xml