나는 PHP에서 페이팔 통합을위한 SOAP 응답을 구문 분석하려고, 나는 다음과 같은 게시물을 통해 읽고 :PHP를 사용하여 PayPal API에서 SOAP 응답을 구문 분석하는 방법은 무엇입니까?
parse an XML with SimpleXML which has multiple namespaces
큰 통찰력을 제공하지만, 난 아직 방법을 알아낼 수 없습니까 올바르게해라. 이 SOAP 것은 복잡합니다. 여기
내가 구문 분석하는 데 필요한 SOAP 응답입니다 :$xml = simplexml_load_string($res, NULL, NULL, "http://schemas.xmlsoap.org/soap/envelope/");
$xml->registerXPathNamespace('soap-env', 'http://schemas.xmlsoap.org/soap/envelope/');
$xml->registerXPathNamespace('xsi', 'http://www.w3.org/1999/XMLSchema-instance');
$xml->registerXPathNamespace('wsse', 'http://schemas.xmlsoap.org/ws/2002/12/secext');
foreach($xml->xpath('//getexpresscheckoutdetailsresponse') as $header)
{
var_export($header->xpath('//timestamp')); // Should output 'something'.
}
$의 고해상도 :
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:ed="urn:ebay:apis:EnhancedDataTypes" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:ns="urn:ebay:api:PayPalAPI">
<soap-env:header>
<security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext" xsi:type="wsse:SecurityType">
</security>
<requestercredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
<credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType">
<username xsi:type="xs:string"/>
<password xsi:type="xs:string"/>
<signature xsi:type="xs:string"/>
<subject xsi:type="xs:string"/>
</credentials>
</requestercredentials>
</soap-env:header>
<soap-env:body id="_0">
<getexpresscheckoutdetailsresponse xmlns="urn:ebay:api:PayPalAPI">
<timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2012-01-30T16:27:02Z</timestamp>
<ack xmlns="urn:ebay:apis:eBLBaseComponents">Success</ack>
<correlationid xmlns="urn:ebay:apis:eBLBaseComponents">24f704da11e31</correlationid>
<version xmlns="urn:ebay:apis:eBLBaseComponents">85.0</version>
<build xmlns="urn:ebay:apis:eBLBaseComponents">2515991</build>
<getexpresscheckoutdetailsresponsedetails xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:GetExpressCheckoutDetailsResponseDetailsType">
<token xsi:type="ebl:ExpressCheckoutTokenType">EC-4AP53152LD9</token>
<payerinfo xsi:type="ebl:PayerInfoType">
<payer xsi:type="ebl:EmailAddressType">[email protected]</payer>
<payerid xsi:type="ebl:UserIDType">QWE5QWE4EW</payerid>
<payerstatus xsi:type="ebl:PayPalUserStatusCodeType">verified</payerstatus>
<payername xsi:type="ebl:PersonNameType">
<salutation xmlns="urn:ebay:apis:eBLBaseComponents"/>
<firstname xmlns="urn:ebay:apis:eBLBaseComponents">FirstName</firstname>
<middlename xmlns="urn:ebay:apis:eBLBaseComponents"/>
<lastname xmlns="urn:ebay:apis:eBLBaseComponents">LastName</lastname>
<suffix xmlns="urn:ebay:apis:eBLBaseComponents"/>
</payername>
<payercountry xsi:type="ebl:CountryCodeType">US</payercountry>
<payerbusiness xsi:type="xs:string"/>
<address xsi:type="ebl:AddressType">
<name xsi:type="xs:string"/>
<street1 xsi:type="xs:string"/>
<street2 xsi:type="xs:string"/>
<cityname xsi:type="xs:string"/>
<stateorprovince xsi:type="xs:string"/>
<countryname/>
<postalcode xsi:type="xs:string"/>
<addressowner xsi:type="ebl:AddressOwnerCodeType">PayPal</addressowner>
<addressstatus xsi:type="ebl:AddressStatusCodeType">None</addressstatus>
</address>
</payerinfo>
<custom xsi:type="xs:string">cutom_value</custom>
<invoiceid xsi:type="xs:string">PPMP-1393305760</invoiceid>
<billingagreementacceptedstatus>true</billingagreementacceptedstatus>
<paymentdetails xsi:type="ebl:PaymentDetailsType">
<ordertotal xsi:type="cc:BasicAmountType" currencyid="USD">0.02</ordertotal>
<shippingtotal xsi:type="cc:BasicAmountType" currencyid="USD">0.00</shippingtotal>
<handlingtotal xsi:type="cc:BasicAmountType" currencyid="USD">0.00</handlingtotal>
<taxtotal xsi:type="cc:BasicAmountType" currencyid="USD">0.00</taxtotal>
<orderdescription xsi:type="xs:string">Special Item</orderdescription>
<custom xsi:type="xs:string">cutom_value</custom>
<invoiceid xsi:type="xs:string">PPMP-1393305760</invoiceid>
<shiptoaddress xsi:type="ebl:AddressType">
<name xsi:type="xs:string"/>
<street1 xsi:type="xs:string"/>
<street2 xsi:type="xs:string"/>
<cityname xsi:type="xs:string"/>
<stateorprovince xsi:type="xs:string"/>
<countryname/>
<phone xsi:type="xs:string"/>
<postalcode xsi:type="xs:string"/>
<addressid xsi:type="xs:string"/>
<addressowner xsi:type="ebl:AddressOwnerCodeType">PayPal</addressowner>
<externaladdressid xsi:type="xs:string"/>
<addressstatus xsi:type="ebl:AddressStatusCodeType">None</addressstatus>
</shiptoaddress>
<insurancetotal xsi:type="cc:BasicAmountType" currencyid="USD">0.00</insurancetotal>
<shippingdiscount xsi:type="cc:BasicAmountType" currencyid="USD">0.00</shippingdiscount>
<insuranceoptionoffered xsi:type="xs:string">false</insuranceoptionoffered>
<sellerdetails xsi:type="ebl:SellerDetailsType"/>
<paymentrequestid xsi:type="xs:string"/>
<orderurl xsi:type="xs:string"/>
<softdescriptor xsi:type="xs:string"/>
</paymentdetails>
<checkoutstatus xsi:type="xs:string">PaymentActionNotInitiated</checkoutstatus>
<paymentrequestinfo xsi:type="ebl:PaymentRequestInfoType"/>
</getexpresscheckoutdetailsresponsedetails>
</getexpresscheckoutdetailsresponse>
</soap-env:body>
</soap-env:envelope>
을 그리고 여기 내가 지금까지 작업 된 PHP 코드입니다,하지만 결과 완전한 SOAP 응답을 포함합니다. 내가 도대체 뭘 잘못하고있는 겁니까? 어떤 도움이라도 정말 고맙습니다!
미리 감사드립니다.
최고,
Fab.
아마도 분명한 질문입니다. http://php.net/manual/en/book.soap.php와 같은 것이 해결되지 않는다면 무엇이 필요합니까? –