我是服务新手,我目前正在使用 SoapClient 对象在 PHP 中调用 .net WCF 服务。代码如下:
$arr2=array('paymentVendorCode'=>"test1",'transactionNumber'=>123456789,'dataSource'=>'Ghana_QA','customerNumber'=>45678912,'amount'=>10,'invoicePeriod'=>1,'currency'=>'GHC','paymentDescription'=>'CashPayment','methodofPayment'=>'CASH','productCollection'=>'PRCC4');
$certFile = "certs/Entrust.pem";
$options = array('soap_version' => SOAP_1_1 , 'local_cert' => $certFile , 'exceptions' => true ,'trace' => true ,'wdsl_local_copy' => true ,'ssl' => array('verify_peer' => false) ,'https' => array('curl_verify_ssl_peer' => false, 'curl_verify_ssl_host' => false)
);
try
{
echo "SOAP Client Object Made <br />";
//To Make soap client using WSDL files offline
$client = new SoapClient("RTPP_Web_Service_WSDL_20130306/multichoice.paymentservice.wsdl",$options);
}
catch(SoapFault $E)
{
echo "Error:--> ".$E->faultstring;
}
print_r($client->__getFunctions());
try
{
echo $pmt_customer=$client->__call("SubmitPayment", $arr2)."<br /><br />";
}
catch(SoapFault $fault)
{
echo "came here in catch";
trigger_error("SOAP Fault:(faultcode: {$fault->faultcode}\n"."faultstring: {$fault->faultstring})", E_USER_ERROR);
}
我浏览了我正在使用的所有 WSDL 文件,并获得了所有元素、消息、操作、参数等。在 WSDL 文件之一中,soap 地址如下:
<soap:address location="https://wispqa.multichoice.co.za/PaymentServicePerimeter/Intermediate.svc" />
这是被调用服务的实际地址,通常在 url 的末尾使用 ?WSDL 调用服务,但即使在上述 url 的末尾添加了这个之后,服务页面的外观仍然保持不变。
服务文档中的一件事是“该服务当前不使用消息契约”。
我正在向通过调用“$client->__getFunction()”获得的列表中调用其方法之一的服务发送请求。但它不是响应而是给出致命错误,可以从http://i.stack.imgur.com/GvS3d.png的屏幕截图中看到。
我已经为此工作了将近一个星期,但被困在这里。请如果有人可以让我离开这里。提前致谢。