2015-04-24 22 views
5

Tôi muốn kiểm tra việc xử lý sự kiện webhook của ứng dụng của mình từ sọc khi thanh toán đăng ký đã được thực hiện (hoặc không thành công). Dưới đây là những gì tôi đã cố gắng cho đến nay:Tôi làm cách nào để kiểm tra luồng gia hạn đăng ký theo sọc?

  • Thiết lập một thuê bao mới
  • thẻ tín dụng Cập nhật của người dùng để có một trong đó có thể được thêm vào một tài khoản, nhưng sẽ không thực sự được tính
  • thay đổi ngày kết thúc thử nghiệm được trong một giây
  • Chờ vài giây chờ đợi các webhook được gửi

Tuy nhiên, Theo the documentation:

Nếu bạn đã định cấu hình webhook, hóa đơn sẽ đợi cho đến một giờ sau khi webhook cuối cùng được gửi thành công (hoặc lần gặp gỡ web cuối cùng sau khi không thành công).

Một giờ là một thời gian dài để chờ đợi, vì tôi đang cố gắng thực hiện điều này như là một phần của bộ kiểm tra tích hợp tự động.

Một đề xuất (từ IRC) là giả mạo yêu cầu webhook, để kiểm tra tích hợp của tôi gửi sự kiện, thay vì gửi sọc. Tuy nhiên, vì Stripe không bao gồm bất kỳ loại HMAC nào trong các webhook, tôi không thể tin tưởng dữ liệu trong tải trọng. Vì vậy, ứng dụng của tôi chỉ mất sự kiện ID từ payload webhook và lấy event from the Stripe API:

Nếu bảo mật là một mối quan tâm, hoặc nếu điều quan trọng là xác nhận rằng sọc gửi webhook, bạn chỉ nên sử dụng ID gửi webhook của bạn và nên yêu cầu các chi tiết còn lại từ API trực tiếp.

Điều này rõ ràng sẽ không hoạt động nếu tôi đang cố gắng tiêm các sự kiện giả cho thử nghiệm của tôi (theo thiết kế).

Các phương pháp hay nhất để thử nghiệm loại kịch bản này là gì?

+1

Tôi muốn nói không xác minh sự kiện trong khi bạn đang thử nghiệm luồng này? Những gì tôi làm bản thân mình là lấy sự kiện từ API ở chế độ Live nhưng ở chế độ thử nghiệm tôi chỉ "tin tưởng" tải trọng vì tôi là người gửi nó (và đó là chế độ Kiểm tra). – koopajah

+0

@koopajah cảm ơn, tôi cho rằng đó là con đường để đi. Nếu bạn muốn đăng câu trả lời đó, tôi sẽ đánh dấu câu trả lời là 'đã chấp nhận'. – pkaeding

+0

Không chắc đó là câu trả lời thực sự tuyệt vời! Rất vui khi bạn trả lời câu hỏi của riêng bạn với những gì bạn đã thử? :) – koopajah

Trả lời

1

Dường như không có cách nào hoàn hảo để thực hiện việc này. Theo đề xuất của @koopajah trong một comment, tôi đã thêm một giá trị cấu hình trong ứng dụng của mình sẽ vô hiệu hóa tìm nạp sự kiện từ Stripe và thay vào đó chỉ tin tưởng dữ liệu sự kiện trong webhook. Điều này cho phép tôi kiểm tra luồng của mình theo cách tương tự như nó hoạt động trên sản xuất, vì dữ liệu sự kiện trong webhook và sự kiện được lấy từ Stripe giống hệt nhau (giả sử đây là yêu cầu webhook đích thực :)

Trừ khi/cho đến khi Stripe có chữ ký HMAC trong yêu cầu webhook để xác thực rằng nó đến từ họ, tôi nghĩ đây là cách tốt nhất để giải quyết vấn đề.

Các vấn đề liên quan