2017-09-22 72 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