我有一个条带独立帐户,该帐户已激活,正在接受实时交易并连接到平台条带帐户。我在下面给出了用于接受实时付款的代码。
\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"));
我想在我的代码中设置一个调试模式,即使条带独立帐户和平台帐户都被激活并处于实时模式,它也将使用条带测试密钥来接受测试事务。我想在调试时使用条带调用,而不是进行实时事务。我的意思是,当我突然想要进行测试事务而不是实时事务时,我应该如何更改上面的代码并使用测试密钥,即使平台和独立帐户都被激活并生效?
答案 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");
}
请注意,您还需要在前端代码中使用测试可发布密钥(使用Checkout或Elements创建令牌) - 如果令牌尝试在测试模式下创建费用使用实时密钥创建不起作用。
在您提供的示例代码中,您需要从后端代码创建令牌(通过\Stripe\Token::create(...)
)。这意味着您的服务器直接提供卡数据。这在测试时很好,但在实时模式下,应始终通过Checkout或Elements在前端创建令牌。否则,您将不再有资格获得PCI SAQ A,并且需要对您的解决方案进行PCI合规性审核。