Как перевести SOAP XML запрос на PHP? - PullRequest
0 голосов
/ 20 апреля 2020

Мне нужно отправить soap запрос с PHP.

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.datacontract.org/2004/07/Common" xmlns:ns2="http://tempuri.org/">
  <SOAP-ENV:Body>
    <ns2:SaveThePayment>
      <ns2:reglement>
        <ns1:CENTRE>330</ns1:CENTRE>
        <ns1:CLIENT>00800808782</ns1:CLIENT>
        <ns1:EXIGIBILITE>25/03/19</ns1:EXIGIBILITE>
        <ns1:MONTANT>1000</ns1:MONTANT>
        <ns1:NUMFACTURE>787322</ns1:NUMFACTURE>
        <ns1:ORDRE>01</ns1:ORDRE>
        <ns1:PERIODE>201902</ns1:PERIODE>
      </ns2:reglement>
      <ns2:plateforme>?</ns2:plateforme>
    </ns2:SaveThePayment>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Вот как я это сделал в PHP

class MakeIt
{
    protected $url = "https://server_ip:port?wsdl";

    public function makeItHere()
    {
        $reglement = new ReferenceReglement();
        $reglement->CENTRE = "330";
        $reglement->CLIENT = "00800808782";
        $reglement->EXIGIBILITE = "25/03/19";
        $reglement->MONTANT = 3000.00;
        $reglement->NUMFACTURE = "787322";
        $reglement->ORDRE = "01";
        $reglement->PERIODE = "201902";

        $clientSoap = new SoapClient($this->url);
        // dd($clientSoap->__getTypes());
        $response = $clientSoap->__soapCall("SaveThePayment", [
            "reglement" => $reglement,
            // "plateforme" => ""
        ]);

        dd($response);
    }
}

class ReferenceReglement
{
    public $CENTRE;
    public $CLIENT;
    public $ORDRE;
    public $NUMFACTURE;
    public $PERIODE;
    public $MONTANT;
    public $EXIGIBILITE;
}

Вот ошибка, которую я получаю

SoapFault Сервер не смог обработать запрос из-за внутренней ошибки. Для получения дополнительных сведений об ошибке включите IncludeExceptionDetailInFaults (из ServiceBehaviorAttribute или из поведения конфигурации) на сервере, чтобы вернуть клиенту информацию об исключении, или включите отслеживание в соответствии с документацией Microsoft. NET Framework Software Development Kit (SDK) и просмотреть журналы отслеживания сервера.

1 Ответ

0 голосов
/ 20 апреля 2020

Первым шагом будет просмотреть журналы на вашем soap клиентском сервере.

Здесь проблема может заключаться в типе аргумента, который вы передаете для "reglement", который является объектом. Поэтому проверьте на сервере soap, является ли тип аргумента одинаковым или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...