Điểm:-1

~90% tỷ lệ lỗi với webhook Stripe, phản hồi không thể đoán trước. Vấn đề máy chủ?

lá cờ dz

Tôi đang thiết lập webhook Stripe lần đầu tiên. Tôi đã thực hiện hàng trăm yêu cầu kiểm tra và tỷ lệ lỗi của tôi là khoảng 90%. Không thể đoán trước được tại sao các lỗi xảy ra.

Các phản hồi lỗi trên bảng điều khiển Stripe là:

Hết thời gian kết nối với máy chủ từ xa

hoặc

Không thể kết nối với máy chủ từ xa

Webhook của tôi (Tôi đã đơn giản hóa nó để thử nghiệm). Khoảng 10% thời gian, tôi nhận được 200 phản hồi với {đã nhận: đúng}:

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

  sự kiện const = req.body;

  console.log("Sự kiện:");
  console.log(sự kiện);

  //Xử lý sự kiện
  chuyển đổi (event.type) {
    trường hợp 'thanh toán_intent.succeeded':
      const paymentIntent = event.data.object;
      // Sau đó xác định và gọi một phương thức để xử lý ý định thanh toán thành công.
      // handlePaymentIntentSucceeded(thanh toánIntent);
      nghỉ;
    trường hợp 'thanh toán_method.đính kèm':
      const paymentMethod = event.data.object;
      // Sau đó xác định và gọi phương thức để xử lý tệp đính kèm thành công của Phương thức thanh toán.
      // handlePaymentMethodAttached(PaymentMethod);
      nghỉ;
    // ... xử lý các loại sự kiện khác
    mặc định:
      console.log(`Loại sự kiện chưa xử lý ${event.type}`);
  }

  // Trả về phản hồi xác nhận đã nhận sự kiện
  res.json({đã nhận: true});
})

Tôi đã thử hai cách sau để xác định hook, cũng như có và không có async:

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

Tôi đã liên hệ với bộ phận hỗ trợ của Stripe và đã thử tất cả các đề xuất của họ. Họ để lại cho tôi những khả năng sau:

Có thể có liên quan đến mạng chậm hoặc một số vấn đề khác với định tuyến.

Nhà cung cấp dịch vụ lưu trữ cũng có thể cần cho phép địa chỉ IP phân phối của Stripe, FYI họ có thể bị chặn trước khi đến máy chủ của bạn

Tôi đã thêm IP của Stripe vào iptables, ví dụ:

iptables -I INPUT -p tcp -s 3.18.12.63 -j CHẤP NHẬN

Tôi đang chạy máy chủ Hostinger VPS với Caddy trên Ubuntu 18.04. Đây có thể là một vấn đề với máy chủ của tôi được thiết lập? Bất cứ lời khuyên nào cũng đươc đánh giá cao.

paladin avatar
lá cờ id
100 yêu cầu kiểm tra? Trong khung thời gian nào? Kết nối TCP có độ trễ, bạn cần lưu ý điều đó.
Joseph avatar
lá cờ dz
@paladin, tôi đã thực hiện hơn 100 yêu cầu trong 24 giờ qua. Tôi thường gửi 10 liên tiếp nhanh chóng. Đôi khi 5 có thể thành công, đôi khi 0 thành công. Hiện tại tỷ lệ lỗi là 84%.
paladin avatar
lá cờ id
nhanh có nghĩa là gì? Nếu bạn viết một vòng lặp, kích hoạt 10 yêu cầu không chậm trễ, thì không có gì ngạc nhiên tại sao bạn lại nhận được tỷ lệ lỗi cao như vậy.
Joseph avatar
lá cờ dz
Tôi chủ yếu kích hoạt các yêu cầu bằng cách cuộn tròn theo cách thủ công, cách nhau vài giây, nhưng tôi cũng đã kích hoạt chúng bằng cách thực hiện bán hàng thử nghiệm phù hợp thông qua thanh toán Stripe và gặp lỗi tương tự. Tôi cũng đã thử điều này bằng cách chỉ gửi một yêu cầu, nhưng vẫn nhận được tỷ lệ lỗi như nhau. Vì vậy, tôi không nghĩ đó là vấn đề mình gặp phải, nhưng bạn có thể vui lòng giải thích tại sao việc gửi nhiều yêu cầu có thể gây ra lỗi không?
paladin avatar
lá cờ id
Ví dụ, bạn có một máy khách và một máy chủ. Máy chủ có thể xử lý 2 yêu cầu của khách hàng mỗi giây cùng một lúc, không còn nữa. Bây giờ bạn có một máy khách thực hiện 2 yêu cầu trong vòng 1 giây, máy chủ hoàn toàn ổn với nó. Bây giờ, cùng một khách hàng cố gắng thực hiện 3 yêu cầu trong vòng 1 giây. 2 trong số 3 yêu cầu có thể được máy chủ trả lời kịp thời, yêu cầu thứ 3 hết thời gian chờ.
paladin avatar
lá cờ id
Áp dụng tương tự cho các gói IP, không thể có các gói IP không giới hạn trên đường truyền, chỉ có thể có 1 (MỘT) gói IP trên đường truyền, nếu các gói IP khác cũng đến, một trong các gói đó sẽ "chết", cái nào là ngẫu nhiên.
Joseph avatar
lá cờ dz
Ah, hiểu rồi, cảm ơn vì đã giải thích. Tôi nghĩ rằng tôi vừa mới sửa nó, sau hơn một ngày thử nhiều thứ khác nhau! Tôi đã tìm thấy điều này: https://www.youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio và thiết lập ngrok để chuyển tiếp tới localhost:4000. Tôi vừa gửi vô số yêu cầu và tất cả đều thành công. Tôi không chắc nó hoạt động như thế nào/tại sao tôi cần nó, nhưng tôi rất vui khi nó hoạt động. Tôi cũng sẽ trả lời câu hỏi ngay bây giờ.
Điểm:-1
lá cờ dz

Tôi dường như có nó làm việc.

Tôi đã cài đặt ngrok qua apt (https://ngrok.com/doad)

Sau đó theo dõi: youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio, và thiết lập ngrok để chuyển tiếp tới localhost:4000:

ngrok http 4000

Tôi vừa gửi vô số yêu cầu và tất cả đều thành công. Tôi không chắc nó hoạt động như thế nào/tại sao tôi cần nó, nhưng tôi rất vui khi nó hoạt động. Nếu bất cứ ai có thể giải thích lý do tại sao nó không hoạt động mà không có điều này, xin vui lòng cho tôi biết!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.