VS Generated WSDL Namespace Issues - c#

Good Afternoon,
We have been trying to consume a Carrier API, but have hit some issue with the WSDL Generation. The Example XML message the company has provided has ns1-3 and appears that it is important for the address fields. the XML generated from their WSDL seems to generate the same fields but has no name spaces like the original and fails with "Address details are invalid", Is there some setting we are missing so that it generates the correct XML?
This is their Example XML
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns3:CreateLabel xmlns:ns3="http://courier.ck.dx.metafour.com/" xmlns:ns2="http://www.thedx.co.uk/eai/canonical/types/v2.0">
<order>
<ns2:customerID>14337622</ns2:customerID>
<ns2:dates>
<date format="yyyy-MM-dd HH:mm:ss" type="requestedCollectionDate">2018-12-12 17:59:21</date>
</ns2:dates>
<sourceSystemReference xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0">AMS207554</sourceSystemReference>
<customerReference xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0">286956</customerReference>
<orderAttributes xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0" xsi:nil="true" />
<ns2:orderLines>
<ns2:consignment>
<pieces>
<dimensions>
<value>1.0</value>
<type>cdlWeight</type>
<UOM>KG</UOM>
</dimensions>
<barcode xsi:nil="true" />
<trackingNumber xsi:nil="true" />
</pieces>
<qty>1</qty>
<legacyService>
<name>serviceLevel</name>
<partyId>0</partyId>
<partyType>HITS</partyType>
</legacyService>
<legacyService>
<name>serviceType</name>
<partyId>2</partyId>
<partyType>HITS</partyType>
</legacyService>
<deliverTo>
<ns2:address primary="true">
<organisationName>Argos</organisationName>
<addressLine1>Argos</addressLine1>
<addressLine2>Argos Ltd</addressLine2>
<addressLine3>11 Canning Street</addressLine3>
<city>BURNLEY</city>
<postalCode>BB12 0AD</postalCode>
<country>
<countryCode>GB</countryCode>
<description>GB</description>
</country>
</ns2:address>
<contact />
</deliverTo>
</ns2:consignment>
</ns2:orderLines>
<labelType>ZPL</labelType>
</order>
<serviceHeader>
<password>test</password>
<userId>test</userId>
</serviceHeader>
</ns3:CreateLabel>
</s:Body>
</s:Envelope>
This is our Generated XML
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CreateLabel xmlns="http://courier.ck.dx.metafour.com/">
<order xmlns="">
<customerID xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0">14337622</customerID>
<dates xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0">
<date xmlns="" format="yyyy-MM-dd HH:mm:ss" type="requestedCollectionDate">2019-01-25 10:17:33</date>
</dates>
<sourceSystemReference xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0">AMS207554</sourceSystemReference>
<customerReference xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0">286956</customerReference>
<orderAttributes xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0" xsi:nil="true" />
<orderLines xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0">
<consignment>
<pieces xmlns="">
<dimensions>
<value>1.0</value>
<type>cdlWeight</type>
<UOM>KG</UOM>
</dimensions>
<barcode xsi:nil="true" />
<trackingNumber xsi:nil="true" />
</pieces>
<qty>1</qty>
<legacyService xmlns="">
<name>serviceLevel</name>
<partyId>0</partyId>
<partyType>HITS</partyType>
</legacyService>
<legacyService xmlns="">
<name>serviceType</name>
<partyId>2</partyId>
<partyType>HITS</partyType>
</legacyService>
<deliverTo xmlns="">
<address xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0">
<organisationName xmlns="">Argos</organisationName>
<addressLine1 xmlns="">Argos</addressLine1>
<addressLine2 xmlns="">Argos Ltd</addressLine2>
<addressLine3 xmlns="">11 Canning Street</addressLine3>
<city xmlns="">BURNLEY</city>
<postalCode xmlns="">BB12 0AD</postalCode>
<country xmlns="">
<countryCode>GB</countryCode>
<description>GB</description>
</country>
</address>
<contact xmlns="http://www.thedx.co.uk/eai/canonical/types/v2.0" />
</deliverTo>
</consignment>
</orderLines>
<labelType>ZPL</labelType>
</order>
<serviceHeader xmlns="">
<password>test</password>
<userId>test</userId>
</serviceHeader>
</CreateLabel>
</s:Body>
</s:Envelope>
Any help would be greatly appreciated!

This is resolved,
I could not figure out a way to change or add additional namespace to the generated references.cs file, and ended up sending the SOAP to their server manually with an XML string serialized using a httpWebRequest and XmlSerializer

Related

Connected service does not parse SOAP response correctly

I am working with this SOAP web service in a .NET Framework project. I inspect the XML content of requests and responses, and everything looks good. But the SOAP client (the one Visual Studio creates via Connected Services thing) does not map the response correctly to the entity class.
Here is the request XML.
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">OrderList</Action>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OrderListRequest xmlns="http://www.n11.com/ws/schemas">
<auth xmlns="">
<appKey>**redacted**</appKey>
<appSecret>**redacted**</appSecret>
</auth>
<searchData xmlns="">
<productId xsi:nil="true" />
<status xsi:nil="true" />
<orderNumber>**redacted**</orderNumber>
<productSellerCode xsi:nil="true" />
<sameDayDelivery xsi:nil="true" />
<sortForUpdateDate>false</sortForUpdateDate>
</searchData>
<pagingData xsi:nil="true" xmlns="" />
</OrderListRequest>
</s:Body>
</s:Envelope>
And here is the response.
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header />
<env:Body>
<ns3:OrderListResponse xmlns="" xmlns:ns3="http://www.n11.com/ws/schemas">
<result>
<status>success</status>
</result>
<pagingData>
<currentPage>0</currentPage>
<pageSize>100</pageSize>
<totalCount>1</totalCount>
<pageCount>1</pageCount>
</pagingData>
<orderList>
<order>
<citizenshipId>**redacted**</citizenshipId>
<createDate>02/10/2020 14:46</createDate>
<id>**redacted**</id>
<orderNumber>**redacted**</orderNumber>
<paymentType>1</paymentType>
<status>2</status>
</order>
</orderList>
</ns3:OrderListResponse>
</env:Body>
</env:Envelope>
As it is visible in the response XML, I get all the information I want perfectly. But as you can see in the screenshot below, all I'm getting in the response object is the citizenshipId, and everything else is either null or the default value for its type.
What could be the problem here? I'm a newbie in .NET so I don't even know how to Google this. I tried a few searches but nothing yielded any related results.
The WSDL is publicly available at https://api.n11.com/ws/OrderService.wsdl.

Amazon MWS Update tracking number

I am using amazon api for update product's quantity using "POST_FULFILLMENT_ORDER_REQUEST_DATA"
feedtype
in https://mws.amazonservices.com/scratchpad/index.html like ,
<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier>ATVPDKIKX0DER</MerchantIdentifier>
</Header>
<MessageType>OrderFulfillment</MessageType>
<Message>
<MessageID>1</MessageID>
<OrderFulfillment>
<AmazonOrderID>XXXXX</AmazonOrderID>
<FulfillmentDate>2020-09-12T11:00:00</FulfillmentDate>
<FulfillmentData>
<CarrierName>USPS</CarrierName>
<ShippingMethod>Standard</ShippingMethod>
<ShipperTrackingNumber>1234562312312</ShipperTrackingNumber>
</FulfillmentData>
</OrderFulfillment>
</Message>
</AmazonEnvelope>
I have tried add with suggest Oneida:
<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier>ATVPDKIKX0DER</MerchantIdentifier>
</Header>
<MessageType>OrderFulfillment</MessageType>
<Message>
<MessageID>1</MessageID>
<OrderFulfillment>
<AmazonOrderID>XXX</AmazonOrderID>
<FulfillmentDate>2020-09-03T21:38:00+00:00</FulfillmentDate>
<FulfillmentData>
<CarrierCode>UPS</CarrierCode>
<ShippingMethod>Second Day</ShippingMethod>
<ShipperTrackingNumber>1234567890</ShipperTrackingNumber>
</FulfillmentData>
<Item>
<AmazonOrderItemCode>XXX</AmazonOrderItemCode>
<Quantity>1</Quantity>
</Item>
</OrderFulfillment>
</Message>
</AmazonEnvelope>
But I got same error Invalid creation request.
<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.02</DocumentVersion>
<MerchantIdentifier>XXXXXXXXX</MerchantIdentifier>
</Header>
<MessageType>ProcessingReport</MessageType>
<Message>
<MessageID>1</MessageID>
<ProcessingReport>
<DocumentTransactionID>XXXX</DocumentTransactionID>
<StatusCode>Complete</StatusCode>
<ProcessingSummary>
<MessagesProcessed>1</MessagesProcessed>
<MessagesSuccessful>0</MessagesSuccessful>
<MessagesWithError>1</MessagesWithError>
<MessagesWithWarning>0</MessagesWithWarning>
</ProcessingSummary>
<Result>
<MessageID>0</MessageID>
<ResultCode>Error</ResultCode>
<ResultMessageCode>920001</ResultMessageCode>
<ResultDescription>Invalid creation request</ResultDescription>
</Result>
</ProcessingReport>
</Message>
</AmazonEnvelope>
Can anyone help me?
Thanks in advance.
You are leaving out the Item element ...
<MessageID>#</MessageID>
<OperationType>Update</OperationType>
<OrderFulfillment>
<AmazonOrderID>###-#######-#######</AmazonOrderID>
<FulfillmentDate>2020-09-09T00:00:00.00Z</FulfillmentDate>
<FulfillmentData>
<CarrierName>##Carrier##</CarrierName>
<ShippingMethod>##Method##</ShippingMethod>
<ShipperTrackingNumber>##TrackNum##</ShipperTrackingNumber>
</FulfillmentData>
<Item>
<AmazonOrderItemCode>##ItemCode##</AmazonOrderItemCode>
<Quantity>1</Quantity>
</Item>
</OrderFulfillment>
</Message>

EWS - determine if an attendee is a room or resource instead of a person

Given an Attendee in EWS, how can I determine if that attendee is a room or a resource, instead of a person?
The first thing would be just check if the Attendee is in the Resources Strongly typed property https://msdn.microsoft.com/en-us/library/exchangewebservices.calendaritemtype.resources(v=exchg.80).aspx if your getting a Calendar Item using EWS this is where Rooms and Resources will be returned vs Required and optional attendees.
If the Attendee is in the Global Address list and you have 2013 or greater then you can also use FindPeople and check the PersonaType returned eg
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">
<soap:Header>
<t:RequestServerVersion Version="Exchange2013" />
</soap:Header>
<soap:Body >
<m:FindPeople>
<m:PersonaShape>
<t:BaseShape>Default</t:BaseShape>
</m:PersonaShape>
<m:IndexedPageItemView BasePoint="Beginning" MaxEntriesReturned="100" Offset="0"/>
<m:ParentFolderId>
<t:DistinguishedFolderId Id="directory"/>
</m:ParentFolderId>
<m:QueryString>Adams#ddddd.onmicrosoft.com</m:QueryString>
</m:FindPeople>
</soap:Body>
</soap:Envelope>
should return something like the following for a room
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ServerVersionInfo MajorVersion="15" MinorVersion="1" MajorBuildNumber="629" MinorBuildNumber="8" Version="V2016_07_13" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
</s:Header>
<s:Body>
<FindPeopleResponse ResponseClass="Success" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ResponseCode>NoError</ResponseCode>
<People>
<Persona xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
<PersonaId Id="AAUQAGDlxBsmUDpClBbAI1WX04o=" />
<PersonaType>Room</PersonaType>
<CreationTime>0001-01-02T00:00:00Z</CreationTime>
<DisplayName>Conf Room Adams</DisplayName>
<DisplayNameFirstLast>Conf Room Adams</DisplayNameFirstLast>
<DisplayNameLastFirst>Conf Room Adams</DisplayNameLastFirst>
<FileAs />
<EmailAddress>
<Name>Conf Room Adams</Name>
<EmailAddress>Adams#dddddd.onmicrosoft.com</EmailAddress>
<RoutingType>SMTP</RoutingType>
<MailboxType>Mailbox</MailboxType>
</EmailAddress>
<EmailAddresses>
<Address>
<Name>Conf Room Adams</Name>
<EmailAddress>Adams#dddddd.onmicrosoft.com</EmailAddress>
<RoutingType>SMTP</RoutingType>
<MailboxType>Mailbox</MailboxType>
</Address>
</EmailAddresses>
<RelevanceScore>2147483647</RelevanceScore>
</Persona>
</People>
<TotalNumberOfPeopleInView>0</TotalNumberOfPeopleInView>
<FirstMatchingRowIndex>0</FirstMatchingRowIndex>
<FirstLoadedRowIndex>0</FirstLoadedRowIndex>
</FindPeopleResponse>
</s:Body>
</s:Envelope>

Convert XML Dom Structure while deserialization

I have to transform the XML DOM structure into another XML DOM structure, How can I perform it using custom serialization implemented via IXmlSerialization. The source and target XML structure are mentioned as below
Source XML
<?xml version="1.0"?>
<ConfigFileRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DeviceConnectionParams>
<DeviceConnectionParam>
<UserId>administrator</UserId>
<Password>B670AAB84F449BF3953C5ABE947DEF0C</Password>
<IsManual>True</IsManual>
</DeviceConnectionParam>
</DeviceConnectionParams>
<AlarmMappings>
<Enabled>true</Enabled>
<AlarmA>
<Events>
<EventId>
<PanelId>1</PanelId>
<PanelName>TestAccess</PanelName>
<DeviceId>65</DeviceId>
<DeviceName>TestPanel</DeviceName>
</EventId>
<EventId>
<PanelId>1</PanelId>
<PanelName>TestAccess</PanelName>
<DeviceId>65</DeviceId>
<DeviceName>TestPanel</DeviceName>
</EventId>
</Events>
</AlarmA>
<AlarmB>
<AlarmId>0a103f2b3ce7498c4fcaafb965c742cca66a221027054490eab5459689303bbea1f81898380c</AlarmId>
<NvrUuid>0a1027054490eab5459689303bbea1f818983801</NvrUuid>
</AlarmB>
</AlarmMappings>
</ConfigFileRoot>
Target XML
<?xml version="1.0"?>
<ConfigFileRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DeviceConnectionParams>
<DeviceConnectionParam>
<UserId>administrator</UserId>
<Password>B670AAB84F449BF3953C5ABE947DEF0C</Password>
<IsManual>True</IsManual>
</DeviceConnectionParam>
</DeviceConnectionParams>
<AlarmMappings>
<Enabled>true</Enabled>
<AlarmA>
<Events>
<EventId>
<PanelId>1</PanelId>
<PanelName>TestAccess</PanelName>
<DeviceId>65</DeviceId>
<DeviceName>TestPanel</DeviceName>
</EventId>
</Events>
</AlarmA>
<AlarmB> <AlarmId>0a103f2b3ce7498c4fcaafb965c742cca66a221027054490eab5459689303bbea1f81898380c</AlarmId>
<NvrUuid>0a1027054490eab5459689303bbea1f818983801</NvrUuid>
</AlarmB>
</AlarmMappings>
<AlarmMappings>
<Enabled>true</Enabled>
<AlarmA>
<Events>
<EventId>
<PanelId>1</PanelId>
<PanelName>TestAccess</PanelName>
<DeviceId>65</DeviceId>
<DeviceName>TestPanel</DeviceName>
</EventId>
</Events>
</AlarmA>
<AlarmB>
<AlarmId>0a103f2b3ce7498c4fcaafb965c742cca66a221027054490eab5459689303bbea1f81898380c</AlarmId>
<NvrUuid>0a1027054490eab5459689303bbea1f818983801</NvrUuid>
</AlarmB>
</AlarmMappings>
</ConfigFileRoot>

How to create SOAP XML request message for paypal CreateInvoice api using c#

I have created a sandbox test accounts for PayPal.
I want to consume the PayPal api CreateInvoice,SendInvoice and CreateAndSendInvoice using SOAP xml format in C#. The documentation from x.com, doesn't show any completed request message at least in basic soap xml format, instead, it shows only the header part and definitions for soap xml tags.
Some examples are in JSON format but its not my preferred format,its light-weight but human readable. SDK's are using NVP format, although they have SOAP option but the codes are not able to compose the soap xml format for the payload.
I need the completed soap xml request message with at least the required fields to createinvoice.
I'm still searching stackoverflow so far.
The API reference provides a graphical representation of the SOAP request. For example, you can take a look at CreateAndSendInvoice and see all of the tags that could be included in your XML/SOAP request as well as how everything should be nested.
If you're going to be building the XML yourself as oppose to using a WSDL there's really no need to format it for SOAP. Here's a sample of an XML Request for CreateInvoice that I just ran successfully...
<?xml version="1.0" encoding="utf-8"?>
<CreateInvoiceRequest xmlns="http://svcs.paypal.com/types/ap">
<requestEnvelope xmlns="">
<detailLevel>ReturnAll</detailLevel>
<errorLanguage>en_US</errorLanguage>
</requestEnvelope>
<invoice xmlns="">
<merchantEmail xmlns="">sandbo_1215254764_biz#angelleye.com</merchantEmail>
<payerEmail xmlns="">sandbo_1204199080_biz#angelleye.com</payerEmail>
<number xmlns="">12Z3-ABCDE</number>
<merchantInfo xmlns="">
<firstName xmlns="">Tester</firstName>
<lastName xmlns="">Testerson</lastName>
<businessName xmlns="">Testers, LLC</businessName>
<phone xmlns="">555-555-5555</phone>
<fax xmlns="">555-555-5556</fax>
<website xmlns="">http://www.domain.com</website>
<customValue xmlns="">Some custom info.</customValue>
<address xmlns="">
<line1 xmlns="">123 Main St.</line1>
<city xmlns="">Grandview</city>
<state xmlns="">MO</state>
<postalCode xmlns="">64030</postalCode>
<countryCode xmlns="">US</countryCode>
</address>
</merchantInfo>
<itemList xmlns=""><item xmlns="">
<name xmlns="">Test Widget 1</name>
<description xmlns="">This is a test widget #1</description>
<date xmlns="">2012-02-18</date>
<quantity xmlns="">1</quantity>
<unitPrice xmlns="">10.00</unitPrice>
</item><item xmlns="">
<name xmlns="">Test Widget 2</name>
<description xmlns="">This is a test widget #2</description>
<date xmlns="">2012-02-18</date>
<quantity xmlns="">2</quantity>
<unitPrice xmlns="">20.00</unitPrice>
</item></itemList>
<currencyCode xmlns="">USD</currencyCode>
<paymentTerms xmlns="">DueOnReceipt</paymentTerms>
<note xmlns="">This is a test invoice.</note>
<merchantMemo xmlns="">This is a test invoice.</merchantMemo>
<billingInfo xmlns="">
<firstName xmlns="">Tester</firstName>
<lastName xmlns="">Testerson</lastName>
<businessName xmlns="">Testers, LLC</businessName>
<phone xmlns="">555-555-5555</phone>
<fax xmlns="">555-555-5556</fax>
<website xmlns="">http://www.domain.com</website>
<customValue xmlns="">Some custom info.</customValue>
<address xmlns="">
<line1 xmlns="">123 Main St.</line1>
<city xmlns="">Grandview</city>
<state xmlns="">MO</state>
<postalCode xmlns="">64030</postalCode>
<countryCode xmlns="">US</countryCode>
</address>
</billingInfo>
<shippingInfo xmlns="">
<firstName xmlns="">Tester</firstName>
<lastName xmlns="">Testerson</lastName>
<businessName xmlns="">Testers, LLC</businessName>
<phone xmlns="">555-555-5555</phone>
<fax xmlns="">555-555-5556</fax>
<website xmlns="">http://www.domain.com</website>
<customValue xmlns="">Some custom info.</customValue>
<address xmlns="">
<line1 xmlns="">123 Main St.</line1>
<city xmlns="">Grandview</city>
<state xmlns="">MO</state>
<postalCode xmlns="">64030</postalCode>
<countryCode xmlns="">US</countryCode>
</address>
</shippingInfo>
<shippingAmount xmlns="">10.00</shippingAmount>
<logoUrl xmlns="">https://www.usbswiper.com/images/angelley-clients/cpp-header-image.jpg</logoUrl>
<referrerCode xmlns="">AngellEYE_PHPClass</referrerCode>
</invoice>
</CreateInvoiceRequest>

Categories