アプリで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内にあるかどうかを尋ねています。
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 。
テストのために偽のクレジットカードでトークンを作成する必要はもうありません。 Stripeは、この目的のために事前に作成されたトークンのリストを提供します: