andreani/sdk-php

Andreani para PHP的SDK

v1.5.1 2018-01-10 16:29 UTC

This package is not auto-updated.

Last update: 2024-09-26 15:07:42 UTC


README

此服务已过时,不再维护。有关集成信息,请参阅我们的文档:https://developers.andreani.com/documentacion

安装

对于安装说明,假设您的应用程序使用Composer,如果您的项目中没有集成此工具(首先考虑使用它,它非常有用!)则需要下载完整存储库并手动定义命名空间(或根据需要执行includes)。

在您的composer.json文件中的require部分添加以下行
    "andreani/sdk-php": "dev-master"
运行composer update命令,完成过程后,您应该在您的vendors目录中看到"andreani"目录。

使用

Andreani服务的调用以实现WebserviceRequest接口的对象形式建模。此SDK可能包含您所需的所有调用(以下将解释如何开发自定义调用并将它们集成到电路中)。

另一方面,处理通信的主要类是Andreani类。为了实例化它,必须传递必选的usernamepassword参数。可选地,您可以传递一个环境(例如,test指向Andreani的测试环境,默认为prod指向生产环境)。

以下是操作步骤

  1. 实例化一个WebserviceRequest类型的对象。
  2. 设置调用所需的数据
  3. 实例化Andreani类。
  4. 调用call方法,并将Request作为参数传递

进行测试报价的示例

    use Andreani\Andreani;
    use Andreani\Requests\CotizarEnvio;

    // Los siguientes datos son de prueba, para la implementación en un entorno productivo deberán reemplazarse por los verdaderos
    $request = new CotizarEnvio();
    $request->setCodigoDeCliente('CL0003750');
    $request->setNumeroDeContrato('400006709');
    $request->setCodigoPostal('1014');
    $request->setPeso(500);
    $request->setVolumen(100);
    $request->setValorDeclarado(100);

    $andreani = new Andreani('eCommerce_Integra','passw0rd','test');
    $response = $andreani->call($request);
    if($response->isValid()){
        $tarifa = $response->getMessage()->CotizarEnvioResult->Tarifa;
        echo "La cotización funcionó bien y la tarifa es $tarifa";
    } else {
        echo "La cotización falló, el mensaje de error es el siguiente";
        var_dump($response->getMessage());
    }

如示例所示,所有调用都返回一个Response类型的对象,该对象可以响应调用是否成功(通过isValid方法)以及通过getMessage方法返回webservice的确切响应。

自定义调用

如果您需要开发自己的webservice调用(例如,如果您在Andreani系统中有一个定制的webservice),则可以这样做,同时仍然使用SDK。

以下是步骤

  1. 开发一个实现Andreani\Resources\WebserviceRequest接口的类。此接口将强制实现getWebserviceRequest方法,该方法必须返回一个标识索引。
  2. 生成一个json类型的配置文件。此文件包含每个webservice的配置(由前面的步骤中的索引标识)。
  3. 将请求适配到webservice的参数,即一个类,其责任是从WebserviceRequest生成必要的查询参数。要使用的类也在配置文件中定义。

自定义调用的示例

namespace MiApp\Requests;

use Andreani\Resources\WebserviceRequest;

class MiRequest implements WebserviceRequest{

    protected $dato;

    public function setDato($dato){
        $this->dato = $dato;
    }

    public function getDato(){
        return $this->dato;
    }

    public function getWebserviceIndex() {
        return 'mi_request';
    }

}
{
    "resources": {
        "argument_converter": "\\MiApp\\Resources\\MiArgumentConverter"
    },
    "webservices": {
        "prod": {
            "mi_request": {
                "url": "https://www.e-andreani.com/CASAWS/eCommerce/WebserviceAMedida.svc?wsdl", #url del webservice
                "method": "Metodo", #el nombre del método
                "headers": ["auth"], #los headers que utiliza, normalmente 'auth' cuando requiere autenticación o un array vacío cuando no la requiere
                "message_type":"external"
            }
        },
        "test": {
            "cotizacion": {
                "url": "https://www.e-andreani.com/CasaStaging/eCommerce/WebserviceAMedida.svc?wsdl",
                "method": "Metodo",
                "headers": ["auth"],
                "message_type":"external"
            }
        }
    }
}
namespace MiApp\Resources;

use Andreani\Resources\WebserviceRequest;
use Andreani\Resources\ArgumentConverter;

class MiArgumentConverter implements ArgumentConverter{

    public function getArgumentChain(WebserviceRequest $consulta){
        if($consulta->getWebserviceIndex() == 'mi_request') return $this->convertMiRequest($consulta);
    }

    protected function convertMiRequest(WebserviceRequest $consulta){
        $arguments = array(
            'Metodo' => array(
                'Dato' => $consulta->getDato()
            )
        );

        return $arguments;
    }

}