tathevik / fatca
用于生成FATCA IDES提交文件的PHP库
v1.3.1
2018-02-15 07:41 UTC
Requires
- php: >=5.3.5
- ext-bcmath: *
- ext-dom: *
- ext-mbstring: *
- ext-mcrypt: *
- ext-zip: *
- monolog/monolog: ^1.21
- phpseclib/phpseclib: *
- robrichards/xmlseclibs: *
- shadiakiki1986/swiftmailer-wrapper: ^0.2.0
- shadiakiki1986/xsd-to-php: ^0.1
Requires (Dev)
Suggests
- swiftmailer/swiftmailer: php library for sending emails
README
这是一个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测试网关进行了测试。测试包括
- 通过IDES-Data-Preparation-Php软件包将测试数据提交到服务器
- 通过电子邮件接收提交确认
- 使用IDES-Data-Preparation-Php软件包接收来自IRS的响应
更新
要更新它们,运行以下两个脚本
./assets/update.sh
:从IRS网站下载文件
- 请注意,脚本中的URL可能需要更新,因为较新版本通常上传到新的端点
- 还要注意,脚本中有一些文件重命名行,以便我可以比较版本
- 例如,
git diff ba722d8bcda61f657529a67cdbec873a29dc7d70 5f9545b565ddf0d41997b29c704c3990813f4bb8
将比较版本1.1和2.0
- 例如,
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