我以前没有使用过SOAP。我想使用XML数据请求执行SOAP。我试过了,但没有成功。https://www.getpayments.com/docs/#processrealtimetokenpayment,这是我想要调用的支付网关网址。
我使用了以下代码:
$xml = '<?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:ProcessRealtimeTokenPayment>
<px:digitalKey>715C0799-307B-4BF4-7B1D-4153201FC0A1</px:digitalKey>
<px:token>3723758</px:token>
<px:paymentAmountInCents>1600</px:paymentAmountInCents>
<px:customerName>Hiren Patel</px:customerName>
<px:paymentReference>123456789</px:paymentReference>
</px:ProcessRealtimeTokenPayment>
</soapenv:Body>
</soapenv:Envelope>';
$soapUrl = "https://api.demo.ezidebit.com.au/v3-5/pci?singleWsdl";
$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, $soapUrl );
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);
curl_setopt($soap_do, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8', 'Content-Length: '.strlen($xml) ));
$result = curl_exec($soap_do);
$err = curl_error($soap_do);
curl_close($soap_do);
echo "<pre>";print_r($result);
die;它抛到错误下面:
答:操作不支持--由于ProcessRealtimeTokenPayment的ContractFilter不匹配,无法在接收端处理带有Action‘EndpointDispatcher’的消息。这可能是因为契约不匹配(发送方和接收方之间的操作不匹配),或者是发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的契约和相同的绑定(包括安全要求,例如消息、传输、无).Curl调用成功。
有人能指点我吗?提前谢谢你。
发布于 2017-07-13 09:59:01
下面是SoapClient的一个示例:
<?php
$soap = new SoapClient(
'https://api.demo.ezidebit.com.au/v3-5/pci?singleWsdl',
array(
'trace' => 1,
'exceptions' => 1
)
);
$soap->ProcessRealtimeCreditCardPayment(
array(
'DigitalKey' => '715C0799-307B-4BF4-7B1D-4153201FC0A1',
'Token' => '3723758',
'PaymentAmountInCents' => '1600',
'CustomerName' => 'Hiren Patel',
'PaymentReference' => '123456789'
)
);
echo $soap->__getLastRequest() . "\n";
echo $soap->__getLastResponse() . "\n";您可以将其保存到文件中并运行:
php file.phphttps://stackoverflow.com/questions/45076439
复制相似问题