Я создаю метод для расчета цены обновления пакета подписки с использованием полосы.Stripe имеет встроенную функцию и производит цену пропорционального расчета, вычисляемую во время запроса, известную как значение «proration_date».
Если клиент соглашается с ценой, пользователь может приобрести ее по указанной цене, предполагая, чтоЯ передаю «proration_date» вместе со следующим запросом.
Все эти запросы выполняются на внутреннем сервере, и из-за ограничений «proration_date» не может храниться в базе данных, что означает, что мне нужно передать его клиентудержать.
Чтобы решить эту проблему, я хотел бы передать зашифрованный токен клиенту, который будет содержать дату proration_date.Затем в запросе на оплату я бы взял зашифрованный токен и расшифровал его на своем сервере.
Я пробовал и проверял код с здесь , и он, кажется, работает.Также показана база кода.
Это метод шифрования, достаточно безопасный для моей задачи?
function encrypt(text) {
let iv = crypto.randomBytes(IV_LENGTH);
let cipher = crypto.createCipheriv('aes-256-cbc', Buffer.from(ENCRYPTION_KEY), iv);
let encrypted = cipher.update(text);
encrypted = Buffer.concat([encrypted, cipher.final()]);
return iv.toString('hex') + ':' + encrypted.toString('hex');
}
function decrypt(text) {
let textParts = text.split(':');
let iv = Buffer.from(textParts.shift(), 'hex');
let encryptedText = Buffer.from(textParts.join(':'), 'hex');
let decipher = crypto.createDecipheriv('aes-256-cbc', Buffer.from(ENCRYPTION_KEY), iv);
let decrypted = decipher.update(encryptedText);
decrypted = Buffer.concat([decrypted, decipher.final()]);
return decrypted.toString();
}