2017-09-22 95 views
0

我一直在試圖弄清楚如何使用php/laravel進行肥皂請求。但從所有的互聯網兩天以來的研究,我可以找到的唯一的東西是老生鏽的PHP代碼,使肥皂的請求,他們甚至沒有工作:PHP xml SOAP和laravel

這是一個剪掉,我試圖讓它工作,所以我有那些SOAP請求的一般看法,但我只得到不能夠進行SoapClient的錯誤:

<?php 


$aHTTP['http']['header'] = "User-Agent: PHP-SOAP/5.5.11\r\n"; 

$aHTTP['http']['header'].= "username: XXXXXXXXXXX\r\n"."password: XXXXX\r\n"; 

$context = stream_context_create($aHTTP); 

$client=new SoapClient("http://www.thomas-bayer.com/axis2/services/BLZService?wsdl",array('trace' => 1,"stream_context" => $context)); 

$result = $client::__getFunctions(); 

var_dump($result); 

,因爲它看起來超級難我找到有關PHP的肥皂任何想法,任何資訊?

+0

肥皂確實是屁股疼痛。您的代碼是否可以獲取函數列表?即使在使用SOAP API十幾年之後,我仍然經常需要向供應商詢問示例代碼或幫助。 – ceejayoz

+0

我一直在與JSON REST工作很好從來沒有做過肥皂PHP之前,當我嘗試它感覺像我處理很舊的東西我一直沒有找到任何好資源,至少如何創建一個XML文件並解析它。 PHP手冊其超級苛刻的大多數例子,他們不工作!我甚至不明白爲什麼像這樣的服務應該存在,當我們有JSON –

+0

這是一個古老的技術 - 你不會看到許多*新的* SOAP API。也就是說,在使用SOAP類時,基本上不會碰到原始XML。您將需要此SOAP API的文檔。 – ceejayoz

回答

-1

這是我目前通過php使用curl語句向付款提供者發出的肥皂請求示例。基本上映射您想要在一個字符串中的xml請求。該字符串將在curl post字段中發送並返回響應。

$soapdata="<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:tns='tns:ns'> 
<soapenv:Header> 
    <tns:CheckOutHeader> 
    <MERCHANT_ID>$merchantid</MERCHANT_ID> 
    <PASSWORD>$password</PASSWORD> 
    <TIMESTAMP>$timestamp</TIMESTAMP> 
    </tns:CheckOutHeader> 
</soapenv:Header> 
<soapenv:Body> 
    <tns:processCheckOutRequest> 
    <MERCHANT_TRANSACTION_ID>$merchanttransactionid</MERCHANT_TRANSACTION_ID> 
    <REFERENCE_ID>$referenceid</REFERENCE_ID> 
    <AMOUNT>$amount</AMOUNT> 
    <MSISDN>$mobileno</MSISDN> 
    <!--Optional:--> 
    <ENC_PARAMS></ENC_PARAMS> 
    <CALL_BACK_URL>$callbackurl</CALL_BACK_URL> 
    <CALL_BACK_METHOD>$callbackmethod</CALL_BACK_METHOD> 
    <TIMESTAMP>$timestamp</TIMESTAMP> 
    </tns:processCheckOutRequest> 
</soapenv:Body> 
</soapenv:Envelope>"; 
//End Soap data 
//We call the server for the first time 
//end calling function 
function makesoaprequest($url, $soapdata) 
{ 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml', 'Authorization: Basic')); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, "$soapdata"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    //Begin SSL 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    //End SSL 
    $response = curl_exec($ch); 
    return $response; 
    curl_close($ch); 
} 
+0

Gah。 PHP具有內置的SOAP處理。沒有理由手動創建XML並將其捲曲。 – ceejayoz

+0

@ceejayoz我曾嘗試使用php肥皂類,但遇到使用自定義標題的問題。此外,肥皂類的文檔並不是很好。正如用戶所說,他試圖尋找信息,並沒有得到他的幫助。我發佈了一些對我有用的東西,在我自己尋找有關這方面的信息後。我在猜測某個有改進的人或者更好的方法來使用PHP,而內部的soap類會將其作爲答案或評論發佈。這對我來說很有用,這就是我發佈它的原因。 – user145490