web-dev-qa-db-fra.com

Générer un jeton de carte de test Stripe pour les tests

J'utilise Stripe dans mon application. Je veux écrire un test d'intégration pour placer un paiement qui vérifie à Stripe qu'un paiement a été créé. J'utilise Stripe.js.

Dans mon test, j'ai besoin d'un jeton de carte pour effectuer la charge de test. Habituellement, ce jeton est généré côté client avec stripe.js et envoyé dans la demande pour effectuer la facturation. Comme il s'agit d'un test côté serveur uniquement, existe-t-il un moyen de générer un jeton à partir du test?

Pour référence, le test serait quelque chose comme ça (utilise php mais le principe est le même):

/** @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...
}

Essentiellement, je demande s'il y a quelque chose dans l'API Stripe qui permet la génération de jetons côté serveur.

17
harryg

Stripe fournit un appel API pour créer des jetons à partir du serveur:

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

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

edit: Stripe fournit maintenant des jetons de test prêts à l'emploi comme tok_visa sur https://stripe.com/docs/testing#cards .

23
ceejayoz

Vous n'avez plus besoin de créer de jetons avec de fausses cartes de crédit pour les tests. Stripe fournit désormais une liste de jetons préfabriqués à cet effet:

Stripe docs: test des numéros de cartes et des jetons

16
Littletime