6

サーバーが Stripe からの Webhook をどのように処理するかをテストする効果的な方法を見つけようとしています。複数のサブスクリプションを顧客のクレジット カードに追加するシステムをセットアップしています。これについては、Stripe の Web サイトで説明されています。

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

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

ありがとう!

4

4 に答える 4

1

Stripe が Web フックのログを提供するのはとても気に入っていますが、それらからのエラー応答を表示するのは難しいため、 Requestsライブラリを使用してスクリプトをセットアップしました。まず、Stripe ダッシュボードにアクセスして、送信されたリクエストの 1 つをコピーしました。

Events & Webhooks --> リクエストの 1 つをクリック --> リクエスト全体をコピー

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

hook_result.htmlこれで、発生した可能性のある django エラーを開いて確認できました (django で DEBUG=True を指定した場合)。

于 2013-03-15T19:43:57.467 に答える
1

テストの実行にツールは使用しませんでした。影響ストライプには、送信した情報を表示する完全な API リファレンスがあり、エラーも表示されます。Stripe はセットアップが非常に簡単で、安価で、ドキュメントに詳細が記載されています。

私がしたことは?

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

    • TEST_SECRET_KEY: ストライプで支払いと情報を送信するために使用します (テスト用)。
    • TEST_PUBS_KEY: Stripe との通信時に Web サイトを識別します (テスト用)。
    • LIVE_SECRET_KEY: ストライプでの支払いと情報の送信に使用 (ライブ用)
    • LIVE_PUBS_KEY: Stripe との通信時に Web サイトを識別します (ライブ用)。
    • API_VERSION: "2012-11-07" //これはテスト用のバージョンです
  2. ログインすると、上部にドキュメントが表示されます。ドキュメントをクリックすると、フォームの作成方法、サブスクリプションの作成方法、エラーの処理方法などに関する段階的なチュートリアルが表示されます。

  3. スクリプトが実行され、ストライプに接続されているかどうかを確認するには。[完全な API リファレンス] をクリックし、[Python] を選択します。そのページには、送信した情報と発生したエラーが表示されます。

私が本当に気に入っているのは、Stripe がエラーを検出すると、システムがそれを指摘して解決策を提供することです。解決策は左側にあり、送信された情報の確認は右側にあります。

Stripe は、テスト モードとライブの 2 つの世界に分かれています。テスト モードでは、新しい顧客の作成、新しい請求書の追加、サブスクリプションの設定などを実行できます。テストモードで行うことは、Stripe が稼働しているときと同じです。

于 2013-03-15T18:47:20.923 に答える
1

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

于 2013-08-11T01:20:47.560 に答える
0

ストライプ Webhook のテストは面倒です。私は Django を使用していないので、私の答えはより一般的になります。

私のphp WebhookハンドラーはWebhookデータを解析し、それに応じてハンドラー関数をディスパッチします。私のハンドラー クラスでは、テスト Webhook がマングルするすべての 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
}

それは役に立ちますか?

于 2013-03-22T19:31:45.697 に答える