Stripe payments 在激活的条带帐户中进行测试交易

Stripe payments 在激活的条带帐户中进行测试交易,stripe-payments,stripe-connect,stripe.net,Stripe Payments,Stripe Connect,Stripe.net,我有一个条带独立帐户,该帐户已激活,正在接受实时交易,并连接到平台条带帐户。我在下面给出了我用来接受实时付款的代码 \Stripe\Stripe::setApiKey("LIVE_PLATFORM_API_KEY"); $strtok = \Stripe\Token::create( array( "card" => array( "number" => $cardnumber,

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

 \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"));

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

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

所以你需要做的是根据你能触发的条件来决定你要使用哪一组键

基本上,您需要替换这个:

\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");
}
请记住,您还需要在前端代码中使用测试可发布密钥(用于使用或创建令牌)——如果令牌是使用活动密钥创建的,则尝试在测试模式下创建费用将无效


在您提供的示例代码中,您正在从后端代码创建令牌(通过
\Stripe\token::create(…)
)。这意味着您的服务器直接提供卡数据。这在测试时很好,但在实时模式下,令牌应该始终通过签出或元素在前端创建。否则,您将不再符合PCI合规性要求,并且需要对您的解决方案进行PCI合规性审核。

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

所以你需要做的是根据你能触发的条件来决定你要使用哪一组键

基本上,您需要替换这个:

\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");
}
请记住,您还需要在前端代码中使用测试可发布密钥(用于使用或创建令牌)——如果令牌是使用活动密钥创建的,则尝试在测试模式下创建费用将无效


在您提供的示例代码中,您正在从后端代码创建令牌(通过
\Stripe\token::create(…)
)。这意味着您的服务器直接提供卡数据。这在测试时很好,但在实时模式下,令牌应该始终通过签出或元素在前端创建。否则,您将不再符合PCI合规性要求,并且需要对您的解决方案进行PCI合规性审核。

帐户标题如何?我可以使用相同的live帐户标题吗?我的意思是,在我的条带调用中,我是否必须以某种方式获取一个测试帐户头,并用数组('stripe\u account'=>“live\u account\u header”)替换数组('stripe\u account'=>“test\u account\u header”)。不,你可以对一个live account发出测试请求,这样你就可以在这两种情况下使用相同的帐户ID。帐户头呢?我可以使用相同的live帐户标题吗?我的意思是,在我的条带调用中,我是否必须以某种方式获取测试帐户头,并用数组('stripe\u account'=>“live\u account\u header”)替换数组('stripe\u account'=>“test\u account\u header”)。不,您可以对live account发出测试请求,因此在这两种情况下都可以使用相同的帐户ID。