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.