使用Web服务错误-SOAP PHP
我正在尝试发送数据以使用Web服务。 但它返回错误: 错误:服务器无法读取请求。-->有一个错误 XML文档(2734)。-->指定的类型是抽象的: name='PaymentDataRequest', 名称空间=https://www.pagador.com.br/webservice/pagador",在 有人能帮我吗? 这里是我的XML:使用Web服务错误-SOAP PHP,php,web-services,soap,Php,Web Services,Soap,我正在尝试发送数据以使用Web服务。 但它返回错误: 错误:服务器无法读取请求。-->有一个错误 XML文档(2734)。-->指定的类型是抽象的: name='PaymentDataRequest', 名称空间=https://www.pagador.com.br/webservice/pagador",在 有人能帮我吗? 这里是我的XML: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AuthorizeTransaction xmlns="https://www.pagador.com.br/webservice/pagador">
<request>
<OrderData>
<MerchantId>xxxxxxxxxxxxxxx</MerchantId>
<OrderId>Test0003</OrderId>
<BraspagOrderId xsi:nil="true" />
</OrderData>
<CustomerData>
<CustomerIdentity>99999999999</CustomerIdentity>
<CustomerName>Teste</CustomerName>
<CustomerEmail>compradot@teste.com</CustomerEmail>
<CustomerAddressData xsi:nil="true" />
<DeliveryAddressData xsi:nil="true" />
</CustomerData>
<PaymentDataCollection>
<PaymentDataRequest xsi:type="CreditCardDataRequest">
<PaymentMethod>997</PaymentMethod>
<Amount>100</Amount>
<Currency>BRL</Currency>
<Country>BRA</Country>
<NumberOfPayments>1</NumberOfPayments>
<PaymentPlan>0</PaymentPlan>
<TransactionType>2</TransactionType>
<CardHolder>Comprador Teste</CardHolder>
<CardNumber>0000000000000001</CardNumber>
<CardSecurityCode>111</CardSecurityCode>
<CardExpirationDate>07/2017</CardExpirationDate>
<AdditionalDataCollection xsi:nil="true" />
</PaymentDataRequest>
</PaymentDataCollection>
<RequestId>80a51fb5-f9d7-44b8-bdc2-da2d533f3b8d</RequestId>
<Version>1.0</Version>
</request>
</AuthorizeTransaction>
</soap:Body>
</soap:Envelope>
XXXXXXXXXXXXX
Test0003
99999999999
睾丸
compradot@teste.com
997
100
BRL
胸罩
1.
0
2.
买办睾丸
0000000000000001
111
07/2017
80a51fb5-f9d7-44b8-bdc2-da2d533f3b8d
1
代码:
$parameters=newstdclass();
$parameters->request=newstdclass();
$parameters->request->OrderData->MerchantId='xxxxxxxxx';
$parameters->request->OrderData->OrderId='Test0004';
$parameters->request->CustomerData->CustomerIdentity='99999999';
$parameters->request->CustomerData->CustomerName='Teste';
$parameters->request->CustomerData->CustomerEmail->compradot@teste.com';
$parameters->request->CustomerData->CustomerEmail->compradot@teste.com';
$parameters->request->PaymentDataCollection->PaymentDataRequest='997';
$parameters->request->PaymentDataCollection->PaymentDataRequest->Amount='100';
$parameters->request->PaymentDataCollection->PaymentDataRequest->Currency='BRL';
$parameters->request->PaymentDataCollection->PaymentDataRequest->Country='BRA';
$parameters->request->PaymentDataCollection->PaymentDataRequest->NumberOfPayments='1';
$parameters->request->PaymentDataCollection->PaymentDataRequest->PaymentPlan='0';
$parameters->request->PaymentDataCollection->PaymentDataRequest->TransactionType='2';
$parameters->request->PaymentDataCollection->PaymentDataRequest->持卡人='Compador Teste';
$parameters->request->PaymentDataCollection->PaymentDataRequest->CardNumber='000000000000000 1';
$parameters->request->PaymentDataCollection->PaymentDataRequest->CardSecurityCode='111';
$parameters->request->PaymentDataCollection->PaymentDataRequest->CardExpirationDate='2017年7月';
$parameters->request->RequestId='80a51fb5-f9d7-44b8-bdc2-da2d533f3b8d';
$parameters->request->Version='1.0';
试一试{
$braspag=新的SoapClient('https://homologacao.pagador.com.br/webservice/pagadorTransaction.asmx?WSDL',
排列(
“跟踪”=>1,
“例外情况”=>1,
'style'=>SOAP\u文档,
'use'=>SOAP\u LITERAL,
“soap_版本”=>soap_1_1,
'编码'=>'UTF-8'
)
);
$AuthorizeTransactionResponse=$braspag->AuthorizeTransaction($parameters);
打印($AuthorizationTransactionResponse);
echo$AuthorizeTransactionResponse->AuthorizeTransactionResponse;
}
catch(SoapFault$fault){
回显“Ocorreu um erro:”,$fault->getMessage();
}
回声“
”;
打印(参数);
回声“
”;
回声“;
echo htmlspecialchars($braspag->\uu getLastRequestHeaders())。“\n”;
echo htmlspecialchars($braspag->\uu getLastRequest())。“\n”;
echo“Response:\n”.htmlspecialchars($braspag->\uu getLastResponseHeaders())。“\n”;
echo htmlspecialchars($braspag->\uu getLastResponse())。“\n”;
回声“;
答复:
<s:complexType name="PaymentDataRequest" abstract="**true**">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="PaymentMethod" type="s:short"/>
<s:element minOccurs="1" maxOccurs="1" name="Amount" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="Currency" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="AdditionalDataCollection" type="tns:ArrayOfAdditionalDataRequest"/>
</s:sequence>
xxxxxxxx
真的
Test0003
74025d35-2bae-48cb-b84e-07e5a1df4a50
40dd42b0-7d86-4c90-ac0c-266e454bc2fc
997
100
0118041611250
20130118041611250
6.
手术成功
0
来自WSDL链接
我只能推测:
PaymentDataRequest是抽象的;如果您使用像我这样的SOAP UI在开始实际实现之前对Braspag进行第一次测试,那么您需要扩展PaymentDataRequest的CreditCardDataRequest,
如上所述,SparKotॐ
并添加缺少的参数
0
1.
0
1.
买办
0000000000000001
999
05/2013
我怎么能给他打电话$参数->请求->支付数据收集->支付数据请求->信用卡数据请求->显然PHP当时出现了问题(2009年);不支持此功能。它仍然盛行吗?[PHP错误报告]()这个XML真的是由您的代码生成的吗?我看不到将PaymentDataRequest类型设置为CreditCardDataRequest(但SoapClient可能会根据使用的字段神奇地找到合适的类型…?)。我不知道,但我会检查!谢谢
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<AuthorizeTransactionResponse xmlns="https://www.pagador.com.br/webservice/pagador">
<AuthorizeTransactionResult>
<CorrelationId>xxxxxxxx</CorrelationId>
<Success>true</Success>
<ErrorReportDataCollection/>
<OrderData>
<OrderId>Test0003</OrderId>
<BraspagOrderId>74025d35-2bae-48cb-b84e-07e5a1df4a50</BraspagOrderId>
</OrderData>
<PaymentDataCollection>
<PaymentDataResponse xsi:type="CreditCardDataResponse">
<BraspagTransactionId>40dd42b0-7d86-4c90-ac0c-266e454bc2fc</BraspagTransactionId>
<PaymentMethod>997</PaymentMethod>
<Amount>100</Amount>
<AcquirerTransactionId>0118041611250</AcquirerTransactionId>
<AuthorizationCode>20130118041611250</AuthorizationCode>
<ReturnCode>6</ReturnCode>
<ReturnMessage>Operation Successful</ReturnMessage>
<Status>0</Status>
<CreditCardToken xsi:nil="true"/>
</PaymentDataResponse>
</PaymentDataCollection>
</AuthorizeTransactionResult>
</AuthorizeTransactionResponse>
</soap:Body>
</soap:Envelope>
<s:complexType name="PaymentDataRequest" abstract="**true**">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="PaymentMethod" type="s:short"/>
<s:element minOccurs="1" maxOccurs="1" name="Amount" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="Currency" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="AdditionalDataCollection" type="tns:ArrayOfAdditionalDataRequest"/>
</s:sequence>
<pag:ServiceTaxAmount>0</pag:ServiceTaxAmount>
<pag:NumberOfPayments>1</pag:NumberOfPayments>
<pag:PaymentPlan>0</pag:PaymentPlan>
<pag:TransactionType>1</pag:TransactionType>
<pag:CardHolder>Comprador de Teste</pag:CardHolder>
<pag:CardNumber>0000000000000001</pag:CardNumber>
<pag:CardSecurityCode>999</pag:CardSecurityCode>
<pag:CardExpirationDate>05/2013</pag:CardExpirationDate>
<pag:CreditCardToken />
<pag:SaveCreditCard />