سلام وقت بخیر
برای ارسال اطلاعات هویت از فرم ساخته شده با WP Forms به CRM کد زیر نوشته شده اما اطلاعات ارسال نمیشن. با توجه به مستندات API پیامگستر از روش Saveperson استفاده شده. لطفا راهنمایی بفرمایید.
function send_wpforms_data_to_crm($fields, $entry, $form_data) {
// بررسی اینکه آیا این فرم، فرم موردنظر ما است یا نه
if ($form_data['id'] !== 62004) {
return;
}
// اطلاعات احراز هویت و آدرس API پیامگستر
$username = 'admin';
$password = '@dmin193';
$crm_url = 'http://172.20.24.9/Services/API/IPerson.svc/SavePerson';
// جمعآوری دادهها از WPForms
$data = array(
'username' => $username,
'password' => $password,
'person' => array(
'FirstName' => sanitize_text_field($fields[1]), // نام و نام خانوادگی
'FatherName' => sanitize_text_field($fields[6]), // نام پدر
'NationalCode' => sanitize_text_field($fields[3]), // کد ملی
'IDNumber' => sanitize_text_field($fields[5]), // شماره شناسنامه
'BirthDate' => sanitize_text_field($fields[16]), // تاریخ تولد
'BirthIssueDate' => sanitize_text_field($fields[17]), // تاریخ صدور شناسنامه
'BirthProvince' => sanitize_text_field($fields[8]), // استان محل تولد
'BirthCity' => sanitize_text_field($fields[9]), // شهرستان محل تولد
'Address' => sanitize_text_field($fields[21]), // آدرس کامل محل سکونت
'MunicipalityZone' => sanitize_text_field($fields[50]), // منطقه شهرداری
'PostalCode' => sanitize_text_field($fields[24]), // کد پستی
'MobileNumber' => sanitize_text_field($fields[25]), // تلفن همراه
'PhoneNumber' => sanitize_text_field($fields[27]), // تلفن ثابت
)
);
// ارسال درخواست به API پیامگستر
$response = wp_remote_post($crm_url, array(
'method' => 'POST',
'body' => json_encode($data),
'headers' => array(
'Content-Type' => 'application/json'
),
'timeout' => 30
));
// بررسی نتیجه و ثبت لاگ در `debug.log`
if (is_wp_error($response)) {
error_log('❌ خطا در ارسال به پیامگستر: ' . $response->get_error_message());
} else {
$response_code = wp_remote_retrieve_response_code($response);
$response_body = wp_remote_retrieve_body($response);
error_log('✅ کد پاسخ پیامگستر: ' . $response_code);
error_log('✅ پاسخ پیامگستر: ' . $response_body);
}
}
// اجرای این تابع هنگام تکمیل فرم
add_action('wpforms_process_complete', 'send_wpforms_data_to_crm', 10, 3);
با سلام و احترام
در تابع SavePerson کلاس PersonInfo فیلدهای الزامی وجود داره که حتما باید مقداردهی شوند. مثل CrmObjectTypeCode که کد نوع شخص مورد نظر میباشد و Categories که دسته بندی ذخیره هویت در آن تعیین میگردد.
نمونه کد php برای SavePerson برای شما ارسال میگردد. کد خود را مطابق زیر اصلاح نمایید.
<?php
try
{
$username = 'admin';
$password = ???
$url = 'http(s)://<url>/services/api/IPerson.svc?wsdl';
$soapClient = new SoapClient( $url );
$params = array(
'username' => $username,
'password' => $password,
'person' => array(
'CrmObjectTypeCode' => 'code1',
'CrmObjectTypeIndex' => 24,
'Categories' => array(
array(
'Key' => 'keyno'
)
),
'IdentityType' => 'Person',
'FirstName' => 'test',
'LastName' => 'testi',
)
);
$result = $soapClient->SavePerson($params);
if ($result->SavePersonResult->Success)
{
echo json_encode($result, JSON_UNESCAPED_UNICODE);
}
else
echo $result->SavePersonResult->Message;
}
catch ( Exception $e )
{
echo $e->getMessage();
}
?>