dvsa / mot-cpms-client
CPMS通用客户端模块
Requires
- php: ^8.2
- dvsa/mot-cpms-notifications: ^3.0.0
- laminas/laminas-cache: ^3.12.0
- laminas/laminas-cache-storage-adapter-apcu: ^2.5.0
- laminas/laminas-cache-storage-adapter-filesystem: ^2.0
- laminas/laminas-cache-storage-adapter-memory: ^2.0
- laminas/laminas-dependency-plugin: ^2.6.0
- laminas/laminas-filter: ^2.13
- laminas/laminas-log: ^2.13
- laminas/laminas-mvc: ^3.3.0
Requires (Dev)
- captainhook/captainhook: ^5.16
- captainhook/plugin-composer: ^5.3
- friendsofphp/php-cs-fixer: ^3.17
- laminas/laminas-component-installer: ^3.4.0
- laminas/laminas-test: ^4.0.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-26 14:41:39 UTC
README
简介
这是一个设计用来向CPMS后端API发起RESTful API调用的模块。它处理以下操作:
- 基于作用域生成所需的访问令牌
- 当提供日志记录器别名时进行日志记录
- 当设置并启用缓存时,缓存访问令牌。
安装
推荐的安装方式是通过[Composer][composer]。
composer require dvsa/mot-cpms-client
配置
-
按照以下方式修改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,例如OLCSclient_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'
],
]
贡献
请参阅我们的贡献指南。