دالتکور/سایپا-دایرکت-دریبیت

پکیج برای ایجاد فایل‌های XML سایپا-دایرکت-دریبیت مطابق با pain.008.001.02 یا pain.008.001.03.

v1.0.0 2018-04-03 17:30 UTC

This package is auto-updated.

Last update: 2024-09-09 01:39:54 UTC


README

## 1. نصب

سایپا-سد دیجیتال به PHP 5 نیاز دارد، هیچ کتابخانه دیگری لازم نیست.

برای نصب، کلاس SEPASDD.php را به یک پوشه روی سرور وب کپی کنید و به صورت زیر شامل کنید

require_once([path_from_webroot_to_folder]/SEPASDD.php);

2. تنظیمات

سایپا-سد دیجیتال به یک آرایه تنظیمات نیاز دارد که در زمان راه‌اندازی آن را بررسی می‌کند. پارامترهای زیر لازم هستند

  • name: نام بدهکار ('سازمان بدهکار').
  • IBAN: شماره حساب بین‌المللی بانک بدهکار.
  • BIC: کد شناسایی بانک بدهکار. (اختیاری)
  • batch: آیا به صورت گروهی یا به صورت تراکنش‌های فردی پردازش شود. مجاز: True یا False (باید بولین باشد).
  • creditor_id: شناسه بدهکار، اگر این را نمی‌دانید با بانک تماس بگیرید.
  • currency: ارز در که مبلغ‌ها تعریف شده‌اند. مجاز: ISO 4217.
  • version: نسخه PAIN.008.001. (اختیاری) مجاز: 3
  • validate: آیا از مکانیزم‌های تأیید داخلی برای BIC و IBAN استفاده شود (اختیاری) مجاز: True یا False (باید بولین باشد).
توجه

وقتی که گروه به true تنظیم شود، سایپا-سد دیجیتال برای هر نوع تراکنش سایپا-دایرکت-دریبیت ("FRST","RCUR" و غیره) و تاریخ جمع‌آوری مورد نیاز یک گروه ایجاد می‌کند. این بدان معناست که تمام تراکنش‌های "FRST" با تاریخ جمع‌آوری 2014-01-30 در یک گروه قرار می‌گیرند.

مثال

$config = array("name" => "Test",
                "IBAN" => "NL50BANK1234567890",
                "BIC" => "BANKNL2A",
                "batch" => true,
                "creditor_id" => "00000",
                "currency" => "EUR"
                );

3. استفاده

3.1 راه‌اندازی

یک نمونه از کلاس با تنظیمات زیر ایجاد کنید

try{
    $SEPASDD = new SEPASDD($config);
}catch(Exception $e){
    echo $e->getMessage();
}

3.2 ایجاد پرداخت

سایپا-سد دیجیتال از روش addPayment برای ایجاد پرداخت‌ها استفاده می‌کند، که نیاز به یک آرایه پرداخت دارد. پارامترهای زیر لازم هستند

  • name: نام بدهکار. مجاز: 140 کاراکتر ASCII (ISO 20022 MaxText140)
  • IBAN: شماره حساب بین‌المللی بدهکار. مجاز: /[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}/ (توجه: این کلاس بررسی عدد صحیح (ایндекс 2 و 3) را انجام نمی‌دهد. لطفاً این را خودتان انجام دهید.
  • BIC: کد شناسایی بانک بدهکار. (اختیاری) مجاز: ([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)
  • amount: مبلغی که از بدهکار به بدهکار منتقل می‌شود (در سنت). مجاز: int/string (بدون جداکننده‌ها) به عنوان مثال EUR 10.00 باید به عنوان 1000 یا "1000" وارد شود
  • type: نوع تراکنش سایپا-دایرکت-دریبیت مجاز: FRST (اولین)، RCUR (تکراری)، OOFF (یک بار)، FNAL (پایانی)
  • collection_date: تاریخ جمع‌آوری مبلغ از بدهکار. مجاز: ISO 8601 (YYYY-MM-DD). این تاریخ باید در آینده باشد، چقدر در آینده بستگی به نوع سایپا-دایرکت-دریبیت دارد. ببینید.
  • mandate_id: شناسه مأموریت نوشته شده از بدهکار. مجاز: 35 کاراکتر ASCII. (ISO 20022 MaxText35)
  • mandate_date: تاریخ امضای مأموریت. مجاز: ISO 8601 (YYYY-MM-DD). برای مأموریت‌های قبل از الزامات سایپا این است: 2009-11-01.
  • description: توضیح تراکنش. مجاز: 140 کاراکتر ASCII (ISO 20022 MaxText140)

پارامترهای زیر اختیاری هستند

  • end_to_end_id: شناسه منحصر به فرد (برای تمام تراکنش‌های انجام شده تا به حال توسط بدهکار) که به این پرداخت مراجعه می‌کند. مجاز: 35 کاراکتر ASCII. (ISO 20022 MaxText35)

این روش شناسه end_to_end_id را بازمی‌گرداند.

مثال

$payment = array("name" => "Test von Testenstein",
                 "IBAN" => "NL50BANK1234567890",
                 "BIC" => "BANKNL2A",
                 "amount" => "1000",
                 "type" => "FRST",
                 "collection_date" => "2013-07-12",
                 "mandate_id" => "1234",
                 "mandate_date" => "2009-11-01",
                 "description" => "Test Transaction"
                );                

سپس از روش addPayment برای اضافه کردن پرداخت به فایل استفاده کنید

مثال

try{
    $endToEndId = $SEPASDD->addPayment($payment);
}catch(Exception $e){
    echo $e->getMessage();
}

您可以使用此方法多次以添加更多付款。

3.3 保存文件

要保存文件,请使用save方法,这将返回一个字符串形式的XML。如果您想将文件保存到本地,您需要自行完成此操作。

مثال

try{
    $SEPASDD->save();
}catch(Exception $e){
    echo $e->getMessage();
}

在此之后,如果您想创建另一个文件,请重新初始化类。

3.4 从直接借记中获取摘要

如果您想在保存前或保存后对直接借记有一些反馈,可以使用getDirectDebitInfo()方法。这将返回一个以下格式的数组

Batch mode:
Array
(
    [MessageId] => "100120165539-15a2054e7b05"
    [TotalTransactions] => 3
    [TotalAmount] => "3000"
    [FirstCollectionDate] => "2016-01-10"
    [Batches] => Array
        (
            [0] => Array
                (
                    [CollectionDate] => "2016-01-10"
                    [Type] => "FRST"
                    [BatchId] => "Test-d1837e0f72cb"
                    [BatchTransactions] => 2
                    [BatchAmount] => "2000"
                )

            [1] => Array
                (
                    [CollectionDate] => "2016-01-10"
                    [Type] => "RCUR"
                    [BatchId] => "Test-145750c3b3a8"
                    [BatchTransactions] => 1
                    [BatchAmount] => "1000"
                )

        )

)

Non Batch mode:
Array
(
    [MessageId] => "100120161833-fbba1f5fc10a"
    [TotalTransactions] => 3
    [TotalAmount] => "3000"
    [FirstCollectionDate] => "2016-01-10"
)




مثال

try{
    $SEPASDD->save();
}catch(Exception $e){
    echo $e->getMessage();
}

在此之后,如果您想创建另一个文件,请重新初始化类。

3.4 添加自定义字段

SEPA SDD有一个用于添加自定义字段的特殊方法。此方法称为addCustomNode。重要的是要知道,您需要在调用此方法前后保存直接借记。所需的参数是

  • parent_XPATH: 父元素的XPATH选择器。
  • name: 节点/标签名。
  • value: 其值,默认为""。
  • attr: 包含键 => 值对的数组,定义属性。

مثال

添加最后插入的债务人的邮政地址。

注意,您应该知道您在这里做什么。在使用之前,请参考SEPA直接借记核心规则手册和XSD。

$payment = array("name" => "Test von Testenstein",
                 "IBAN" => "NL50BANK1234567890",
                 "BIC" => "BANKNL2A",
                 "amount" => "1000",
                 "type" => "FRST",
                 "collection_date" => "2013-07-12",
                 "mandate_id" => "1234",
                 "mandate_date" => "2009-11-01",
                 "description" => "Test Transaction"
                );

try{
    $SEPASDD->addPayment($payment);
    $SEPASDD->save();
    $SEPASDD->addCustomNode("//Document/CstmrDrctDbtInitn/PmtInf[last()]/DrctDbtTxInf[last()]/Dbtr","PstlAdr");
    $SEPASDD->addCustomNode("//Document/CstmrDrctDbtInitn/PmtInf[last()]/DrctDbtTxInf[last()]/Dbtr/PstlAdr","AdrLine","Rode Weeshuisstraat 25");
    $SEPASDD->addCustomNode("//Document/CstmrDrctDbtInitn/PmtInf[last()]/DrctDbtTxInf[last()]/Dbtr/PstlAdr","AdrLine","9712 ET Groningen");
    $SEPASDD->save();
}catch(Exception $e){
    echo $e->getMessage();
}

将创建

<PstlAdr>
    <AdrLine>Rode Weeshuisstraat 25</AdrLine>
    <AdrLine>9712 ET Groningen</AdrLine>
</PstlAdr>

3.5 验证

要验证对pain.008.001.02或pain.008.001.03模式定义,您可以使用validate()方法。这需要一个字符串形式的XML作为参数。

توجه

一些银行允许不指定BIC,同样,SEPASDD也是如此。

مثال

try{
    $xml = $SEPASDD->save();
    $validation = $SEPASDD->validate($xml);
    print_r($validation);
}catch(Exception $e){
    echo $e->getMessage();
}

4 许可证

MIT许可证

版权所有 (c) 2016 Congressus,荷兰

特此授予任何获得此软件及其相关文档副本(“软件”)的个人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许软件的提供方执行上述操作,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的副本或实质部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和无侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权或其他原因,也不论这些责任是否与软件或其使用或其他方式相关。