5

私のサーバーがStripeのウェブフックをどのように扱うかをテストする効果的な方法を見つけようとしています。私はストライプのウェブサイトに記述されているお客様のクレジットカードに複数のサブスクリプションを追加するためにシステムを設定してい:ストライプWebhooksへのDjangoレスポンスのテスト

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

私は効果的に私のサーバーであることをテストする方法を考え出すされて抱えている問題スクリプトを正しく実行する(つまり、請求書に正しいサブスクリプションを追加する、データベースにイベントを記録するなど)。私は今テストを自動化することについてあまり心配していません、私はスクリプト上の良いテストを効果的に実行するのに苦労しています。誰もこれまでDjangoでこれをやったことがありますか?これらのテストを実行するために使用したリソースとツールは何ですか?

ありがとうございます!

答えて

1

私はテストを実行するためのツールを使用しませんでした。影響ストライプには、送信した情報を表示するFULL API REFERENCEがあり、エラーも表示されます。ストライプはセットアップが簡単で、安価で、ドキュメントの詳細がわかります。

私は何ですか?

  1. まず、ストライプアカウントを作成します。そのアカウントでは、彼らはあなたを与えるだろう:

    • TEST_SECRET_KEYは:
    • TEST_PUBS_KEY(テスト用)ストライプでのお支払い情報を送信するための使用は:
    • LIVE_SECRET_KEY(テスト用)ストライプと通信するときにあなたのウェブサイトを識別します。支払い情報のストライプで(ライブ用)
    • LIVE_PUBS_KEYを送信するために使用します(ライブ用)ストライプ
    • API_VERSIONと通信するときにあなたのウェブサイトを識別します。「2012年11月7日」//これはテスト用のバージョンであるだけ
  2. ログインすると、上部に「Documentation」が表示されます。ドキュメントをクリックすると、フォームを作成する方法、サブスクリプションを作成する方法、エラーを処理する方法などに関する詳細なチュートリアルが用意されています。

  3. スクリプトが実行中で、ストライプに接続しているかどうかを確認します。 FULL API REFERENCEをクリックし、Pythonを選択します。そのページには、送信した情報とエラーが表示されます。

私が本当に好きなのは、ストライプがエラーを検出した場合、システムはそれを指摘して解決策を提供します。解決策は左側にあり、情報の送信を確認することが右側にあります。

ストライプはテストモードとライブの2つの世界に分かれています。テストモードでは、新規顧客の作成、新しい請求書の追加、契約のセットアップなどを実行できます。あなたがテストモードで何をしたかは、あなたのストライプが生きているときと同じです。

+0

その他ご不明な点がございましたら、お気軽にお問い合わせください。私は現在、私たちのサイトにストライプとdwollaを設定しています。 – catherine

+0

こんにちはキャサリン、情報ありがとう。私が抱えている問題は、ウェブフックの場合、サーバーからの応答を表示したり、テストモードで顧客、請求書などの実際のイベントをテストしたりする良い方法ではないようです。アカウントダッシュボードから "Send Test Webhook"をクリックすることができます。これは 'id': 'evt_00000000000000'イベントを送信します。実際にアカウントを更新したり、Stripeで実際の機能を実行することはできません。何か案は? – bgmaster

+0

新しい顧客、請求書、購読の追加は、アプリやストライプで行うことができます。そこに書類を読んだことがありますか?その作成方法とテスト方法に関するサンプルコードがあります。 – catherine

1

私はストライプがウェブフックのログを提供するのが大好きですが、エラー応答を表示することは難しいので、Requestsライブラリを使用してスクリプトを設定します。最初に、私はStripeダッシュボードに行き、彼らが送ってきたリクエストの1つをコピーしました。

イベント&ウェブフック - >リクエストのいずれかをクリック - 今、私はhook_result.htmlを開き、出ている可能性のあるDjangoのエラーを見ることができた要求全体

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() 

をコピー>(DEBUG = Trueの与えられましたdjangoで)。

+0

サッケス、ライブラリが、私が必要とするもので私を助けることができるように見えます。私はいくつかの調査をさせて、私はあなたに戻ってきます。 – bgmaster

+0

リクエストは本当に組み込みの[urllib2](http://docs.python.org/2/library/urllib2.html)のちょっとしたバージョンです.HTTPリクエストを扱う方がずっと簡単です。 –

0

テストストライプウェブフックは痛みです。私はDjangoを使用しないので、私の答えはより一般的になります。

私のphp webhookハンドラはwebhookデータを解析し、それに応じてハンドラ関数を送出します。私のハンドラクラスでは、テスト用webhooksがmanglesするすべてのidの正当なデータでクラスプロパティを設定します。次に、ライブモードをテストするハンドラ関数のそれぞれに条件があります。 falseの場合、マングルされたIDを正当なテストIDに置き換えます。

また、$ fakeLiveModeという別のクラスプロパティがあります。これはテスト時にtrueに設定されています。これにより、ライブモードでのようにコードを強制的に処理することができます。

たとえば、customer.subscription.updatedイベントをテストすると、プランIDと顧客IDが壊れてしまいます。だから、そのハンドラで私はこれを行うだろう:

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 
} 

それは助けてくれる?

1

django-stripe-payments私はtest suiteを持っていますが、包括的ではありませんが、そこに着くことの出発点です。私がしているのは、実際のWebhookのデータをコピーし、機密データ用にスクラブし、データとしてテストに追加するだけです。

+0

+1これは私がRailsで行ったこととまったく同じです。 –

関連する問題