First Data の Global Gateway からの SOAP 応答を処理しようとしています。以前に SoapClient を使用したことがありますが、wsdl はありません。また、wsdl は提供していないと会社は言っています。
ここやPHPマニュアルにある例に基づいて、SimpleXMLElementなどの他のさまざまなアプローチを試しましたが、何も機能しません。名前空間が私の問題の一部であると思われます。誰かがアプローチを提案したり、同様の例を教えてくれたりできますか.
PHP 5 を使用しています。
部分的な SOAP 応答 (その前にあるすべての HTML ヘッダーが削除された状態) は、次のようになります。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<fdggwsapi:FDGGWSApiOrderResponse xmlns:fdggwsapi="http://secure.linkpt.net/fdggwsapi/schemas_us/fdggwsapi">
<fdggwsapi:CommercialServiceProvider/>
<fdggwsapi:TransactionTime>Thu Nov 29 17:03:18 2012</fdggwsapi:TransactionTime>
<fdggwsapi:TransactionID/>
<fdggwsapi:ProcessorReferenceNumber/>
<fdggwsapi:ProcessorResponseMessage/>
<fdggwsapi:ErrorMessage>SGS-005005: Duplicate transaction.</fdggwsapi:ErrorMessage>
<fdggwsapi:OrderId>A-e833606a-5197-45d6-b990-81e52df41274</fdggwsapi:OrderId>
...
<snip>
また、SOAP 障害が通知されたかどうかを判断できるようにする必要もあります。そのための XML は次のようになります。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:FaultX>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring xml:lang="en">MerchantException</faultstring>
<detail>
cvc-pattern-valid: Value '9999185.00' is not facet-valid with respect to pattern '([1-9]([0-9]{0,3}))?[0-9](\.[0-9]{1,2})?' for type '#AnonType_ChargeTotalAmount'.
cvc-type.3.1.3: The value '9999185.00' of element 'v1:ChargeTotal' is not valid.
</detail>
</SOAP-ENV:FaultX>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
コード氏の回答を使用して、非障害応答からデータを取得できました。しかし、扱っているパケットのタイプを特定し、両方のタイプからデータを抽出する必要があります。彼らがwsdlを提供するだけなら、とても簡単です!