Рейтинг:-1

Частота ошибок ~90% с веб-перехватчиками Stripe, непредсказуемый ответ. Проблема с сервером?

флаг dz

Я впервые настраиваю вебхуки Stripe. Я сделал сотни тестовых запросов, и у меня был уровень ошибок около 90%. Невозможно предсказать, почему происходят сбои.

Ответы на сбой на панели управления Stripe:

Время ожидания подключения к удаленному хосту истекло

или же

Не удалось подключиться к удаленному хосту

Мой вебхук (я упростил его для тестирования). Примерно в 10% случаев я получаю ответ 200 с {получено: правда}:

expressRouter.route('/hooks').post( async (req, res) => {

  константное событие = req.body;

  console.log("Событие:");
  console.log(событие);

  // Обработка события
  переключатель (событие.тип) {
    case 'payment_intent.succeeded':
      const paymentIntent = event.data.object;
      // Затем определите и вызовите метод для обработки успешного платежного намерения.
      // обработатьPaymentIntentSucceeded(paymentIntent);
      сломать;
    case 'payment_method.attached':
      константный метод оплаты = событие.данные.объект;
      // Затем определите и вызовите метод для обработки успешного присоединения PaymentMethod.
      // handlePaymentMethodAttached(paymentMethod);
      сломать;
    // ... обрабатывать другие типы событий
    По умолчанию:
      console.log(`Необработанный тип события ${event.type}`);
  }

  // Возвращаем ответ для подтверждения получения события
  res.json ({получено: правда});
})

Я пробовал эти два способа определения хука, а также с асинхронностью и без нее:

expressRouter.route('/hooks').post( async (req, res) => {
  ...
})
// и 
app.post("/hooks", async (req, res) => {
  ...
})

Я связался со службой поддержки Stripe и испробовал все их предложения. Они оставили мне следующие возможности:

Возможно, задействована медленная сеть или какая-то другая проблема с маршрутизацией.

Хост-провайдеру может потребоваться также разрешить IP-адрес доставки Stripe, к вашему сведению. они могут быть заблокированы до того, как достигнут вашего сервера

Я добавил IP-адреса Stripe в iptables, например:

iptables -I ВВОД -p tcp -s 3.18.12.63 -j ПРИНЯТЬ

Я использую свой VPS-сервер Hostinger с Caddy на Ubuntu 18.04. Может ли это быть проблемой с настройкой моего сервера? Любые советы высоко ценится.

paladin avatar
флаг id
100 тестовых запросов? В какие сроки? TCP-соединения имеют задержку, об этом нужно знать.
Joseph avatar
флаг dz
@paladin, я сделал сотни запросов за последние 24 часа. Обычно я посылаю 10 писем подряд. Иногда удавалось 5, иногда 0. В настоящее время частота ошибок составляет 84%.
paladin avatar
флаг id
Что значит быстро? Если вы пишете цикл, который запускает 10 запросов без задержки, неудивительно, почему вы получаете такой высокий уровень ошибок.
Joseph avatar
флаг dz
В основном я вручную инициировал запросы с помощью curl с интервалом в несколько секунд, но я также запускал их, выполняя надлежащие тестовые продажи через Stripe checkout и получая те же ошибки. Я также пробовал это, просто отправив один запрос, но все равно получаю частоту ошибок. Итак, я не думаю, что это моя проблема, но не могли бы вы объяснить, почему отправка нескольких запросов может вызвать ошибку?
paladin avatar
флаг id
Например, у вас есть клиент и сервер. Сервер способен обрабатывать 2 клиентских запроса в секунду одновременно, не более. Теперь у вас есть клиент, который выполняет 2 запроса в течение 1 секунды, сервер полностью с ним справляется. Теперь тот же клиент пытается выполнить 3 запроса в течение 1 секунды. На 2 из 3 запросов сервер может ответить вовремя, 3-й запрос истекает.
paladin avatar
флаг id
То же самое относится к IP-пакетам, на линии не может быть неограниченного количества IP-пакетов, на линии может быть только 1 (ОДИН) IP-пакет, если прибывает другой IP-пакет, один из этих пакетов «умирает», который является случайным.
Joseph avatar
флаг dz
А, понял, спасибо за пояснение. Я думаю, что я только что исправил это после дня + попыток разных вещей! Я нашел это: https://www.youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio и настроил ngrok для пересылки на localhost:4000. Я просто отправил кучу запросов, и все они были успешными. Я не совсем понимаю, как это работает/зачем мне это нужно, но я очень рад, что это работает. Я тоже сейчас отвечу на вопрос.
Рейтинг:-1
флаг dz

У меня вроде работает.

Я установил ngrok через apt (https://ngrok.com/download)

Затем последовало это: youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio, и настройте ngrok для пересылки на localhost:4000:

нгрок http 4000

Я просто отправил кучу запросов, и все они были успешными. Я не совсем понимаю, как это работает/зачем мне это нужно, но я очень рад, что это работает. Если кто-нибудь может объяснить, почему он не работал без этого, пожалуйста, дайте мне знать!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.