生成用于测试的 Stripe 测试卡令牌

2022-08-30 19:03:49

我在我的应用中使用 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中是否有允许服务器端令牌生成的内容。


答案 1

Stripe 提供了一个 API 调用来从服务器创建令牌:

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

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

编辑:Stripe 现在提供即用型测试令牌,如 at https://stripe.com/docs/testing#cardstok_visa


答案 2

您不再需要使用假信用卡创建令牌进行测试。Stripe现在为此提供了预制令牌的列表:

条纹文档:测试卡号和令牌


推荐