在激活的条带帐户中进行测试事务

时间:2017-06-12 05:26:25

标签: stripe-payments stripe-connect stripe.net

我有一个条带独立帐户,该帐户已激活,正在接受实时交易并连接到平台条带帐户。我在下面给出了用于接受实时付款的代码。

 \Stripe\Stripe::setApiKey("LIVE_PLATFORM_API_KEY");
 $strtok = \Stripe\Token::create(
             array(
              "card" => array(
                      "number" => $cardnumber,
                      "exp_month" => $cardexpmonth,
                      "exp_year" => $cardexpyear,
                      "cvc" => $creditcardcvv
                  )
                ),
                array('stripe_account' => "live_account_header")
              );
 $strtoken = $strtok->id;
 $charge = \Stripe\Charge::create(array(
                  'amount' => $amts,
                  'currency' => 'usd',
                  'application_fee' => $appfee,
                  'source' => $strtoken
            ), array('stripe_account' => "live_account_header"));

我想在我的代码中设置一个调试模式,即使条带独立帐户和平台帐户都被激活并处于实时模式,它也将使用条带测试密钥来接受测试事务。我想在调试时使用条带调用,而不是进行实时事务。我的意思是,当我突然想要进行测试事务而不是实时事务时,我应该如何更改上面的代码并使用测试密钥,即使平台和独立帐户都被激活并生效?

1 个答案:

答案 0 :(得分:1)

在测试模式或实时模式下处理事务完全取决于您使用的API密钥集。如果使用测试API密钥,则将在测试模式下处理事务。如果您使用实时API密钥,则交易将以实时模式处理。

因此,您需要做的是根据您可以触发的某些条件决定您将要使用哪组密钥。

基本上,您需要替换它:

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

有这样的事情:

if ($test_condition) {
    \Stripe\Stripe::setApiKey("TEST_PLATFORM_API_KEY");
} else {
    \Stripe\Stripe::setApiKey("LIVE_PLATFORM_API_KEY");
}

请注意,您还需要在前端代码中使用测试可发布密钥(使用CheckoutElements创建令牌) - 如果令牌尝试在测试模式下创建费用使用实时密钥创建不起作用。

在您提供的示例代码中,您需要从后端代码创建令牌(通过\Stripe\Token::create(...))。这意味着您的服务器直接提供卡数据。这在测试时很好,但在实时模式下,应始终通过Checkout或Elements在前端创建令牌。否则,您将不再有资格获得PCI SAQ A,并且需要对您的解决方案进行PCI合规性审核。