luisurrutia / transbank-soap
Transbank SDK SOAP 的验证和处理实用工具
Requires
- robrichards/wse-php: ^2.0
- robrichards/xmlseclibs: ^3.0
This package is auto-updated.
Last update: 2022-01-29 03:17:12 UTC
README
一套用于验证和处理 Transbank SOAP 服务 XML 的实用工具
此库**不是**Webpay Webservices 的实现。
当前在 Transbank Webservice SOAP 库(2018 年中期及之前)中使用的实用工具实现是 Rob Richards 库(wsse-php 和 xmlseclibs)的修改版类,可能是因为这些类具有私有且未受保护的方法和属性,因此无法继承以使用属性。
在分析该实现后,此库采用不同的方法,隔离了必须应用于 XML 以构建有效请求的特定功能。
安装
composer require luisurrutia/transbank-soap
入门
首先,您必须使用 composer 提供的 autoloader
导入此库,或者使用单个 require
或 require_once
(尽管也许我们应该杀了你,如果你这么做)
构建请求
假设您有一个继承自 SoapClient 的类,您必须实现 __doRequest
方法,并在其中使用 LuisUrrutia\TransbankSoap\Process
构建请求的 XML。
PRIVATE_KEY
应该是您的私钥路径或私钥本身
CERTIFICATE
应该是您的证书路径或证书本身
<?php namespace MYPACKAGE\Transbank; use SoapClient; use DOMDocument; use LuisUrrutia\TransbankSoap\Process; class TransbankSoap extends SoapClient { public function __doRequest($request, $location, $saction, $version, $one_way = null) { $process = new Process($request); $process->sign(PRIVATE_KEY); $process->addIssuer(CERTIFICATE); $signedRequest = $process->getXML(); $retVal = parent::__doRequest( $signedRequest, $location, $saction, $version, $one_way ); $doc = new DOMDocument(); $doc->loadXML($retVal); return $doc->saveXML(); } }
响应验证
您必须从您的 SOAP 客户端获取响应并使用 LuisUrrutia\TransbankSoap\Validation
$this->soapClient
应该是您的 SoapClient 实例
TBK_CERTIFICATE
应该是 Transbank 提供的证书
<?php namespace MYPACKAGE\Transbank; use LuisUrrutia\TransbankSoap\Validation; $response = $this->soapClient->__getLastResponse(); $soapValidation = new Validation($response, TBK_CERTIFICATE); if (!$soapValidation->isValid()) { throw new Exception('Invalid response or certificate'); }
构建工具
- wse-php - 添加 WS-* 支持到 PHP ext/soap 的库
- xmlseclibs - 用于 XML 安全的 PHP 库
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE.md 文件