andreani / sdk-php
Andreani para PHP的SDK
v1.5.1
2018-01-10 16:29 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类。为了实例化它,必须传递必选的username
和password
参数。可选地,您可以传递一个环境(例如,test
指向Andreani的测试环境,默认为prod
指向生产环境)。
以下是操作步骤
- 实例化一个WebserviceRequest类型的对象。
- 设置调用所需的数据
- 实例化Andreani类。
- 调用
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。
以下是步骤
- 开发一个实现
Andreani\Resources\WebserviceRequest
接口的类。此接口将强制实现getWebserviceRequest
方法,该方法必须返回一个标识索引。 - 生成一个
json
类型的配置文件。此文件包含每个webservice的配置(由前面的步骤中的索引标识)。 - 将请求适配到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; } }