首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有XML请求的调用

带有XML请求的调用
EN

Stack Overflow用户
提问于 2017-07-13 09:19:45
回答 1查看 1K关注 0票数 0

我以前没有使用过SOAP。我想使用XML数据请求执行SOAP。我试过了,但没有成功。https://www.getpayments.com/docs/#processrealtimetokenpayment,这是我想要调用的支付网关网址。

我使用了以下代码:

代码语言:javascript
复制
$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调用成功。

有人能指点我吗?提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-13 09:59:01

下面是SoapClient的一个示例:

代码语言:javascript
复制
<?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";

您可以将其保存到文件中并运行:

代码语言:javascript
复制
php file.php
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45076439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档