Skip to content

Commit e3b7c34

Browse files
committed
Version 2.7.1
2 parents e708b2f + 42a030e commit e3b7c34

22 files changed

+252
-47
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ By participating in this project and its community, you are expected to uphold t
99
## Team members
1010

1111
* [Carlos C Soto](https://github.com/eclipxe13) - original author and maintainer
12-
* [GitHub constributors](https://github.com/eclipxe13/CfdiUtils/graphs/contributors)
12+
* [GitHub contributors](https://github.com/eclipxe13/CfdiUtils/graphs/contributors)
1313

1414
## Communication Channels
1515

docs/CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,30 @@
77
- `\CfdiUtils\CadenaOrigen\DefaultLocations`
88
- `\CfdiUtils\CadenaOrigen\CadenaOrigenLocations`
99
- Remove `\CfdiUtils\PemPrivateKey\PemPrivateKey::isOpened` to `\CfdiUtils\PemPrivateKey\PemPrivateKey::isOpen`
10+
- Remove `CfdiUtils\ConsultaCfdiSat\Config::getWsdlUrl()`
1011
- Remove `static` methods from `\CfdiUtils\CfdiVersion`, instead create an instance of the class
1112
- Remove `static` methods from `\CfdiUtils\TimbreFiscalDigital\TfdVersion`, instead create an instance of the class
1213
- Remove `trigger_error` on `\CfdiUtils\Elements\Cfdi33\Comprobante::getCfdiRelacionados` when called with arguments.
1314

1415

16+
## Version 2.7.1 2018-12-04
17+
18+
- Fix wrong use of `escapeshellcmd` replacing with `escapeshellarg`
19+
- Add argument `-c|--clean` to script `tests/validate.php` to perform clean before validate
20+
- Fix `CfdiCreator33::newUsingNode` since not all attributes where correctly imported (`xsi:schemaLocation`)
21+
- Fix calling `CfdiCreator33::putCertificado` on imported cfdi (Emisor child is a `NodeInterface` but not `Emisor`)
22+
- Refactor `CfdiUtils\ConsultaCfdiSat\WebService` to be able to use a local copy of WSDL file since SAT does not
23+
allow to download it anymore.
24+
- Add `ConsultaCFDIServiceSAT.svc.xml` to namespace folder
25+
- Add `Config::wsdlLocation` static method to get `ConsultaCFDIServiceSAT.svc.xml` file path
26+
- Deprecate `Config::getWsdlUrl` in favor of `Config::getServiceUrl`
27+
- Add `Config::getServiceUrl`
28+
- Add `Config::wsdlLocation` property
29+
- Add `--local-wsdl` parameter to `tests/estadosat.php` script
30+
- Add a new step on `CfdiUtils\Cleaner\Cleaner` that removes from `xsi:schemaLocations` the namespaces that are
31+
not followed by a string that ends on `.xsd`
32+
33+
1534
## Version 2.7.0 2018-10-19
1635

1736
- Reintroduce `MontoGreaterOrEqualThanSumOfDocuments` as `PAGO30`.

docs/componentes/estado-sat.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
El SAT cuenta con un webservice para consultar el estado de un CFDI.
44

5-
- Servicio: <https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?singleWsdl>
5+
- Servicio: <https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc>
66
- Documentación: <ftp://ftp2.sat.gob.mx/asistencia_servicio_ftp/publicaciones/cfdi/WS_ConsultaCFDI.pdf>
77

88
Para poderlo consumir se han implementado varias clases dentro del espacio de nonbres `\CfdiUtils\ConsultaCfdiSat`.
@@ -136,6 +136,23 @@ $response->getCode(); // S - ...
136136
$response->getCfdi(); // Cancelado
137137
```
138138

139+
## Problema con el webservice del SAT
140+
141+
El SAT a partir de octubre 2018 dejó de publicar el archivo de contrato WSL del servicio web ubicado en
142+
<https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?singleWsdl>, sin embargo el servicio
143+
sigue funcionando por lo que ahora es necesario especificar una la copia local del archivo WSDL.
144+
145+
Si no cuenta con el archivo WSDL esta librería contiene una copia que se puede obtener llamando al método
146+
estático `CfdiUtils\ConsultaCfdiSat\Config::getLocalWsdlLocation()`.
147+
148+
```php
149+
<?php
150+
$wsdlLocalCopy = \CfdiUtils\ConsultaCfdiSat\Config::getLocalWsdlLocation();
151+
$config = new \CfdiUtils\ConsultaCfdiSat\Config(10, true, '', $wsdlLocalCopy);
152+
$webservice = new \CfdiUtils\ConsultaCfdiSat\WebService($config);
153+
```
154+
155+
139156
## Posibles futuros cambios
140157

141158
Usar alguna librería como <https://github.com/phpro/soap-client> o <https://github.com/meng-tian/async-soap-guzzle>

docs/leer/limpieza-cfdi.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ Para evitar estos errores se puede usar el objeto `CfdiUtils\Cleaner\Cleaner`.
2525
Este objeto requiere una cadena de texto con XML válido. Y limpia el XML siguiendo estos pasos:
2626

2727
1. Remueve el nodo `cfdi:Addenda`.
28+
1. Remueve dentro de las locaciones de espacios de nombre `xsi:schemaLocation` los namespaces que no tengan
29+
a continuación una uri que termine en `.xsd`.
2830
1. Remueve todos los nodos que no tengan relación con el SAT (los que no contengan `http://www.sat.gob.mx/`).
2931
1. Remueve todos los pares de espacio de nombre y archivo xsd de los `xsi:schemaLocation` que no tengan relación con el SAT.
3032
1. Remueve todos los espacios de nombres listados que no están en uso.
@@ -38,3 +40,6 @@ También se puede instanciar un objeto de la clase `CfdiUtils\Cleaner\Cleaner` y
3840
- `load(string $content)`: Carga un contenido XML "sucio"
3941
- `clean()`: Realiza la limpieza
4042
- `retrieveXml()`: Obtiene el contenido XML "limpio"
43+
44+
Si deseas implementar tu propio orden, hacer o agregar nuevos limpiadores puedes extender la clase o sobrescribir
45+
el método `clean` o bien llamar a cada uno de los pasos de limpieza por tu propia cuenta.

src/CfdiUtils/CadenaOrigen/SaxonbCliBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public function createCommand(string $xmlFile, string $xsltLocation): string
2929
// if is running on windows then use NUL instead of /dev/null
3030
$devnull = (0 === stripos(PHP_OS, 'win')) ? 'NUL' : '/dev/null';
3131
return implode(' ', [
32-
escapeshellcmd($this->getExecutablePath()),
32+
escapeshellarg($this->getExecutablePath()),
3333
escapeshellarg('-s:' . $xmlFile),
3434
escapeshellarg('-xsl:' . $xsltLocation),
3535
escapeshellarg('-warnings:silent'), // default recover

src/CfdiUtils/CfdiCreator33.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,18 @@ class CfdiCreator33 implements
3535

3636
/**
3737
* CfdiCreator33 constructor.
38-
* @param string[] $complementoAttributes
38+
* @param string[] $comprobanteAttributes
3939
* @param Certificado|null $certificado
4040
* @param XmlResolver|null $xmlResolver
4141
* @param XsltBuilderInterface|null $xsltBuilder
4242
*/
4343
public function __construct(
44-
array $complementoAttributes = [],
44+
array $comprobanteAttributes = [],
4545
Certificado $certificado = null,
4646
XmlResolver $xmlResolver = null,
4747
XsltBuilderInterface $xsltBuilder = null
4848
) {
49-
$this->comprobante = new Comprobante($complementoAttributes);
49+
$this->comprobante = new Comprobante($comprobanteAttributes);
5050
$this->setXmlResolver($xmlResolver ? : new XmlResolver());
5151
if (null !== $certificado) {
5252
$this->putCertificado($certificado);
@@ -59,8 +59,9 @@ public static function newUsingNode(
5959
Certificado $certificado = null,
6060
XmlResolver $xmlResolver = null
6161
): self {
62-
$new = new self($node->attributes()->exportArray(), $certificado, $xmlResolver);
62+
$new = new self([], $certificado, $xmlResolver);
6363
$comprobante = $new->comprobante();
64+
$comprobante->addAttributes($node->attributes()->exportArray());
6465
foreach ($node as $child) {
6566
$comprobante->addChild($child);
6667
}
@@ -81,7 +82,11 @@ public function putCertificado(Certificado $certificado, bool $putEmisorRfcNombr
8182
$this->comprobante['Certificado'] = base64_encode((string) file_get_contents($cerfile));
8283
}
8384
if ($putEmisorRfcNombre) {
84-
$this->comprobante->addEmisor([
85+
$emisor = $this->comprobante->searchNode('cfdi:Emisor');
86+
if (null === $emisor) {
87+
$emisor = $this->comprobante->getEmisor();
88+
}
89+
$emisor->addAttributes([
8590
'Nombre' => $certificado->getName(),
8691
'Rfc' => $certificado->getRfc(),
8792
]);

src/CfdiUtils/Cleaner/Cleaner.php

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public static function isNameSpaceAllowed(string $namespace): bool
8787
public function clean()
8888
{
8989
$this->removeAddenda();
90+
$this->removeIncompleteSchemaLocations();
9091
$this->removeNonSatNSNodes();
9192
$this->removeNonSatNSschemaLocations();
9293
$this->removeUnusedNamespaces();
@@ -157,6 +158,37 @@ public function removeAddenda()
157158
}
158159
}
159160

161+
/**
162+
* Procedure to drop schemaLocations where second part does not ends with '.xsd'
163+
*
164+
* @return void
165+
*/
166+
public function removeIncompleteSchemaLocations()
167+
{
168+
$schemaLocations = $this->obtainXsiSchemaLocations();
169+
for ($s = 0; $s < $schemaLocations->length; $s++) {
170+
$element = $schemaLocations->item($s);
171+
if (null !== $element) {
172+
$element->nodeValue = $this->removeIncompleteSchemaLocation($element->nodeValue);
173+
}
174+
}
175+
}
176+
177+
public function removeIncompleteSchemaLocation(string $source): string
178+
{
179+
$components = array_values(array_filter(array_map('trim', explode(' ', $source))));
180+
$length = count($components);
181+
for ($c = 0; $c < $length; $c = $c + 1) {
182+
$xsd = $components[$c + 1] ?? '';
183+
if ((0 === strcasecmp('.xsd', substr($xsd, -4, 4)))) {
184+
$c = $c + 1;
185+
continue;
186+
}
187+
$components[$c] = '';
188+
}
189+
return strval(implode(' ', array_filter($components)));
190+
}
191+
160192
/**
161193
* Procedure to drop schemaLocations that are not allowed
162194
* If the schemaLocation is empty then remove the attribute
@@ -165,12 +197,7 @@ public function removeAddenda()
165197
*/
166198
public function removeNonSatNSschemaLocations()
167199
{
168-
// Do not assume that prefix for http://www.w3.org/2001/XMLSchema-instance is "xsi"
169-
$xsi = $this->dom()->lookupPrefix('http://www.w3.org/2001/XMLSchema-instance');
170-
if (! $xsi) {
171-
return;
172-
}
173-
$schemaLocations = $this->xpathQuery("//@$xsi:schemaLocation");
200+
$schemaLocations = $this->obtainXsiSchemaLocations();
174201
for ($s = 0; $s < $schemaLocations->length; $s++) {
175202
$element = $schemaLocations->item($s);
176203
if (null !== $element) {
@@ -265,6 +292,16 @@ public function removeUnusedNamespaces()
265292
}
266293
}
267294

295+
private function obtainXsiSchemaLocations(): DOMNodeList
296+
{
297+
// Do not assume that prefix for http://www.w3.org/2001/XMLSchema-instance is "xsi"
298+
$xsi = $this->dom()->lookupPrefix('http://www.w3.org/2001/XMLSchema-instance');
299+
if (! $xsi) {
300+
return new DOMNodeList();
301+
}
302+
return $this->xpathQuery("//@$xsi:schemaLocation");
303+
}
304+
268305
/**
269306
* Helper function to perform a XPath query using an element (or root element)
270307
* @param string $query

src/CfdiUtils/ConsultaCfdiSat/Config.php

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,21 @@ class Config
1212
private $verifyPeer;
1313

1414
/** @var string */
15-
private $wsdlUrl;
15+
private $serviceUrl;
1616

17-
public function __construct(int $timeout = 10, bool $verifyPeer = true, string $wsdlUrl = '')
18-
{
17+
/** @var string */
18+
private $wsdlLocation;
19+
20+
public function __construct(
21+
int $timeout = 10,
22+
bool $verifyPeer = true,
23+
string $serviceUrl = '',
24+
string $wsdlLocation = ''
25+
) {
1926
$this->timeout = $timeout;
2027
$this->verifyPeer = $verifyPeer;
21-
$this->wsdlUrl = $wsdlUrl ? : static::DEFAULT_WSDL_URL;
28+
$this->serviceUrl = $serviceUrl ? : static::DEFAULT_WSDL_URL;
29+
$this->wsdlLocation = $wsdlLocation ? : $this->serviceUrl;
2230
}
2331

2432
public function getTimeout(): int
@@ -31,8 +39,28 @@ public function shouldVerifyPeer(): bool
3139
return $this->verifyPeer;
3240
}
3341

42+
/**
43+
* @deprecated since Version 2.7.1 in favor of getServiceUrl
44+
* @see getServiceUrl
45+
* @return string
46+
*/
3447
public function getWsdlUrl(): string
3548
{
36-
return $this->wsdlUrl;
49+
return $this->getServiceUrl();
50+
}
51+
52+
public function getServiceUrl(): string
53+
{
54+
return $this->serviceUrl;
55+
}
56+
57+
public function getWsdlLocation(): string
58+
{
59+
return $this->wsdlLocation;
60+
}
61+
62+
public static function getLocalWsdlLocation(): string
63+
{
64+
return __DIR__ . DIRECTORY_SEPARATOR . 'ConsultaCFDIServiceSAT.svc.xml';
3765
}
3866
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<wsdl:definitions name="ConsultaCFDIService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><wsp:Policy wsu:Id="BasicHttpsBinding_IConsultaCFDIService_policy"><wsp:ExactlyOne><wsp:All><sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"><wsp:Policy><sp:TransportToken><wsp:Policy><sp:HttpsToken RequireClientCertificate="false"/></wsp:Policy></sp:TransportToken><sp:AlgorithmSuite><wsp:Policy><sp:Basic256/></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy><sp:Strict/></wsp:Policy></sp:Layout></wsp:Policy></sp:TransportBinding></wsp:All></wsp:ExactlyOne></wsp:Policy><wsdl:types><xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:import namespace="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio"/><xs:element name="Consulta"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="expresionImpresa" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="ConsultaResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="ConsultaResult" nillable="true" type="q1:Acuse" xmlns:q1="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio"/></xs:sequence></xs:complexType></xs:element></xs:schema><xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/"><xs:element name="anyType" nillable="true" type="xs:anyType"/><xs:element name="anyURI" nillable="true" type="xs:anyURI"/><xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/><xs:element name="boolean" nillable="true" type="xs:boolean"/><xs:element name="byte" nillable="true" type="xs:byte"/><xs:element name="dateTime" nillable="true" type="xs:dateTime"/><xs:element name="decimal" nillable="true" type="xs:decimal"/><xs:element name="double" nillable="true" type="xs:double"/><xs:element name="float" nillable="true" type="xs:float"/><xs:element name="int" nillable="true" type="xs:int"/><xs:element name="long" nillable="true" type="xs:long"/><xs:element name="QName" nillable="true" type="xs:QName"/><xs:element name="short" nillable="true" type="xs:short"/><xs:element name="string" nillable="true" type="xs:string"/><xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/><xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/><xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/><xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/><xs:element name="char" nillable="true" type="tns:char"/><xs:simpleType name="char"><xs:restriction base="xs:int"/></xs:simpleType><xs:element name="duration" nillable="true" type="tns:duration"/><xs:simpleType name="duration"><xs:restriction base="xs:duration"><xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/><xs:minInclusive value="-P10675199DT2H48M5.4775808S"/><xs:maxInclusive value="P10675199DT2H48M5.4775807S"/></xs:restriction></xs:simpleType><xs:element name="guid" nillable="true" type="tns:guid"/><xs:simpleType name="guid"><xs:restriction base="xs:string"><xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/></xs:restriction></xs:simpleType><xs:attribute name="FactoryType" type="xs:QName"/><xs:attribute name="Id" type="xs:ID"/><xs:attribute name="Ref" type="xs:IDREF"/></xs:schema><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio"><xs:complexType name="Acuse"><xs:sequence><xs:element minOccurs="0" name="CodigoEstatus" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="EsCancelable" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="Estado" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="EstatusCancelacion" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Acuse" nillable="true" type="tns:Acuse"/></xs:schema></wsdl:types><wsdl:message name="IConsultaCFDIService_Consulta_InputMessage"><wsdl:part name="parameters" element="tns:Consulta"/></wsdl:message><wsdl:message name="IConsultaCFDIService_Consulta_OutputMessage"><wsdl:part name="parameters" element="tns:ConsultaResponse"/></wsdl:message><wsdl:portType name="IConsultaCFDIService"><wsdl:operation name="Consulta"><wsdl:input wsaw:Action="http://tempuri.org/IConsultaCFDIService/Consulta" message="tns:IConsultaCFDIService_Consulta_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IConsultaCFDIService/ConsultaResponse" message="tns:IConsultaCFDIService_Consulta_OutputMessage"/></wsdl:operation></wsdl:portType><wsdl:binding name="BasicHttpBinding_IConsultaCFDIService" type="tns:IConsultaCFDIService"><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="Consulta"><soap:operation soapAction="http://tempuri.org/IConsultaCFDIService/Consulta" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:binding name="BasicHttpsBinding_IConsultaCFDIService" type="tns:IConsultaCFDIService"><wsp:PolicyReference URI="#BasicHttpsBinding_IConsultaCFDIService_policy"/><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="Consulta"><soap:operation soapAction="http://tempuri.org/IConsultaCFDIService/Consulta" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="ConsultaCFDIService"><wsdl:port name="BasicHttpBinding_IConsultaCFDIService" binding="tns:BasicHttpBinding_IConsultaCFDIService"><soap:address location="https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc"/></wsdl:port><wsdl:port name="BasicHttpsBinding_IConsultaCFDIService" binding="tns:BasicHttpsBinding_IConsultaCFDIService"><soap:address location="https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc"/></wsdl:port></wsdl:service></wsdl:definitions>

src/CfdiUtils/ConsultaCfdiSat/WebService.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ protected function createSoapClient(): SoapClient
3838
{
3939
$config = $this->getConfig();
4040
$soapOptions = [
41+
'location' => $config->getServiceUrl(),
4142
'soap_version' => SOAP_1_1,
4243
'cache_wsdl' => WSDL_CACHE_NONE,
4344
'exceptions' => 1,
@@ -50,7 +51,7 @@ protected function createSoapClient(): SoapClient
5051
'trace' => false, // use this setting for development
5152
];
5253

53-
return new SoapClient($config->getWsdlUrl(), $soapOptions);
54+
return new SoapClient($config->getWsdlLocation(), $soapOptions);
5455
}
5556

5657
public function request(RequestParameters $requestParameters): StatusResponse

0 commit comments

Comments
 (0)