2013-03-15 35 views
5

Tôi đang cố gắng tìm ra cách hiệu quả để kiểm tra cách máy chủ xử lý các webhook từ Stripe. Tôi đang thiết lập một hệ thống để thêm nhiều thuê bao vào thẻ tín dụng của khách hàng, được mô tả trên trang web sọc của:Thử nghiệm Câu trả lời của Django với Webhooks sọc

https://support.stripe.com/questions/can-customers-have-multiple-subscriptions

Vấn đề tôi đang gặp là tìm hiểu làm thế nào để có hiệu quả kiểm tra rằng máy chủ của tôi là thực thi các kịch bản một cách chính xác (ví dụ: thêm các đăng ký chính xác vào hóa đơn, ghi lại các sự kiện trong cơ sở dữ liệu của tôi, v.v.). Tôi không quá lo lắng về việc tự động hoá thử nghiệm ngay bây giờ, tôi chỉ đang cố gắng để chạy thử nghiệm hiệu quả trên kịch bản. Có ai làm điều này với Django trước đây? Bạn đã sử dụng tài nguyên và công cụ nào để chạy các thử nghiệm này?

Cảm ơn!

Trả lời

1

Tôi không sử dụng bất kỳ công cụ nào để chạy thử nghiệm. Tác động của sọc có một API đầy đủ tham khảo hiển thị thông tin bạn đã gửi cho họ và chúng cũng hiển thị lỗi. Stripe rất dễ thiết lập, giá rẻ và có đầy đủ chi tiết trong tài liệu.

Tôi đã làm gì?

  1. Trước tiên, tôi tạo tài khoản sọc. Trong tài khoản đó, họ sẽ cung cấp cho bạn:

    • TEST_SECRET_KEY: sử dụng cho việc gửi thanh toán và thông tin trong sọc (để thử nghiệm)
    • TEST_PUBS_KEY: xác định trang web của bạn khi giao tiếp với sọc (để thử nghiệm)
    • LIVE_SECRET_KEY: sử dụng cho việc gửi thanh toán và thông tin trong sọc (cho live)
    • LIVE_PUBS_KEY: xác định trang web của bạn khi giao tiếp với sọc (cho live)
    • API_VERSION: "2012/11/07" // đây là phiên bản dành cho thử nghiệm chỉ
  2. Khi bạn đăng nhập, bạn sẽ thấy Tài liệu ở trên cùng. Nhấp vào tài liệu và họ sẽ cung cấp cho bạn hướng dẫn từng bước về cách tạo biểu mẫu, cách tạo đăng ký, cách xử lý lỗi và nhiều tính năng khác.

  3. Để kiểm tra xem tập lệnh của bạn có đang thực thi và kết nối với sọc không. Nhấp vào FULL API REFERENCE sau đó chọn Python. Trong trang đó, bạn sẽ thấy thông tin bạn gửi và lỗi mà bạn gặp phải.

Điều tôi thực sự thích là nếu Stripe phát hiện lỗi mà hệ thống sẽ chỉ ra và đưa ra giải pháp cho bạn. Giải pháp ở phía bên trái và kiểm tra thông tin gửi ở bên phải.

Sọc được chia thành hai thế giới: chế độ thử nghiệm và chế độ xem trực tiếp. Ở chế độ thử nghiệm, bạn có thể thực hiện tạo khách hàng mới, thêm hóa đơn mới, thiết lập đăng ký của bạn và nhiều tính năng khác. Bạn đã từng làm gì trong chế độ kiểm tra, giống như khi bạn đang sống với Sọc.

+0

Nếu bạn có câu hỏi khác, vui lòng hỏi. Tôi hiện đang thiết lập sọc và dwolla trong trang web của chúng tôi. – catherine

+0

Xin chào Catherine, cảm ơn thông tin. Vấn đề tôi gặp phải là đối với các webhook, có vẻ như không phải là cách hay để xem phản hồi từ máy chủ của tôi, hoặc để kiểm tra các sự kiện thực sự với khách hàng, hóa đơn, v.v ... trong chế độ thử nghiệm. Bạn chỉ có thể nhấp vào "Gửi kiểm tra Webhook" từ bảng điều khiển tài khoản, nó sẽ gửi sự kiện 'id': 'evt_00000000000000', sự kiện này không cho phép bạn cập nhật bất kỳ tài khoản nào hoặc thực hiện bất kỳ chức năng thực nào trên Stripe. Bất kỳ ý tưởng? – bgmaster

+0

Bạn có thể thực hiện thêm khách hàng mới, hóa đơn của họ, đăng ký của bạn qua trong ứng dụng của bạn hoặc trong Stripe. Bạn đã đọc tài liệu ở đó chưa. Có các mã mẫu về cách tạo và kiểm tra rằng – catherine

1

Tôi thực sự yêu sọc cung cấp nhật ký cho móc web, tuy nhiên, rất khó để xem phản hồi lỗi từ chúng, vì vậy tôi thiết lập tập lệnh bằng cách sử dụng thư viện Requests. Trước tiên, tôi đã đi đến bảng điều khiển Stripe và sao chép một trong các yêu cầu mà họ đã gửi.

Sự kiện & Webhooks -> click vào một trong những yêu cầu - DEBUG> sao chép toàn bộ yêu cầu

import requests 

data = """ PASTE COPIED JSON REQUEST HERE """ 

# insert the appropriate url/endpoint below 
res = requests.post("http://localhost:8000/stripe_hook/", data=data).text 
output = open("hook_result.html", "w") 
output.write(res) 
output.close() 

Bây giờ tôi có thể mở hook_result.html và thấy bất kỳ lỗi django có thể đã đưa ra (cho = True trong django).

+0

Sanketh, tôi không quen với các yêu cầu thư viện, nhưng có vẻ như nó có thể giúp tôi với những gì tôi cần. Hãy để tôi làm một số điều tra và tôi sẽ lấy lại cho bạn. – bgmaster

+0

Yêu cầu thực sự chỉ là một phiên bản đẹp hơn của nội trang [urllib2] (http://docs.python.org/2/library/urllib2.html), làm cho nó dễ dàng hơn nhiều để làm việc với các yêu cầu http. –

0

kiểm tra lỗ trên web là một nỗi đau. Tôi không sử dụng Django, vì vậy câu trả lời của tôi sẽ tổng quát hơn.

Trình xử lý webhook php của tôi phân tích cú pháp dữ liệu webhook và gửi các hàm xử lý tương ứng. Trong lớp xử lý của tôi, tôi thiết lập các thuộc tính lớp với dữ liệu hợp pháp cho tất cả các id mà webhooks thử nghiệm mangles. Sau đó, tôi có một điều kiện trong mỗi chức năng xử lý của tôi mà kiểm tra cho livemode. Nếu sai, tôi thay thế id bị xáo trộn bằng id kiểm tra hợp lệ.

Tôi cũng có một thuộc tính lớp khác được gọi là $ fakeLiveMode, mà tôi đặt thành true khi tôi đang thử nghiệm. Điều này cho phép tôi buộc mã xử lý như thể đang ở chế độ trực tiếp.

Ví dụ: khi thử nghiệm sự kiện customer.subscription.updated, id gói và id khách hàng bị hỏng. Vì vậy, trong trình xử lý đó tôi sẽ thực hiện việc này:

if ($event->livemode === true || $this->fakeLivemode) 
{ 
    if ($this->fakeLivemode) 
    { 
     // override botched data returned by test webhook 
     $event->data->object->plan->id = $this->testPlanId; 
     $event->data->object->customer = $this->testCustomerId; 
    } 

    // process webhook 
} 

Điều đó có hữu ích không?

1

Trong django-stripe-payments Tôi có một số test suite trong khi cách xa toàn diện có nghĩa là bắt đầu tại đó. Những gì tôi làm chỉ là sao chép dữ liệu của một webhook thực, chà nó cho dữ liệu nhạy cảm và thêm nó như là một dữ liệu để kiểm tra.

+0

+1 Đây chính là cách tôi đã thực hiện nó trong Rails. –

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