avaibooksports/redsys-messages

Redsys/Sermepa/Servired网关消息列表

0.2.1 2021-01-08 13:40 UTC

This package is auto-updated.

Last update: 2024-09-08 21:30:52 UTC


README

Tests status Quality assurance status

安装

composer require avaibooksports/redsys-messages

用法

要使用内置翻译,只需加载标准目录

use AvaiBookSports\Component\RedsysMessages;

$redsysMessages = new RedsysMessages\Factory(new RedsysMessages\Loader\CatalogLoader());

// Returns "Expired card"
$redsysMessages->createCatalogByLanguage('en')->getDsResponseMessage('0101');

// You can load catalogs by ISO 639-1 and ISO 639-2
$redsysMessages->createCatalogByLanguage('eng')->getDsResponseMessage('0101');

// There is a different library for error messages. Those error codes can be provided by Redsys in two different formats:
$redsysMessages->createCatalogByLanguage('en')->getErrorMessage('9002'));
$redsysMessages->createCatalogByLanguage('en')->getErrorMessage('SIS0002')); // Alias of '9002'

创建和加载自定义目录

要加载自定义目录,您必须实现一个或多个实现 AvaiBookSports\Component\RedsysMessages\CatalogInterface 的类。

之后,您只需使用 ArrayLoader 调用工厂即可

// src/Redsys/Messages/Italian.php

namespace App\Redsys\Messages;

use AvaiBookSports\Component\RedsysMessages\CatalogInterface;

class English implements CatalogInterface
{
    /**
     * @var string[]
     */
    private $dsResponseMessages = [
        '0101' => 'Carta scaduta',
        // ...
    ];

    /**
     * {@inheritdoc}
     */
    public static function getIso639Alpha2()
    {
        return 'it';
    }

    /**
     * {@inheritdoc}
     */
    public static function getIso639Alpha3()
    {
        return 'ita';
    }

    /**
     * {@inheritdoc}
     */
    public function getDsResponseMessage($code)
    {
        if (array_key_exists($code, $this->dsResponseMessages)) {
            return $this->dsResponseMessages[$code];
        }

        return null;
    }
}
use AvaiBookSports\Component\RedsysMessages;

$redsysMessages = new RedsysMessages\Factory(
    new RedsysMessages\Loader\ArrayLoader([
        \App\Redsys\Messages\Italian::class,
        // ...
    ])
);

// "Carta scaduta"
$redsysMessages->createCatalogByLanguage('it')->getDsResponseMessage('0101');

加载多个目录

可能您想要加载此库中包含的所有目录,以及一些不支持的语言的自定义目录。

您可以使用 ChainLoader 来实现这一目的

use AvaiBookSports\Component\RedsysMessages;

$redsysMessages = new RedsysMessages\Factory(
    new RedsysMessages\ChainLoader([
        new RedsysMessages\Loader\CatalogLoader(),
        new RedsysMessages\Loader\ArrayLoader([
            \App\Redsys\Messages\Italian::class,
            // ...
        ])
        new App\Redsys\Loader\MyCustomLoader(), // Maybe you want to implement your own loader?
    ])
);

AvaiBookSports\Component\RedsysMessages\CatalogInterface\Factory 允许您作为参数使用任何实现 AvaiBookSports\Component\RedsysMessages\CatalogInterface\CatalogLoaderInterface 的类,而 ChainLoader 允许您一次性加载多个目录,因此没有任何阻止您创建自己的自定义目录加载器。

贡献

欢迎贡献,尤其是目录翻译。如果您创建的目录支持您的母语,请考虑发起一个拉取请求。

  • 只需关注测试 vendor/bin/simple-phpunit,并除了 arrayobject 以外不使用类型提示以支持 PHP 5。使用 phpDoc。
  • 使用 vendor/bin/php-cs-fixer fix 修复您的代码格式
  • 查看 psalm 以检查您可以改进的内容

遵循这些步骤将确保您在拉取请求中有一个绿色的检查标志!