luisurrutia/transbank-soap

此包已被放弃且不再维护。未建议替代包。

Transbank SDK SOAP 的验证和处理实用工具

0.0.1 2018-10-30 01:47 UTC

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 导入此库,或者使用单个 requirerequire_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 文件