dvsa/mot-cpms-client

CPMS通用客户端模块

安装数: 3,890

依赖: 2

建议者: 0

安全: 0

星标: 0

关注者: 6

分支: 0

开放问题: 1

类型:项目


README

简介

这是一个设计用来向CPMS后端API发起RESTful API调用的模块。它处理以下操作:

  • 基于作用域生成所需的访问令牌
  • 当提供日志记录器别名时进行日志记录
  • 当设置并启用缓存时,缓存访问令牌。

安装

推荐的安装方式是通过[Composer][composer]。

composer require dvsa/mot-cpms-client

配置

  1. 按照以下方式修改client-config.global.php文件中的配置

      ```
          return array(
              'cpms_api'                => array(
                  'version'           => 1,  
                  'logger_alias'      => '',  
                  'identity_provider' => '',
                  'enable_cache'      => true, //Enable of caching of access tokens for reuse
                  'cache_storage'     => 'filesystem',
                  'rest_client'   => array(
                      'options' => array(
                          'domain'             => ''
                      ),
                  ),
              ),
          );
    
    • version : 这是目标CPMS API的版本,目前为1

    • logger_alias : 用于检索Laminas\Log实例的Zend Service Manager别名

    • identity_provider : 这是一个服务管理器别名,应返回一个实现CpmsClient\Authenticate\IdentityProviderInterface的对象。这是必需的。以下信息从该类检索:

      • client_id : CPMS签发的唯一标识方案的ID,例如OLCS
      • client_secret : CPMS签发的哈希值
      • user_id : 这是登录用户的OpenAM UUID。责任在于方案确保提供的数据有效,因为它会记录在CPMS中任何执行的操作,以供审计目的。
      • customer_reference : 这是发起支付的客户的唯一标识符。在MoT中这是AE,在OLCS中将是运营商等。
    • enable_cache : 启用访问令牌的缓存以供重用。

    • cache_storage : 使用Zend's StorageCacheAbstractServiceFactory加载的Zend缓存存储别名。默认为filesystem

    • domain : 所有API调用将发送到的API域。

控制器插件

cpms-client模块附带了一个控制器插件,该插件简化了Rest Client的使用。在你的控制器中

    $client         = $this->getCpmsRestClient(); 

使用方法

以下是对cpms-client模块的典型使用示例。

  • 请求访问令牌以进行卡支付 POST。请注意,这只是一个示例。默认情况下,模块会为您在幕后完成此操作。

      $requiredScope  = 'CARD';
      $endPoint       = '/api/token';
      $client         = $this->getCpmsRestClient();
      $params         = [
          'sales_reference' => 'your invoice number ',
          ......
      ];
      
      $response       = $client->post($endPoint, $requiredScope, $params);
    
  • 检索支付详情并指定所需字段、页面、深度等 GET。客户端会为您生成所需的访问令牌,因此您无需手动生成访问令牌。

          $requiredScope = 'QUERY_TXN';
          $endPoint      = '/api/payment';
          
           $params = array(
                'page'   => 1,
                'sort'   => 'id:desc',
                'params' => array(
                    'depth'           => -2,
                    'required_fields' => array(
                        'payment'       => array(
                            'created_on',
                            'receipt_reference',
                            'scope',
                            'total_amount',
                            'payment_details',
                            'payment_status',
                            'customer_reference',
                            'created_by'
                        ),
                        'paymentDetail' => array(
                            'product_reference',
                            'sales_reference',
                            'payment_reference',
                            'amount'
                        ),
                        'scope'         => array(
                            'code',
                            'name'
                        ),
                        'paymentStatus' => array(
                            'code',
                            'name',
                        )
                    )
                ),
            );
            
            $payments = $this->getCpmsRestClient()->get($endPoint, $requiredScope, $params);
    
    • 更新指令的状态 PUT

         $requiredScope = 'DIRECT_DEBIT';
         $endPoint      = '/api/mandate/<mandate_reference>/status';
         $params        = [
                'status' => '<status code>'
         ];
         $response      = $this->getCpmsRestClient()->get($endPoint, $requiredScope, $params);
      

指定所需字段

当查询CPMS以获取数据(例如,支付详情)时,建议您在请求中指定希望返回的字段。如果没有指定,CMS将返回默认字段,这些字段可能会更改。可用的字段是[数据库方案]中指定的列名(https://wiki.i-env.net/display/EA/CPMS+Interface+Service+Definition#CPMSInterfaceServiceDefinition-DataModel)。

主表中的所需字段,例如支付

    $requiredFields = [
          'created_on',
          'receipt_reference',
          'scope',
          'total_amount',
          'payment_details',
          'payment_status',
          'customer_reference',
          'created_by'
    ]

连接表中的所需字段,例如PaymentDetails。Payment与PaymentDetails有一个(一对多)的关系。

请注意,字段名以下划线分隔,而实体名以驼峰式命名。

        $requiredFields = [
            'payment'       => [
                  'created_on',
                  'receipt_reference',
                  'scope',
                  'total_amount',
                  'payment_details',
                  'payment_status',
                  'customer_reference',
                  'created_by'
              ],
              'paymentDetail' => [
                  'product_reference',
                  'sales_reference',
                  'payment_reference',
                  'amount'
              ],
          ]

贡献

请参阅我们的贡献指南