В моем случае пользователь должен иметь возможность сохранять в базе данных информацию о кредитной карте, такую как номер кредитной карты, имя на карте, срок действия и тип карты. Информация о кредитной карте очень важна. Требуется шифрование. Я знаю, что лучше использовать полосу для сохранения этой информации на их сервере, но в настоящее время я не уверен, какую платформу я буду использовать. Для временной цели, если мне нужно сохранить эти данные, как мне это сделать? Мне нужны эти данные для внешнего интерфейса (приложения для реагирования) , чтобы я мог показать пользователю, что у него есть следующие карты, с которых они могут совершать платеж. Я не буду показывать номер кредитной карты, только карту, но для совершения платежа мне нужна эта информация, чтобы получить ее с сервера, чтобы я мог автоматически заполнить эти данные при совершении платежа.
Вот как я пытался, но для шифрования я использовал bcrypt. Поскольку bcrypt - это односторонний алгоритм, я не смог декодировать во внешнем интерфейсе для автозаполнения деталей в библиотеке обработчика платежей.
const hashPassword = async (password) => {
const saltRounds = 10;
return await bcrypt.hash(password, saltRounds);
}
saveCard: combineResolvers(
async (parent, { input: { userId, cardData } }, { req }) => {
try {
const existingUser = await req.db
.collection('User')
.findOne({
_id: userId,
});
if (!existingUser) {
// raise user not found error
}
const creditCardObj = await validateCreateCreditCardSchema(
req,
cardData,
);
creditCardObj.creditCardNumber = await hashPassword(
cardData.creditCardNumber,
); // uses salted hash
creditCardObj.userId = userId;
const creditCardRes = await req.db
.collection('CreditCard')
.insertOne(creditCardObj);
if (creditCardRes.result.n > 0) {
// return success response
} else {
// error occured message
}
} catch (err) {
// internal server error
}
},
Примечание. Я не использую никакой процессор платежей. Я просто издеваюсь над процессом. Поскольку я не уверен, какую платежную платформу я буду использовать. Stripe поддерживает функцию сохранения данных карты на свой сервер и получения списка сохраненных карт и оплаты позже, но не уверен, что платформа, которую я выберу позже, будет поддерживать это. поэтому я просто хочу имитировать пока что, сохранив эти данные в моей базе данных и заставив их автозаполнить как можно безопаснее.