Php EzidBit支付网关createSchedule不工作
调用EzidBit SOAP调用时,我面临以下错误 a:ActionNotSupported由于EndpointDispatcher上的ContractFilter不匹配,无法在接收器上处理操作为“”的消息。这可能是因为合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无) 以下是EzidBit createSchedule的链接:Php EzidBit支付网关createSchedule不工作,php,soap,Php,Soap,调用EzidBit SOAP调用时,我面临以下错误 a:ActionNotSupported由于EndpointDispatcher上的ContractFilter不匹配,无法在接收器上处理操作为“”的消息。这可能是因为合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无) 以下是EzidBit createSchedule的链接: $xml\u post\u string=> 4
$xml\u post\u string=>
49A67D1B-DF3F-4013-B13A-A5E9E41E8873
102
2011-03-05
W
周一
5.
Y
Y
Y
Y
4000
4.
0
不
Web服务用户
'; // 表格中的数据,例如某些ID号
$headers=数组(
“内容类型:text/xml;字符集=\“utf-8\”,
“接受:文本/xml”,
“缓存控制:无缓存”,
“Pragma:无缓存”,
“行动:https://api.demo.ezidebit.com.au/v3-5/nonpci",
“内容长度:”.strlen($xml\u post\u string),
); //SOAPAction:您的操作URL
$url=”https://api.demo.ezidebit.com.au/v3-5/nonpci";
//用于https与auth连接的PHP cURL
$soap\u do=curl\u init();
curl_setopt($soap_do,CURLOPT_URL,$URL);
curl_setopt($soap_do,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($soap_do,CURLOPT_TIMEOUT,10);
curl_setopt($soap_do,CURLOPT_RETURNTRANSFER,true);
curl_setopt($soap_do,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($soap_do,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($soap_do,CURLOPT_POST,true);
curl_setopt($soap_do,CURLOPT_POSTFIELDS,$xml_post_string);
curl_setopt($soap_do,CURLOPT_HTTPHEADER,$headers);
$content=curl\u exec($soap\u do);
if(curl\u exec($soap\u do)==false){
$err='Curl error:'.Curl\u error($soap\u do);
卷曲关闭($soap\u-do);
打印$err;
}否则{
卷曲关闭($soap\u-do);
}
打印(内容);
//转换
$response1=str_replace(“,”,$content);
$response2=str_替换(“,”,$response1);
//将C转换为XML
$parser=simplexml\u load\u字符串($response2);
//用户$parser从XML响应中获取数据并显示它。
我在Ezidebit的集成服务团队工作,这听起来确实像是一个与TLS相关的问题
您能否确认您的OpenSSL版本是否支持TLS1.2?错误消息可能表示您没有使用正确的安全协议连接。有关Ezidebit有关SSL更改的更多信息,请参阅此链接,否则我们有用的集成服务团队可以通过提出服务请求进一步帮助您进行集成
问候,
George扩展了Mohammed的评论,该评论建议他已经解决了与soapActionURL http头值相关的问题,这是我搜索到的根本原因,这表明SoapAction应该类似于
https://px.ezidebit.com.au/INonPCIService/EditCustomerDetails
我发现通过查看,我能够构造正确的soapActionURL值,在createSchedule的情况下,该值应该是
https://px.ezidebit.com.au/INonPCIService/CreateSchedule
那么你打算怎么安排呢???你好,乔治,我们已经解决了这个问题。实际上,它与我在CURL头中传递的soapActionURL有关。谢谢你的回答。嗨,穆罕默德,谢谢你的确认。请注意,所有集成都需要认证,您可以直接与我们联系以获取更多信息。您能否描述soapActionURL标头的错误版本和修复版本,以帮助其他有类似问题的人?
$xml_post_string = '<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:px="https://px.ezidebit.com.au/">
<soapenv:Header />
<soapenv:Body>
<px:CreateSchedule>
<px:DigitalKey>49A67D1B-DF3F-4013-B13A-A5E9E41E8873</px:DigitalKey>
<px:EziDebitCustomerID />
<px:YourSystemReference>102</px:YourSystemReference>
<px:ScheduleStartDate>2011-03-05</px:ScheduleStartDate>
<px:SchedulePeriodType>W</px:SchedulePeriodType>
<px:DayOfWeek>MON</px:DayOfWeek>
<px:DayOfMonth>5</px:DayOfMonth>
<px:FirstWeekOfMonth>Y</px:FirstWeekOfMonth>
<px:SecondWeekOfMonth>Y</px:SecondWeekOfMonth>
<px:ThirdWeekOfMonth>Y</px:ThirdWeekOfMonth>
<px:FourthWeekOfMonth>Y</px:FourthWeekOfMonth>
<px:PaymentAmountInCents>4000</px:PaymentAmountInCents>
<px:LimitToNumberOfPayments>4</px:LimitToNumberOfPayments>
<px:LimitToTotalAmountInCents>0</px:LimitToTotalAmountInCents>
<px:KeepManualPayments>NO</px:KeepManualPayments>
<px:Username>WebServiceUser</px:Username>
</px:CreateSchedule>
</soapenv:Body>
</soapenv:Envelope>'; // data from the form, e.g. some ID number
$headers = array(
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: https://api.demo.ezidebit.com.au/v3-5/nonpci",
"Content-length: ".strlen($xml_post_string),
); //SOAPAction: your op URL
$url = "https://api.demo.ezidebit.com.au/v3-5/nonpci";
// PHP cURL for https connection with auth
$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, $url );
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_TIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($soap_do, CURLOPT_POST,true);
curl_setopt($soap_do, CURLOPT_POSTFIELDS, $xml_post_string);
curl_setopt($soap_do, CURLOPT_HTTPHEADER, $headers);
$content = curl_exec($soap_do);
if(curl_exec($soap_do) === false) {
$err = 'Curl error: ' . curl_error($soap_do);
curl_close($soap_do);
print $err;
} else {
curl_close($soap_do);
}
print_r($content);
// converting
$response1 = str_replace("<soap:Body>","",$content);
$response2 = str_replace("</soap:Body>","",$response1);
// convertingc to XML
$parser = simplexml_load_string($response2);
// user $parser to get your data out of XML response and to display it.