Mieliśmy problemy z konfiguracją klienta PHP SOAP do korzystania z interfejsu Royal Mail Tracking API. Mamy konto założone w Royal Mail i nasze identyfikatory i sekrety. Możemy go uruchomić przy użyciu SOAPUI, ale zawsze otrzymujemy błąd "Wrong Version" podczas próby zaimplementowania go w PHP. Mamy plik WSDL lokalnie (który Royal Mail dostarczył za pośrednictwem swojego portalu dla programistów), który działa z SOAPUI, ale nie z klientem PHP SOAP. Mieliśmy nadzieję, że ktoś może zobaczyć, czy robimy coś złego. Opublikuję poniższy kod, ale pominiemy nasz sekret i identyfikator z kodu.PHP i Royal Mail Tracking API
<?php
ini_set('soap.wsdl_cache_enabled', 0);
ini_set('soap.wsdl_cache_ttl', 900);
ini_set('default_socket_timeout', 15);
$trackingNumber = 'F111111111JD';
$time = gmdate('Y-m-d\TH:i:s');
$intHeaders = [
'dateTime' => $time,
'version' => '1.0',
'identification' => [
'applicationId' => '***********',
'transactionId' => 123456
]
];
$wsdl = 'WSDL/Tracking_API_V1_1_1.wsdl';
$options = array(
'uri'=>'http://schemas.xmlsoap.org/soap/envelope/',
'style'=>SOAP_RPC,
'use'=>SOAP_ENCODED,
'soap_version'=>SOAP_1_2,
'cache_wsdl'=>WSDL_CACHE_NONE,
'connection_timeout'=>15,
'trace'=>true,
'encoding'=>'UTF-8',
'exceptions'=>true,
'stream_context' => stream_context_create([
"http" => [
'Accept' => 'application/soap+xml',
'X-IBM-Client-Secret' => '****',
'X-IBM-Client-Id'=> '****'
]
])
);
try {
$soap = new SoapClient($wsdl, $options);
$data = $soap->getSingleItemHistory(['integrationHeader' => $intHeaders, 'trackingNumber' => $trackingNumber]);
}
catch(Exception $e) {
die($e->getMessage());
}
var_dump($data);
die;
Staraliśmy korzystania SOAP_1_1 i SOAP_1_2 dla „soap_version”, ale to zawsze wraca z „zła wersja” błąd.
Mam nadzieję, że ktoś może pomóc.
Dziękuję bardzo. To zadziałało dla nas. Przepraszamy za spóźnioną odpowiedź na Twoją odpowiedź, ponieważ nie było mnie na to miejsce i nie mam dostępu do witryny. – Flyingearl
@alexbibie, oszczędzasz mój dzień. Przez dwa dni waliłem głową w podobny scenariusz w jednym z api bankowych, które wdrażam. – Anon30