از چه سرویسی میتونم برای آپدیت کردن اطلاعات یک مشتری(مخاطب حقیقی) استفاده کنم؟
به صورتی که بر اساس شماره تلفن مشتری، اطلاعاتش آپدیت بشه و بقیه اطلاعات وارد سیستم بشه.
تو فایل person مربوطه به مستندات API همچین سرویسی رو ندیدم.
نمونه کد wcfstorm جهت استفاده از سرویس identity رو هم براتون میزارم
<SaveIdentity>
<MethodParameters>
<username>admin</username>
<password>admin</password>
<identity actualtype="OrganizationInfo" basetype="IdentityInfo">
<BusinessType isNull="true" />
<EconomicCode isNull="true" />
<ManagerId isNull="true" />
<OwnershipType isNull="true" />
<Personnel isNull="true" />
<RegisterDate isNull="true" />
<RegisterNumber isNull="true" />
<ShareType isNull="true" />
<TradeType isNull="true" />
<Trademark isNull="true" />
<AddressContacts isNull="true" />
<Balance isNull="true" />
<Categories attr0="CategoryInfoArray" isNull="false">
<CategoryInfoArray0>
<Id isNull="true" />
<IdentityId isNull="true" />
<IsDeleted>False</IsDeleted>
<Key>zone0</Key>
<Name isNull="true" />
<Type isNull="true" />
</CategoryInfoArray0>
</Categories>
<Classification isNull="true" />
<ColorName isNull="true" />
<CustomerDate isNull="true" />
<CustomerNumber isNull="true" />
<DontEmail isNull="true" />
<DontFax isNull="true" />
<DontPhoneCall isNull="true" />
<DontSms isNull="true" />
<DontSocialSms isNull="true" />
<Emails isNull="true" />
<IdentityType>حقوقی</IdentityType>
<NickName>تست</NickName>
<OtherUsername isNull="true" />
<PhoneContacts isNull="true" />
<SaleUsername isNull="true" />
<SourceType isNull="true" />
<SupportUsername isNull="true" />
<Website isNull="true" />
<CreatDate>1/1/0001 12:00:00 AM</CreatDate>
<CrmId isNull="true" />
<CrmObjectTypeCode>organization</CrmObjectTypeCode>
<CrmObjectTypeId isNull="true" />
<CrmObjectTypeIndex>0</CrmObjectTypeIndex>
<CrmObjectTypeName isNull="true" />
<ExtendedProperties isNull="true" />
<ModifyDate>1/1/0001 12:00:00 AM</ModifyDate>
<ParentCrmObjectId isNull="true" />
<ProcessStateIndex isNull="true" />
<RefId isNull="true" />
<Stage isNull="true" />
<StageId isNull="true" />
<Tags isNull="true" />
</identity>
</MethodParameters>
</SaveIdentity>
سلام
شما میتوانید هم از سرویس person استفاده کنید
و هم از سرویس identity و در آن اگر identitytype را با person مقدار دهی کنید , info شما هم personinfo باشد.
در دو سرویس نام برده شده چنانچه مقدار crmid را مقدار دهی کنید میتوتنید اون هویت حقیقی را ویرایش کنید
مورد دوم رو دقیق متوجه نشدم
ولی اگر منظورتون اینه که بر اساس شماره تلفن یک مشتری را پیدا کنید سپس اقدام به ویرایش آن کنید باید بگم که
میتونید در سرویس IIdentity.svc توسط متد findidentityByPhonenumber اقدام به پیدا کردن یک هویت کنید سپس id هویت پیدا شده را در متد saveidentity استفاده کنید
از سرویس identity استفاده کردم خطای زیر رو میده :
Object reference not set to an instance of an object
پارامترهای ارسالی :
$params = [
'username' => $username,
'password' => $password,
'identity' => [
'IdentityId' => $crmId,
'CrmObjectTypeCode' => 'customerCode',
'IdentityType' => 'حقیقی',
'FirstName' => 'آپدیت',
'LastName' => 'آپدیت',
'CustomerDate' => the_date('Y m d'),
'ContactAddress' => [
'State' => 'تهران',
'City' => 'تهران',
'Address' => 'ایران- تهران - تهران',
]
]
];
تو وب سرویس و مستنداتش همچین پارامتری وجود نداره.فکر کنم منظورتون IdentityCategory باشه.
کد رو به صورت زیر اصلاح کردم و طبق فایل مستندات IdentityCategory، API رو با استفاده از json مقدار دهی کردم اما بازم همون خطا رو میده
$params = [
'username' => $username,
'password' => $password,
'identity' => [
'IdentityId' => $crmId,
'CrmObjectTypeCode' => 'customerCode',
'IdentityCategory' => $myJSON,
'IdentityType' => 'حقیقی',
'FirstName' => 'آپدیت',
'LastName' => 'آپدیت',
'CustomerDate' => the_date('Y m d'),
'ContactAddress' => [
'State' => 'تهران',
'City' => 'تهران',
'Address' => 'ایران- تهران - تهران',
],
]
];
به نمونه کد wcf storm در پست زیر توجه کنید یک نمونه کامل و اجرا شده است
در آن یک بخش وجود دارد به نام تگ category که در آن key مربوط به دسته بندی مورد نظر را مقدار دهی کنید
False
zone0
من تمام فیلدهایی که الزامی بوده رو مقداردهی کردم. مشکل اینه اروری که میده مربوط به پارامترهای ارسالی هست که یا اسم هاشون فرق کرده و توی فایل راهنما تغییر نکرده، یا فیلددیگه ای هست که الزامیه و مقداردهی نشده.
(چون همین مشکل تغییر اسم فیلدها در سرویس Person هم وجود داشت که مشخص شد برخی فیلدها اسمشون تغییر کرده
)
$params = array(
'username' => $username,
'password' => $password,
'identity' => array(
'CrmObjectTypeCode' => 'customerCode',
'IdentityType' => 'Person',
'Gender' => 'مرد',
'LastName' => 'آپدیت',
'NickName' => 'آپدیت',
'IdentityId' => $crmId,
'CustomerDate' => the_date('Y m d'),
'Categories' => array(
array(
'Key' => 'customerConsumer'
)
),
'PhoneContacts' => array(
array(
'PhonePrefix' => 'Mobile',
'PhoneNumber' => '09100000000',
'PhoneType' => 'موبایل',
'IsDefault' => true
),
),
'AddressContacts' => array(
array(
'AddressType' => 'سایر',
'Address' => 'تهران-تهران-ولیعصر'
),
),
)
);
دوست عزیز همانطور که عرض کردم خدمتتون ما بجز .net زبان دیگری را پشتیبانی نمیدیم
پس باید با یه زبان مشترک باهم صحبت کنیم اونم میشه ابزار هایی مثل wcfTestClient و wcfTestStorm
که نمونه استفاده شده در wcfteststorm هم براتون گذاشتم در همین پست
شما دقیقا مثل سمپل گذاشته شده در wcfteststorm عمل کنید و اگر اونجا خطاایی دریافت کردید برای من xml آن را خروجی بگیرید و بفرستید تا بتونم بهتر راهنماییتون کنم
سرویس identity سرویسیه که الان توسط تعداد زیادی از مشتری ها و حتی خودمون داره استفاده میشه و مشکلی بر عدم کارکرد اون نداریم
پس لطفا طبق راهنمایی گفته شده عمل کنید تا ایشالا مشکلتون هرچه سریعتر بتونیم حل کنیم
با تشکر
این کد رو اجرا کردم تو نرم افزاری که گفتین و بدون خطا اجرا شد.اما من میخوام اطلاعات یک مشتری آپدیت بشه نه اینکه مشتری جدید اضافه کنم.
test
test
False
customerConsumer
حقیقی
تست
تست
1/1/0001 12:00:00 AM
customerCode
0
1/1/0001 12:00:00 AM
<SaveIdentity>
<MethodParameters>
<username>test</username>
<password>test</password>
<identity actualtype="PersonInfo" basetype="IdentityInfo">
<BusinessType isNull="true" />
<EconomicCode isNull="true" />
<ManagerId isNull="true" />
<OwnershipType isNull="true" />
<Personnel isNull="true" />
<RegisterDate isNull="true" />
<RegisterNumber isNull="true" />
<ShareType isNull="true" />
<TradeType isNull="true" />
<Trademark isNull="true" />
<AddressContacts isNull="true" />
<Balance isNull="true" />
<Categories attr0="CategoryInfoArray" isNull="false">
<CategoryInfoArray0>
<Id isNull="true" />
<IdentityId isNull="true" />
<IsDeleted>False</IsDeleted>
<Key>customerConsumer</Key>
<Name isNull="true" />
<Type isNull="true" />
</CategoryInfoArray0>
</Categories>
<Classification isNull="true" />
<ColorName isNull="true" />
<CustomerDate isNull="true" />
<CustomerNumber isNull="true" />
<DontEmail isNull="true" />
<DontFax isNull="true" />
<DontPhoneCall isNull="true" />
<DontSms isNull="true" />
<DontSocialSms isNull="true" />
<Emails isNull="true" />
<IdentityType>حقیقی</IdentityType>
<NickName>تست</NickName>
<LastName>تست</LastName>
<OtherUsername isNull="true" />
<PhoneContacts isNull="true" />
<SaleUsername isNull="true" />
<SourceType isNull="true" />
<SupportUsername isNull="true" />
<Website isNull="true" />
<CreatDate>1/1/0001 12:00:00 AM</CreatDate>
<CrmId isNull="true" />
<CrmObjectTypeCode>customerCode</CrmObjectTypeCode>
<CrmObjectTypeId isNull="true" />
<CrmObjectTypeIndex>0</CrmObjectTypeIndex>
<CrmObjectTypeName isNull="true" />
<ExtendedProperties isNull="true" />
<ModifyDate>1/1/0001 12:00:00 AM</ModifyDate>
<ParentCrmObjectId isNull="true" />
<ProcessStateIndex isNull="true" />
<RefId isNull="true" />
<Stage isNull="true" />
<StageId isNull="true" />
<Tags isNull="true" />
</identity>
</MethodParameters>
</SaveIdentity>
حالا برای قرار گرفتن در حالت آپدیت تو همین کدی که الان فرستادید کافیه مقدار
را بجای null
مقدار id اون هویتی که میخواهید ویرایشش کنید بزارید
به این صورت منظورتونه؟
<Id>83b4a96b-fdfa-4358-9efd-4babc71b1153</Id>
الان کد زیر رو اجرا کردم یه هویت دیگه ایجاد شد و قبلی تغییر نکرد
<SaveIdentity>
<MethodParameters>
<username>test</username>
<password>test</password>
<identity actualtype="PersonInfo" basetype="IdentityInfo">
<OwnershipType isNull="true" />
<Personnel isNull="true" />
<RegisterDate isNull="true" />
<RegisterNumber isNull="true" />
<ShareType isNull="true" />
<TradeType isNull="true" />
<Trademark isNull="true" />
<AddressContacts isNull="true" />
<Balance isNull="true" />
<Categories attr0="CategoryInfoArray" isNull="false">
<CategoryInfoArray0>
<Id>83b4a96b-fdfa-4358-9efd-4babc71b1153</Id>
<IdentityId isNull="true" />
<IsDeleted>False</IsDeleted>
<Key>customerConsumer</Key>
<Name isNull="true" />
<Type isNull="true" />
</CategoryInfoArray0>
</Categories>
<Classification isNull="true" />
<ColorName isNull="true" />
<CustomerDate isNull="true" />
<CustomerNumber isNull="true" />
<DontEmail isNull="true" />
<DontFax isNull="true" />
<DontPhoneCall isNull="true" />
<DontSms isNull="true" />
<DontSocialSms isNull="true" />
<Emails isNull="true" />
<IdentityType>حقیقی</IdentityType>
<NickName>آپدیت شده</NickName>
<FirstName>آپدیت شده</FirstName>
<LastName>تست</LastName>
<OtherUsername isNull="true" />
<PhoneContacts isNull="true" />
<SaleUsername isNull="true" />
<SourceType isNull="true" />
<SupportUsername isNull="true" />
<Website isNull="true" />
<CreatDate>1/1/0001 12:00:00 AM</CreatDate>
<CrmId isNull="true" />
<CrmObjectTypeCode>customerCode</CrmObjectTypeCode>
<CrmObjectTypeId isNull="true" />
<CrmObjectTypeIndex>0</CrmObjectTypeIndex>
<CrmObjectTypeName isNull="true" />
<ExtendedProperties isNull="true" />
<ModifyDate>1/1/0001 12:00:00 AM</ModifyDate>
<ParentCrmObjectId isNull="true" />
<ProcessStateIndex isNull="true" />
<RefId isNull="true" />
<Stage isNull="true" />
<StageId isNull="true" />
<Tags isNull="true" />
</identity>
</MethodParameters>
</SaveIdentity>
تو این کدی که فرستادید هم
<CrmId isNull="true" />
رو null مقدار دهی کردید که
crmId رو هم مقدار دهی کردم تو نرم افزار درست انجام شد و آپدیت شد. اما همین پارامترها رو از طریق وب سرویس میفرستم همون خطای قبل رو میده
والا اگر کد هاتون .net بود بهتر میتونستم راهنمایی تون کنم
اگر تو این ابزار های تست جواب گرفتین پس صد در صد وب سرویس ها داره درست عمل میکنه
شما یه بار دیگه کد هاتون رو با توجعه به این پارامتر ها بازنگری کنید
از نرم افزار wcf testclient برای تست استفاده کردم و پارامترهایی که لازم داشتم رو مقدار دهی کردم و تست درست انجام شد.اما همون مقادیر و پارامترها رو تو کد میارم همون خطای قبلی رو میده.
<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"> http://tempuri.org/IIdentity/SaveIdentity</Action>
</s:Header>
<s:Body>
<SaveIdentity xmlns="http://tempuri.org/">
<username>xxxxxx</username>
<password>xxxxxx</password>
<identity xmlns:d4p1="http://schemas.datacontract.org/2004/07/Septa.PayamGostar.ServiceLayer.Contract.PGContracts.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" i:type="d4p1:PersonInfo">
<d4p1:CreatDate>2021-01-14T10:38:00</d4p1:CreatDate>
<d4p1:CrmId>xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx</d4p1:CrmId>
<d4p1:CrmObjectTypeCode>customerCode</d4p1:CrmObjectTypeCode>
<d4p1:CrmObjectTypeId>648bba38-21be-452a-94e3-79a6ef3604cd</d4p1:CrmObjectTypeId>
<d4p1:CrmObjectTypeIndex>0</d4p1:CrmObjectTypeIndex>
<d4p1:CrmObjectTypeName i:nil="true" />
<d4p1:ExtendedProperties />
<d4p1:ModifyDate>2021-01-14T10:38:00</d4p1:ModifyDate>
<d4p1:ParentCrmObjectId i:nil="true" />
<d4p1:ProcessStateIndex i:nil="true" />
<d4p1:RefId i:nil="true" />
<d4p1:Stage i:nil="true" />
<d4p1:StageId i:nil="true" />
<d4p1:Tags xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<d4p1:AddressContacts>
<d4p1:IdentityContactAddress>
<d4p1:Id>2adf18c5-7cc4-422c-8656-1c19fb4fdee6</d4p1:Id>
<d4p1:IsDefault>false</d4p1:IsDefault>
<d4p1:IsDeleted>false</d4p1:IsDeleted>
<d4p1:Address>تهران-یوسف آباد</d4p1:Address>
<d4p1:AddressType>سایر</d4p1:AddressType>
<d4p1:AreaCode i:nil="true" />
<d4p1:City i:nil="true" />
<d4p1:Country i:nil="true" />
<d4p1:State i:nil="true" />
<d4p1:ZipBox i:nil="true" />
<d4p1:ZipCode i:nil="true" />
</d4p1:IdentityContactAddress>
</d4p1:AddressContacts>
<d4p1:Balance i:nil="true" />
<d4p1:Categories>
<d4p1:CategoryInfo>
<d4p1:Id>1c7aab74-34ba-46c0-95c0-661c2398f912</d4p1:Id>
<d4p1:IdentityId>b0a77278-2bee-4b99-bc89-ff6e6df930aa</d4p1:IdentityId>
<d4p1:IsDeleted>false</d4p1:IsDeleted>
<d4p1:Key>customerConsumer</d4p1:Key>
<d4p1:Name i:nil="true" />
<d4p1:Type i:nil="true" />
</d4p1:CategoryInfo>
</d4p1:Categories>
<d4p1:Classification i:nil="true" />
<d4p1:ColorName i:nil="true" />
<d4p1:CustomerDate i:nil="true" />
<d4p1:CustomerNumber i:nil="true" />
<d4p1:DontEmail i:nil="true" />
<d4p1:DontFax i:nil="true" />
<d4p1:DontPhoneCall i:nil="true" />
<d4p1:DontSms i:nil="true" />
<d4p1:DontSocialSms i:nil="true" />
<d4p1:Emails xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<d4p1:IdentityType>حقیقی</d4p1:IdentityType>
<d4p1:NickName i:nil="true" />
<d4p1:OtherUsername i:nil="true" />
<d4p1:PhoneContacts />
<d4p1:SaleUsername i:nil="true" />
<d4p1:SourceType i:nil="true" />
<d4p1:SupportUsername i:nil="true" />
<d4p1:Website i:nil="true" />
<d4p1:AreasOfInterest i:nil="true" />
<d4p1:BirthDate i:nil="true" />
<d4p1:Children i:nil="true" />
<d4p1:CreditType i:nil="true" />
<d4p1:Degree i:nil="true" />
<d4p1:Employees />
<d4p1:FacebookUsername i:nil="true" />
<d4p1:FirstName>تست تست</d4p1:FirstName>
<d4p1:Gender>تست</d4p1:Gender>
<d4p1:Hobbies i:nil="true" />
<d4p1:LastName>تست</d4p1:LastName>
<d4p1:MannerType i:nil="true" />
<d4p1:NationalCode i:nil="true" />
<d4p1:PaymentStatusType i:nil="true" />
<d4p1:PersonPrefix i:nil="true" />
<d4p1:PrefferedContactType i:nil="true" />
<d4p1:Spouse i:nil="true" />
</identity>
</SaveIdentity>
</s:Body>
</s:Envelope>
برای وب سرویس فرصت با نرم افزار wcf test client تست گرفتم.بازم همون خطا رو میده.پشتیبانی میگه وب سرویس مشکلی نداره.
این هم خروجی xml:
<d4p1:CreatDate>2021-05-05T13:04:00</d4p1:CreatDate>
<d4p1:CrmId i:nil="true" />
<d4p1:CrmObjectTypeCode>saleOpportunity</d4p1:CrmObjectTypeCode>
<d4p1:CrmObjectTypeId>0319df44-8aa7-475b-bb4f-a08e1f29a69c</d4p1:CrmObjectTypeId>
<d4p1:CrmObjectTypeIndex>0</d4p1:CrmObjectTypeIndex>
<d4p1:CrmObjectTypeName i:nil="true" />
<d4p1:ExtendedProperties i:nil="true" />
<d4p1:ModifyDate>2021-05-05T13:04:00</d4p1:ModifyDate>
<d4p1:ParentCrmObjectId i:nil="true" />
<d4p1:ProcessStateIndex>0</d4p1:ProcessStateIndex>
<d4p1:RefId i:nil="true" />
<d4p1:Stage i:nil="true" />
<d4p1:StageId i:nil="true" />
<d4p1:Tags xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<d4p1:Description i:nil="true" />
<d4p1:IdentityId>0319df44-8aa7-475b-bb4f-a08e1f29a69c</d4p1:IdentityId>
<d4p1:Subject>تست</d4p1:Subject>
<d4p1:ClosedDate>2021-05-04T15:31:00</d4p1:ClosedDate>
<d4p1:ClosedDatePersian i:nil="true" />
<d4p1:FailDate>2021-05-05T15:45:00</d4p1:FailDate>
<d4p1:LostCause i:nil="true" />
<d4p1:OpportunitySourceType>website</d4p1:OpportunitySourceType>
<d4p1:OpportunityType>xProduct</d4p1:OpportunityType>
<d4p1:Probability>10</d4p1:Probability>
<d4p1:SaleStage>onTrackOnline</d4p1:SaleStage>
<d4p1:SuccessDate>2021-05-05T15:45:00</d4p1:SuccessDate>
<d4p1:TotalDiscount>0</d4p1:TotalDiscount>
<d4p1:TotalValue>0</d4p1:TotalValue>
<d4p1:WonCause i:nil="true" />