Можно ли запустить javascript для генерации номера лицензии, который будет отправлен вместе с завершенным заказом woocomPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Можно ли запустить javascript для генерации номера лицензии, который будет отправлен вместе с завершенным заказом woocom

Сообщение Anonymous »

Я хочу создать генератор лицензионных номеров для продукта, продаваемого на моем сайте Wordpress, который идентичен генератору в моей базе данных Filemaker (автономная/необслуживаемая).
Единственный общим языком как для Интернета, так и для FM является Javascript.
Я создал сценарий FM, который сканирует веб-просмотрщик моего решения FM на предмет номера лицензии, созданного после того, как клиент вводит свое имя.
Все попытки создать на моем веб-сайте процесс сопоставления, который отправляет номер лицензии клиенту при выполнении заказа, не увенчались успехом.
Возможно ли это? сгенерировать номер лицензии с помощью Javascript; затем включить результат в электронное письмо о завершении заказа Woocommerce?
Я пробовал различные методы, чтобы сгенерировать номер лицензии и отправить его после завершения заказа Woocommerce.< /p>
PHP-перевод моего FM-кода, добавленный в файл function.php моего веб-сайта, файл «работал» (т. е. номер лицензии был сгенерирован и отправлен по электронной почте), но не удалось создать лицензию номер, который соответствует FM или Javascript, созданному в FM.
Попытки заставить Javascript создать номер лицензии, а PHP запустить код и отправить электронное письмо - либо через файл function.php моего веб-сайта, пара фрагментов кода или плагин DIY - вообще ничего не дали, и я не мог понять, в чем проблема, потому что не удалось создать файл отладки.
Вот использованный фрагмент PHP для вызова Javascript:

Код: Выделить всё

add_action('wp_enqueue_scripts', 'enqueue_custom_js');

function enqueue_custom_js() {
wp_enqueue_script('custom-reg-code-js', plugin_dir_url(__FILE__) .  'reg-code.js', array('jquery'), null, true);
wp_localize_script('custom-reg-code-js', 'customData', array(
'ajaxUrl' => admin_url('admin-ajax.php'),
));
}

add_action('wp_ajax_custom_send_email', 'custom_send_email');
add_action('wp_ajax_nopriv_custom_send_email', 'custom_send_email');

function custom_send_email() {
$regName = sanitize_text_field($_POST['regName']);
$users = intval($_POST['users']);
$email = sanitize_email($_POST['email']);
$regCode = sanitize_text_field($_POST['regCode']);

error_log("Received AJAX: RegName - $regName, Users - $users, Email - $email, RegCode - $regCode");

if (empty($regCode) || empty($email)) {
error_log("Registration code or email is empty.");
wp_send_json_error('Registration code or email is empty.');
return;
}

$email_sent = send_registration_email($email, $regName, $regCode);
if ($email_sent) {
error_log("Email sent successfully.");
wp_send_json_success('Email sent successfully.');
} else {
error_log("Failed to send email.");
wp_send_json_error('Failed to send email.');
}
}

function send_registration_email($to, $name, $registration_code) {
$subject = 'Your Registration Code New';
$message = "Thank you for your purchase!
Dear {$name},

Your registration code is: [b]{$registration_code}[/b]

Please use this code to activate your new software.

If you have any questions, please don't hesitate to contact our support team.

Best regards,
Your Company Name
";
$headers = array('Content-Type: text/html; charset=UTF-8');

return wp_mail($to, $subject, $message, $headers);
}
А вот Javascript, который он должен «вызвать»:

Код: Выделить всё

function generateRegistrationCode(regName, users) {
const solutionKey = 'tcuXd6A4WQ';

if (!regName || !solutionKey) {
console.error('Registration name or solution key is empty.');
return '';
}

// Always append users (which is set to 1)
regName += users;

let len = regName.length;
let chr = 0, pos = 0;

for (let loop = 0; loop < len; loop++) {
const ascii = regName.charCodeAt(loop);
chr += ascii;
pos += (ascii * (loop + 1));
}

const sum = chr + pos + len;
const numString = `${sum}${pos}${chr}${len}${sum * sum}`;
let codePreFormatted = '';

let loop = 0;
while (loop < numString.length) {
const convertNum = (parseInt(numString.substr(loop, 2)) > 56) ? parseInt(numString.substr(loop, 1)) : parseInt(numString.substr(loop, 2));
codePreFormatted += (convertNum == 0) ? solutionKey[0] + solutionKey[1] : solutionKey[convertNum];
loop += convertNum.toString().length;
}

let codeFormatted = '';
for (let loop = 0; loop < codePreFormatted.length; loop += 4) {
if (codeFormatted) codeFormatted += '-';
codeFormatted += codePreFormatted.substr(loop, 4);
}

// Append users (always 1) to the final code
codeFormatted += `-[${users}]`;

console.log(`Generated registration code: ${codeFormatted}`);

// Append the registration code to the checkout page
document.getElementById('registration-code-display').innerText = codeFormatted || 'Registration code generation failed.';

return codeFormatted;
}

// Send registration code via AJAX
function sendRegistrationCode(email, regName, users) {
const regCode = generateRegistrationCode(regName, users);

if (!regCode) {
alert("Registration code generation failed.  Please check the input.");
console.error("Failed to generate registration code.");
return;
}

// Perform AJAX request to send the email
jQuery.ajax({
url: customData.ajaxUrl,
method: 'POST',
data: {
action: 'custom_send_email',
regName: regName,
users: users,
email: email,
regCode: regCode,
},
success: function(response) {
if (response.success) {
alert('Registration code sent successfully!');
} else {
alert('Failed to send the registration code: ' + response.data);
console.error('Failed to send the registration code:', response.data);
}
},
error: function(xhr, status, error) {
alert('An error occurred: ' + error);
console.error('AJAX error:', error);
}
});
}
Обратите внимание, что в моем коде JavaScript аргумент переменной «пользователи» не является обязательным и будет удален (поскольку в данный момент всегда есть один пользователь).
p>
Также обратите внимание, что на самом деле заказы выполняются автоматически, как только клиент отправляет успешный платеж.
Но если я переведу свой алгоритм последовательности генерации номера лицензии на PHP, номер лицензии, отправленный в отдельном электронном письме, не соответствует номеру, созданному в Filemaker.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ll-be-sent
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»