Подготавливаем страницу…
Подготавливаем страницу…
Два способа: PHP-hook в functions.php (рекомендуем) или JS-событие wpcf7mailsent. Поддерживаются Contact Form 7 и WPForms.
sk_pk_Multi-form: 1 ключ на сайт + forms_scope=[1,2,…] и form_id в body каждого запроса. Создать в ЛК 1ОПД.
Откройте wp-content/themes/ВАША-ТЕМА/functions.php (лучше — child-тему или mu-plugin) и добавьте код. Узнать IP сервера: curl ifconfig.me или ip a по SSH; внесите его в IP whitelist ключа в ЛК.
<?php
// functions.php в вашей теме (или mu-plugin)
// Срабатывает ПЕРЕД отправкой письма из Contact Form 7
add_action('wpcf7_before_send_mail', function ($contact_form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) return;
$data = $submission->get_posted_data();
$payload = [
'form_id' => 1, // ID формы из ЛК 1ОПД
'hash_field' => $data['your-email'] ?? '',
'fields' => array_map(
fn($k, $v) => ['field' => $k, 'value' => (string) (is_array($v) ? implode(',', $v) : $v)],
array_keys($data),
array_values($data)
),
];
wp_remote_post('https://v2.1opd.ru/api/v2/create-agreement', [
'headers' => [
// sk_ безопасно — он живёт на сервере, в браузер не уходит
'API-KEY' => 'sk_xxxxxxxxxxxxxxxxxxxx',
'Content-Type' => 'application/json',
],
'body' => wp_json_encode($payload),
'timeout' => 5,
'blocking' => true,
]);
}, 10, 1);Если нет PHP-доступа — вставьте JS через плагин «Insert Headers and Footers» или прямо в footer.php. В allowed_origins ключа добавьте домен сайта (например mywp.ru и www.mywp.ru).
<script>
// CF7 диспатчит wpcf7mailsent после успешной отправки
document.addEventListener('wpcf7mailsent', function(e) {
const data = {};
e.detail.inputs.forEach(i => { data[i.name] = i.value; });
fetch('https://v2.1opd.ru/api/v2/create-agreement', {
method: 'POST',
headers: {
// pk_ обязателен — sk_ из браузера утечёт
'API-KEY': 'pk_xxxxxxxxxxxxxxxxxxxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
form_id: 1,
hash_field: data['your-email'],
fields: Object.entries(data).map(([k, v]) => ({
field: k,
value: String(v)
}))
})
});
}, false);
</script>Аналогичный server-side hook, но через wpforms_process_complete:
<?php
// WPForms — хук wpforms_process_complete
add_action('wpforms_process_complete', function ($fields, $entry, $form_data, $entry_id) {
$email = '';
$payload_fields = [];
foreach ($fields as $f) {
if ($f['type'] === 'email') $email = $f['value'];
$payload_fields[] = ['field' => $f['name'], 'value' => (string) $f['value']];
}
wp_remote_post('https://v2.1opd.ru/api/v2/create-agreement', [
'headers' => [
'API-KEY' => 'sk_xxxxxxxxxxxxxxxxxxxx',
'Content-Type' => 'application/json',
],
'body' => wp_json_encode([
'form_id' => 1,
'hash_field' => $email,
'fields' => $payload_fields,
]),
'timeout' => 5,
]);
}, 10, 4);wp-content/debug.log или DevTools → Network → запрос на v2.1opd.ru.Откройте ЛК → раздел «Интеграция». Там персональные snippet'ы с уже подставленным API-ключом и form_id.
Открыть ЛК →Запросите тестовый доступ — выдаём ключ под ваш домен и помогаем подключиться.
Связаться →Все endpoints, коды ошибок, форматы HMAC/Origin/IP. Таблица «какую защиту выбрать».
Открыть →