Я пытаюсь отправить запрос XML SOAP на мою Microsoft Dynamics crm. запись создана, но по какой-то причине мои валютные поля установлены на 0,00 вместо значения, которое я предоставляю. Я использовал SOAPlogger с sdk, чтобы убедиться, что запросы идентичны, а поля валюты установлены правильно, когда я выполняю с C #, но когда я пытаюсь выполнить запрос с PHP, поля не устанавливаются правильно.
Ниже представлен запрос на создание.
<Create xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<entity xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">
<a:Attributes xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
<a:KeyValuePairOfstringanyType>
<b:key>new_invoiceddate</b:key>
<b:value xmlns:c="http://www.w3.org/2001/XMLSchema" i:type="c:dateTime">2014-07-31T00:00:00Z</b:value>
</a:KeyValuePairOfstringanyType>
<a:KeyValuePairOfstringanyType>
<b:key>new_commissiondate</b:key>
<b:value xmlns:c="http://www.w3.org/2001/XMLSchema" i:type="c:dateTime">2014-10-01T00:00:00Z</b:value>
</a:KeyValuePairOfstringanyType>
<a:KeyValuePairOfstringanyType>
<b:key>new_commissionamount</b:key>
<b:value i:type="a:Money">
<a:value>28.08</a:value>
</b:value>
</a:KeyValuePairOfstringanyType>
<a:KeyValuePairOfstringanyType>
<b:key>new_carrier</b:key>
<b:value i:type="a:EntityReference">
<a:Id>9713bd59-5bca-e211-bd6d-001b21a73d70</a:Id>
<a:LogicalName>new_carrier</a:LogicalName>
<a:Name i:nil="true"/>
</b:value>
</a:KeyValuePairOfstringanyType>
<a:KeyValuePairOfstringanyType>
<b:key>new_usagebilled</b:key>
<b:value i:type="a:Money">
<a:value>140.40</a:value>
</b:value>
</a:KeyValuePairOfstringanyType>
<a:KeyValuePairOfstringanyType>
<b:key>new_name</b:key>
<b:value xmlns:c="http://www.w3.org/2001/XMLSchema" i:type="c:string">Action Water Sports - 10/01/2014</b:value>
</a:KeyValuePairOfstringanyType>
<a:KeyValuePairOfstringanyType>
<b:key>new_invoicenumber</b:key>
<b:value xmlns:c="http://www.w3.org/2001/XMLSchema" i:type="c:string">142125103</b:value>
</a:KeyValuePairOfstringanyType>
<a:KeyValuePairOfstringanyType>
<b:key>new_commissiontype</b:key>
<b:value xmlns:c="http://schemas.microsoft.com/xrm/2011/Contracts" i:type="a:OptionSetValue">
<a:Value>100000000</a:Value>
</b:value>
</a:KeyValuePairOfstringanyType>
</a:Attributes>
<a:EntityState i:nil="true"/>
<a:FormattedValues xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>
<a:Id>00000000-0000-0000-0000-000000000000</a:Id>
<a:LogicalName>new_carriercommission</a:LogicalName>
<a:RelatedEntities xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>
</entity>
</Create>
По какой-то причине имена некоторых узлов строчные, в то время как другие пишутся с большой буквы (одна из странных несоответствий Microsoft), поэтому кажется, что узлу «value» должно быть «Value», если он вложен в другой узел с именем «value», например:
<a:KeyValuePairOfstringanyType>
<b:key>new_commissionamount</b:key>
<b:value i:type="a:Money">
<a:value>28.08</a:value>
</b:value>
</a:KeyValuePairOfstringanyType>
На самом деле должно быть:
<a:KeyValuePairOfstringanyType>
<b:key>new_commissionamount</b:key>
<b:value i:type="a:Money">
<a:Value>28.08</a:Value>
</b:value>
</a:KeyValuePairOfstringanyType>
Обратите внимание, что в этом примере «b: value» остается строчными.
Других решений пока нет …