2013-07-06 14 views
0

的支付引擎的SOAP API需要多個requestParameters的如customeraccountname和customeraccountnummber:如何在PHP對象添加多張數據行

<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代碼,試圖achief此:

<?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 
       ) 
     ) 
) 

我如何才能達到所需的結果?

期待您的幫助,關心羅伯特

回答

2

這是因爲你已經覆蓋了第一個參數。 您需要爲RequestParameter創建一個對象數組。

$TransactionRequest->Services->Service->RequestParameter = new Array(); 

$TransactionRequest->Services->Service->RequestParameter[0] = new RequestParameter(); 
$TransactionRequest->Services->Service->RequestParameter[0]->name='customeraccountname'; 
$TransactionRequest->Services->Service->RequestParameter[0]->_ = 'Jon Doe'; 

$TransactionRequest->Services->Service->RequestParameter[1] = new RequestParameter(); 
$TransactionRequest->Services->Service->RequestParameter[1]->name='customeraccountnumber'; 
$TransactionRequest->Services->Service->RequestParameter[1]->_ = '123456789'; 

希望這有助於..

+0

這trows錯誤:PHP解析錯誤:語法錯誤,有一些額外的信息解決意外T_ARRAY – user2556146

+0

從miqrogroove.com/blog $ new_array =陣列(); $ TransactionRequest-> Services-> Service-> RequestParameter =&$ need_to_free_up_this_var; $ need_to_free_up_this_var =&$ new_array; unset($ new_array); $ TransactionRequest-> Services-> Service-> RequestParameter [0] = new RequestParameter(); ......... $ TransactionRequest-> Services-> Service-> RequestParameter [1] - > _ ='123456789'; – user2556146

+0

@ user2556146:請添加作爲答案,鏈接這些資源,解釋它爲什麼現在起作用,以及具體解決「錯誤」是什麼。然後你可以接受這個答案。另外使用引用/變量別名似乎不適用於我。 – hakre