Я пытаюсь использовать мыло api для Ezidebit для извлечения всех клиентов в списке. Их документирование для меня очень сбивает с толку и, кажется, упускает некоторые вещи. Может быть, у меня тоже недостаточно навыков.SOAP API USING CURL
Документация находится здесь: https://www.getpayments.com/docs/#getcustomerlist
В настоящее время им ответ получаю:
a:ActionNotSupportedThe message with Action 'run' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
Вот мой код: (ив удалил свой ключ в XML и заменен 000000000000000)
<?php
$soap_request ='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:px="https://px.ezidebit.com.au/">
<soapenv:Header/>
<soapenv:Body>
<px:GetCustomerList>
<px:DigitalKey>000000000000000</px:DigitalKey>
<px:CustomerStatus>ALL</px:CustomerStatus>
<px:OrderBy>EzidebitCustomerID</px:OrderBy>
<px:Order>ASC</px:Order>
<px:PageNumber>1</px:PageNumber>
</px:GetCustomerList>
</soapenv:Body>
</soapenv:Envelope>';
$header = array(
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: \"run\"",
"Content-length: ".strlen($soap_request),
);
$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, "https://api.ezidebit.com.au/v3-5/nonpci");
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_TIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($soap_do, CURLOPT_POST, true);
curl_setopt($soap_do, CURLOPT_POSTFIELDS, $soap_request);
curl_setopt($soap_do, CURLOPT_HTTPHEADER, $header);
$content = curl_exec($soap_do);
if(curl_exec($soap_do) === false) {
$err = 'Curl error: ' . curl_error($soap_do);
curl_close($soap_do);
print $err;
} else {
curl_close($soap_do);
print_r($content);
}
?>
Я вижу, что ошибка относится к заголовку для: "SOAPAction: \" run \ "", однако я не уверен, что я должен иметь на своем месте.
Надеюсь, кто-то может мне помочь.
Почему бы вам не использовать PHP SOAP API для этого http://php.net/manual/en/book.soap.php – pinoyCoder
Я никогда не понимал это :(Я пробовал несколько раз, но никогда не обмотал голову вокруг него. –
хорошо вы пытаетесь усерднее, и я также рекомендую внимательно прочитать сообщение об ошибке php. – pinoyCoder