NodeJs обрабатывает ошибки для пошагового процесса оплаты - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь реализовать платежный портал с помощью nodejs и реагировать, используя полосу. У меня есть вопрос о том, как обрабатывать ошибки в моем процессе. Сейчас у меня есть три основных этапа:

  1. Обработка платежа с полосой
  2. Сохранение счета с оплаченной информацией и сохранение платежа в базе данных
  3. Отправка квитанции

Прямо сейчас у меня все это внутри блока try / catch. Например:

const paymentProcess = async (req, res) => {
  const invoice = await Invoice.findOne({ _id: req._id });
  if (!invoice || invoice.paid) return res.status(400).end();

  try{

    const charge = await stripe.charges.create({
      amount: 0.50,
      currency: 'usd',
      description: invoice.name,
      source: req.body.paymentToken
    });

    //Then I have code to set up saving to database here

    // Then I have code to set up an email template with ejs and send it with nodemailer here

  }catch(err){
    res.status(500).end();
  }
}

Но если платеж проходит, и дальше происходит ошибка, все это приводит к ошибке. Это нормально, но платеж на самом деле прошел, и я не хочу, чтобы клиент думал, что он просто указал неверную информацию о карте и попытался снова. Итак, как бы я справился с этим во внешнем интерфейсе, чтобы клиент узнал, что платеж прошел успешно, но при сохранении в базу данных или при отправке квитанции произошла ошибка.

Я думал о нескольких блоках try / catchили используя промежуточное программное обеспечение, но это в основном приведет к тому же самому. Я мог бы сделать проверки по пути и отправить успешный ответ клиенту с сообщением об ошибке, но мне это не кажется правильным.

Я также подумал о выполнении пошагового процесса на фронтеконец, но я думаю, что это было бы угрозой безопасности.

Любые предложения о том, как мне следует обрабатывать этот шаг за шагом процесс.

...