Bug #80658 [Csd->Nab]: SoapClient ignores element children when the XSD has a "group" include

From: Date: Fri, 22 Jan 2021 15:22:29 +0000
Subject: Bug #80658 [Csd->Nab]: SoapClient ignores element children when the XSD has a "group" include
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-231713@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80658&edit=1 ID: 80658 Updated by: requinix@php.net Reported by: r dot b dot paulson at protonmail dot com Summary: SoapClient ignores element children when the XSD has a "group" include -Status: Closed +Status: Not a bug Type: Bug Package: SOAP related Operating System: Linux PHP Version: 7.4.14 Block user comment: N Private report: N Previous Comments: ------------------------------------------------------------------------ [2021-01-22 11:11:34] r dot b dot paulson at protonmail dot com Actually I see that the <group> is part of a <choice>, and so only one of them is required... But when I only supply the mandateNumber, SoapClient dies with: PHP Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'iban' property When I manually send a request that has *only* a mandateNumber element, the service accepts it. Closing because the problem changed. ------------------------------------------------------------------------ [2021-01-22 09:49:02] r dot b dot paulson at protonmail dot com Description: ------------ The WSDL I'm using has a <complexType name="directDebitPaymentInput"> element with a <group ref="ddp:directDebitPaymentInputGroup"> include. SoapClient understands that this means the resulting directDebitPaymentInput field should include the fields from the group, as well as the direct child element 'mandateNumber'. You can see this in the sample code. However when I make the actual request, the 'mandateNumber' field is not included in the request XML. Test script: --------------- https://gist.github.com/tinmrn/7978a170acb65a9f597cbc69e3ae3153 Expected result: ---------------- I expect the directDebitPaymentInput element to contain the mandateNumber element, as supplied in the input. Actual result: -------------- 7.4.14 struct directDebitPaymentInput { string35 holderName; bic bic; iban iban; string35 mandateNumber; } <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.docdatapayments.com/services/paymentservice/1_3/"><SOAP-ENV:Body><ns1:startRequest><ns1:merchant name="bogus" password="bogus"/><ns1:paymentOrderKey>bogus</ns1:paymentOrderKey><ns1:payment><ns1:paymentMethod>bogus</ns1:paymentMethod><ns1:directDebitPaymentInput><ns1:bic>test-bic</ns1:bic><ns1:iban>test-iban</ns1:iban></ns1:directDebitPaymentInput></ns1:payment></ns1:startRequest></SOAP-ENV:Body></SOAP-ENV:Envelope> ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=80658&edit=1

« previous php.bugs (#231713) next »