JacobBennett/
StripeTestToken
g4t.io

Easily Create Stripe Tokens and Cards For Testing

by Eric L. Barnes

When you are building a payment flow with Stripe there are a lot of different flows for you to test. These include successful charges and a plethora of failed o…

README from JacobBennett/StripeTestToken Open on GitHub →

Stripe Test Tokens

Latest Version on Packagist Travis Software License

Use this to quickly create Stripe test tokens for successful and exceptional responses from Stripe.

Install

composer require jacobbennett/stripe-test-token

Usage

<?php

use JacobBennett\StripeTestToken;
use Stripe\Charge;

StripeTestToken::setApiKey('your_stripe_secret_test_key');

// Fake a Successful Charge

Charge::create([
        'amount' => 500,
        'currency' => 'usd',
        'source' => StripeTestToken::validVisa(),
]);


// Fake a Failing Charge

try {

        Charge::create([
                'amount' => 500,
                'currency' => 'usd',
                'source' => StripeTestToken::cvcFail(),
        ]);

} catch (\Stripe\Error\Card $e) {
        // handle errors
}

Docs

Find full descriptions at original Stripe Docs Reference

Using Methods

To use any of the methods below, call the listed method as a static on the StripeTestToken class. If you only want to return the corresponding card number, such as with Selenium or Laravel Dusk, you can call the same method on the StripeCardNumber class.

<?php 

\JacobBennett\StripeCardNumber::validVisa(); // Returns the valid Visa card number 4012888888881881
\JacobBennett\StripeTestToken::validVisa(); // Attempts to generate a token against the Stripe API for a valid Visa card

Test card numbers

Genuine card information cannot be used in test mode. Instead, use any of the following test card methods to create a successful payment token:

Method
validVisa
validVisaDebit
validMastercard
validMastercardDebit
validMastercardPrepaid
validAmex
validDiscover
validDinersClub
validJCB

Testing for specific responses and errors

The following methods can be used to create tokens that produce specific responses—useful for testing different scenarios and error codes. Verification checks only run when the required information is provided (e.g., for cvc_check to fail, a CVC code must be provided).

Method Description
successDirectToBalance Charge succeeds and funds will be added directly to your available balance (bypassing your pending balance).
addressZipFail The address_line1_check and address_zip_check verifications fail. If your account is blocking payments that fail ZIP code validation, the charge is declined.
addressFail Charge succeeds but the address_line1_check verification fails.
zipFail The address_zip_check verification fails. If your account is blocking payments that fail ZIP code validation, the charge is declined.
addressZipUnavailable Charge succeeds but the address_zip_check and address_line1_check verifications are both unavailable.
cvcFail If a CVC number is provided, the cvc_check fails. If your account is blocking payments that fail CVC code validation, the charge is declined.
customerChargeFail Attaching this card to a Customer object succeeds, but attempts to charge the customer fail.
successWithReview Charge succeeds with a risk_level of elevated and placed into review.
declineCard Charge is declined with a card_declined code.
declineFraudulentCard Charge is declined with a card_declined code and a fraudulent reason.
declineIncorrectCvc Charge is declined with an incorrect_cvc code.
declineExpiredCard Charge is declined with an expired_card code.
declineProcessingError Charge is declined with a processing_error code.
declineIncorrectNumber Charge is declined with an incorrect_number code as the card number fails the Luhn check.

Testing

In order to run the full test suite, you must have STRIPE_KEY set in your environment, as the test will hit the Stripe API in order to generate a test token.

$ STRIPE_KEY=sk_test_YourTestKeyHere phpunit tests/

License

This project is open-sourced software licensed under the MIT license

More from the ecosystem

marcreichel/
laya-php
g4t.io
3 53

LayaPHP: Self-Hosted Text Classification for PHP and Laravel

Classify text in PHP without an LLM bill: typed decisions in 100+ languages, self-hosted. Laravel-ready SDK for Laya, a Jev AI alternative.

ai classification decision-engine
marcreichel/laya-php via Laravel News
Josh-Dovey/
postcodes-laravel
g4t.io
5 9

Postcodes for Laravel: GB Postcode Lookup and Geography Data

Postcodes for Laravel adds typed GB postcode lookups, validation, geography data, distance searches, and test fakes through the GB Postcodes API.

Josh-Dovey/postcodes-laravel via Laravel News
RedberryProducts/
mailbox-for-laravel
g4t.io
4 115

Mailbox for Laravel: Preview and Test Rendered Email

Mailbox for Laravel captures outgoing mail in a local dashboard and lets you test rendered HTML, recipients, and attachments with fluent assertions.

RedberryProducts/mailbox-for-laravel via Laravel News