0

支払いエンジンの SOAP API には、customeraccountname や customeraccountnumber などの複数の RequestParameters が必要です。

<soapenv:Body Id="_body">
 <req:TransactionRequest>
  <req:Currency>EUR</req:Currency>
  <req:Services>
   <req:Service Name="directdebit" Action="Pay" Version="1">
    <req:RequestParameter Name="customeraccountname">Joe Doe</req:RequestParameter>
    <req:RequestParameter Name="customeraccountnumber">123456789</req:RequestParameter>
   </req:Service>
  </req:Services>
 </req:TransactionRequest>
</soapenv:Body>

これを実現するために、次の PHP コードを使用します。

<?php
$TransactionRequest = new Body();
$TransactionRequest->Currency = 'EUR';

$TransactionRequest->Services = new Services();
$TransactionRequest->Services->Service = new Service();
$TransactionRequest->Services->Service->Name= 'directdebit';
$TransactionRequest->Services->Service->Action = 'Pay';
$TransactionRequest->Services->Service->Version = 1;

$TransactionRequest->Services->Service->RequestParameter = new RequestParameter();
$TransactionRequest->Services->Service->RequestParameter->Name = 'customeraccountname';
$TransactionRequest->Services->Service->RequestParameter->_ = 'Joe Doe';

$TransactionRequest->Services->Service->RequestParameter = new RequestParameter();
$TransactionRequest->Services->Service->RequestParameter->Name = 'customeraccountnumber';
$TransactionRequest->Services->Service->RequestParameter->_ = '123456789';


//echo var_dump($TransactionRequest);
print_r($TransactionRequest);

class Body
{
    public $Currency;
    public $Services;
}

class Services
{
    public $Global;
    public $Service;
}

class Service
{
    public $RequestParameter;
    public $Name;
    public $Action;
    public $Version;
}

class RequestParameter
{
    public $_;
    public $Name;
    public $Group;
}
?>

ただし、結果のオブジェクトには最初の RequestParameter が含まれていません。

Body Object
(
    [Currency] => EUR
    [Services] => Services Object
        (
            [Global] => 
            [Service] => Service Object
                (
                    [RequestParameter] => RequestParameter Object
                        (
                            [_] => 123456789
                            [Name] => customeraccountnumber
                            [Group] => 
                        )
                    [Name] => directdebit
                    [Action] => Pay
                    [Version] => 1
                )
        )
)

どうすれば必要な結果を達成できますか?

あなたの助けを楽しみにしています, よろしく ロバート

4

1 に答える 1