HELP !!!!! PHP SOAP Not building objects correctly

View: New views
4 Messages — Rating Filter:   Alert me  

HELP !!!!! PHP SOAP Not building objects correctly

by Tim Traver :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi all,

sorry for the cross post to the general PHP list as well as the SOAP PHP
list, but I'm a little bit desperate...

Ok, for some reason when I am sending the proper objects to the
__soapCall method, it is not including those objects in the XML call
itself...

I am using PHP 5.2.6 now after using 5.2.5 and thinking this may be
fixed in an upgrade, but it is not...

ok, here is a dump of the object I am sending the __soapCall method as
an argument :

[struct] => CreateCustomerPaymentProfile Object
(
            [merchantAuthentication] => MerchantAuthenticationType Object
                (
                    [name] => xxxxxxxxx
                    [transactionKey] => xxxxxxxxxx
                )
            [customerProfileId] => 181854
            [paymentProfile] => CustomerPaymentProfileType Object
                (
                    [payment] => PaymentSimpleType Object
                        (
                            [creditCard] => CreditCardType Object
                                (
                                    [cardNumber] => XXXXXXXXXXXXXXXX
                                    [expirationDate] => XXXX-XX
                                )
                        )
                    [customerType] => individual
                    [billTo] => CustomerAddressType Object
                        (
                            [firstName] => Tim
                            [lastName] => Traver
                        )
                )
            [validationMode] => none
        )

And here is the call that is generated :
[__last_request] => <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="https://api.authorize.net/soap/v1/">
<SOAP-ENV:Body>
  <ns1:CreateCustomerPaymentProfile>
        <ns1:merchantAuthentication>
            <ns1:name>xxxxxxxxxxxx</ns1:name>
            <ns1:transactionKey>xxxxxxxxxxxxxxxx</ns1:transactionKey>
        </ns1:merchantAuthentication>
        <ns1:customerProfileId>181854</ns1:customerProfileId>
        <ns1:paymentProfile>
            <ns1:customerType>individual</ns1:customerType>
            <ns1:billTo>
                <ns1:firstName>Tim</ns1:firstName>
                <ns1:lastName>Traver</ns1:lastName>
            </ns1:billTo>
            <ns1:payment/>
        </ns1:paymentProfile>
    <ns1:validationMode>none</ns1:validationMode>
</ns1:CreateCustomerPaymentProfile>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

As you can see, all of the object variables are created correctly,
except that the "payment" object is not. It is simply represented by
<ns1:payment/> and has no start, and no variables that were sent in the
object.

This is very strange, and I can't figure out where to look to try and
solve this problem, but it is a very big problem.

I have tried to changed the order of the objects, what the actual values
of the objects are, but I'm now banging my head as to why the soap
construction is not including these values...

Any help would be greatly appreciated,

Tim.






Re: [PHP] HELP !!!!! PHP SOAP Not building objects correctly

by quickshiftin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, May 16, 2008 at 1:04 PM, Tim Traver <tt-list@...> wrote:

> Hi all,
>
> sorry for the cross post to the general PHP list as well as the SOAP PHP
> list, but I'm a little bit desperate...
>
> Ok, for some reason when I am sending the proper objects to the __soapCall
> method, it is not including those objects in the XML call itself...
>
> I am using PHP 5.2.6 now after using 5.2.5 and thinking this may be fixed
> in an upgrade, but it is not...
>
> ok, here is a dump of the object I am sending the __soapCall method as an
> argument :
>
> [struct] => CreateCustomerPaymentProfile Object
> (
>           [merchantAuthentication] => MerchantAuthenticationType Object
>               (
>                   [name] => xxxxxxxxx
>                   [transactionKey] => xxxxxxxxxx
>               )
>           [customerProfileId] => 181854
>           [paymentProfile] => CustomerPaymentProfileType Object
>               (
>                   [payment] => PaymentSimpleType Object
>                       (
>                           [creditCard] => CreditCardType Object
>                               (
>                                   [cardNumber] => XXXXXXXXXXXXXXXX
>                                   [expirationDate] => XXXX-XX
>                               )
>                       )
>                   [customerType] => individual
>                   [billTo] => CustomerAddressType Object
>                       (
>                           [firstName] => Tim
>                           [lastName] => Traver
>                       )
>               )
>           [validationMode] => none
>       )
>
> And here is the call that is generated :
> [__last_request] => <?xml version="1.0" encoding="UTF-8"?>
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="
> http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="
> https://api.authorize.net/soap/v1/">
> <SOAP-ENV:Body>
>  <ns1:CreateCustomerPaymentProfile>
>       <ns1:merchantAuthentication>
>           <ns1:name>xxxxxxxxxxxx</ns1:name>
>           <ns1:transactionKey>xxxxxxxxxxxxxxxx</ns1:transactionKey>
>       </ns1:merchantAuthentication>
>       <ns1:customerProfileId>181854</ns1:customerProfileId>
>       <ns1:paymentProfile>
>           <ns1:customerType>individual</ns1:customerType>
>           <ns1:billTo>
>               <ns1:firstName>Tim</ns1:firstName>
>               <ns1:lastName>Traver</ns1:lastName>
>           </ns1:billTo>
>           <ns1:payment/>
>       </ns1:paymentProfile>
>   <ns1:validationMode>none</ns1:validationMode>
> </ns1:CreateCustomerPaymentProfile>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
> As you can see, all of the object variables are created correctly, except
> that the "payment" object is not. It is simply represented by <ns1:payment/>
> and has no start, and no variables that were sent in the object.
>
> This is very strange, and I can't figure out where to look to try and solve
> this problem, but it is a very big problem.
>
> I have tried to changed the order of the objects, what the actual values of
> the objects are, but I'm now banging my head as to why the soap construction
> is not including these values...
>
> Any help would be greatly appreciated,
>
> Tim.


first thing that comes to mind, the SoapClient::__call() method is
deprecated.  have you tried using the SoapClient instance directly?  for
example, if you are in WSDL mode and the wsdl defines a method doStuff(),
you can use a SoapClient instance $sc as $sc->doStuff().  i would try that
and see what happens.

-nathan

Re: [PHP] HELP !!!!! PHP SOAP Not building objects correctly

by Tim Traver :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Nathan Nobbe wrote:

> On Fri, May 16, 2008 at 1:04 PM, Tim Traver <tt-list@...
> <mailto:tt-list@...>> wrote:
>
>     Hi all,
>
>     sorry for the cross post to the general PHP list as well as the
>     SOAP PHP list, but I'm a little bit desperate...
>
>     Ok, for some reason when I am sending the proper objects to the
>     __soapCall method, it is not including those objects in the XML
>     call itself...
>
>     I am using PHP 5.2.6 now after using 5.2.5 and thinking this may
>     be fixed in an upgrade, but it is not...
>
>     ok, here is a dump of the object I am sending the __soapCall
>     method as an argument :
>
>     [struct] => CreateCustomerPaymentProfile Object
>     (
>               [merchantAuthentication] => MerchantAuthenticationType
>     Object
>                   (
>                       [name] => xxxxxxxxx
>                       [transactionKey] => xxxxxxxxxx
>                   )
>               [customerProfileId] => 181854
>               [paymentProfile] => CustomerPaymentProfileType Object
>                   (
>                       [payment] => PaymentSimpleType Object
>                           (
>                               [creditCard] => CreditCardType Object
>                                   (
>                                       [cardNumber] => XXXXXXXXXXXXXXXX
>                                       [expirationDate] => XXXX-XX
>                                   )
>                           )
>                       [customerType] => individual
>                       [billTo] => CustomerAddressType Object
>                           (
>                               [firstName] => Tim
>                               [lastName] => Traver
>                           )
>                   )
>               [validationMode] => none
>           )
>
>     And here is the call that is generated :
>     [__last_request] => <?xml version="1.0" encoding="UTF-8"?>
>     <SOAP-ENV:Envelope
>     xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
>     xmlns:ns1="https://api.authorize.net/soap/v1/">
>     <SOAP-ENV:Body>
>      <ns1:CreateCustomerPaymentProfile>
>           <ns1:merchantAuthentication>
>               <ns1:name>xxxxxxxxxxxx</ns1:name>
>               <ns1:transactionKey>xxxxxxxxxxxxxxxx</ns1:transactionKey>
>           </ns1:merchantAuthentication>
>           <ns1:customerProfileId>181854</ns1:customerProfileId>
>           <ns1:paymentProfile>
>               <ns1:customerType>individual</ns1:customerType>
>               <ns1:billTo>
>                   <ns1:firstName>Tim</ns1:firstName>
>                   <ns1:lastName>Traver</ns1:lastName>
>               </ns1:billTo>
>               <ns1:payment/>
>           </ns1:paymentProfile>
>       <ns1:validationMode>none</ns1:validationMode>
>     </ns1:CreateCustomerPaymentProfile>
>     </SOAP-ENV:Body>
>     </SOAP-ENV:Envelope>
>
>     As you can see, all of the object variables are created correctly,
>     except that the "payment" object is not. It is simply represented
>     by <ns1:payment/> and has no start, and no variables that were
>     sent in the object.
>
>     This is very strange, and I can't figure out where to look to try
>     and solve this problem, but it is a very big problem.
>
>     I have tried to changed the order of the objects, what the actual
>     values of the objects are, but I'm now banging my head as to why
>     the soap construction is not including these values...
>
>     Any help would be greatly appreciated,
>
>     Tim.
>
>
> first thing that comes to mind, the SoapClient::__call() method is
> deprecated.  have you tried using the SoapClient instance directly?  
> for example, if you are in WSDL mode and the wsdl defines a method
> doStuff(), you can use a SoapClient instance $sc as $sc->doStuff().  i
> would try that and see what happens.
>
> -nathan
Thanks for the response Nathan, but that doesn't appear to change
anything...

I'm just super confused as to why it would leave an entire object out of
the tree that it is sending...

Anyone else have any suggestions???

Tim.


RE: Re: [PHP] HELP !!!!! PHP SOAP Not building objects correctly

by Christian Wenz-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello Tim,

>
> Anyone else have any suggestions???
>

I didn't have a close look at your code yet, but your chances of getting an answer from somebody will be >*much* greater if you managed to provide a complete, self-contained and minimized code sample, using a simpler object but still exposing the same undesired behavior.

Best regards
Christian



--
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

LightInTheBox - Buy quality products at wholesale price