web-dev-qa-db-ja.com

テスト用のストライプテストカードトークンを生成する

アプリでStripeを使用しています。 Stripeで支払いが作成されたことを確認する支払いを行うための統合テストを作成したいと思います。 Stripe.jsを使用しています。

私のテストでは、テストチャージを実行するためにカードトークンが必要です。通常、このトークンはクライアント側でstripe.jsを使用して生成され、リクエストを送信して請求を実行します。これはサーバー側のみのテストであるため、テスト内からトークンを生成する方法はありますか?

参考のために、テストは次のようになります(phpを使用しますが、原理は同じです)。

/** @test **/
public function it_creates_a_charge()
{
    $order = factory(Order::class)->create();
    $stripe_token = Stripe::generateToken([
                                          'card' => '4242424242424242'
                                          'exp'  => '04/2017',
                                          'cvc'  => '123'
                                          ]); // does not exist afaik

    $response = $this->post('charges/store', [
                'stripe_token' => $stripe_token,
                'order_id' => $order->id,
                //etc
                ]);

    // assertions...
}

基本的に、サーバー側のトークン生成を可能にする何かがStripe API内にあるかどうかを尋ねています。

17
harryg

Stripeは、サーバーからトークンを作成するAPI呼び出しを提供します:

\Stripe\Stripe::setApiKey("sk_test_BQokikJOvBiI2HlWgH4olfQ2");

\Stripe\Token::create(array(
  "card" => array(
    "number" => "4242424242424242",
    "exp_month" => 1,
    "exp_year" => 2017,
    "cvc" => "314"
  )
));

edit:Stripeは、 https://stripe.com/docsでtok_visaのようなすぐに使用できるテストトークンを提供するようになりました/ testing#cards

23
ceejayoz

テストのために偽のクレジットカードでトークンを作成する必要はもうありません。 Stripeは、この目的のために事前に作成されたトークンのリストを提供します:

ストライプドキュメント:テストカード番号とトークン

16
Littletime