Выполнение тестовых транзакций в активированной страйп-учетной записи

У меня есть автономная учетная запись с полосой, которая активирована и принимает транзакции в реальном времени и подключена к учетной записи с полосой на платформе. Ниже я привожу код, который использую для приема платежей в реальном времени.

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

Я хочу настроить режим отладки в своем коде, который будет использовать тестовые ключи полосы для принятия тестовых транзакций, даже если и автономная полоса, и учетные записи платформы активированы и находятся в режиме реального времени. Мне нужны вызовы чередования, которые я должен использовать при отладке, а не в реальных транзакциях. Я имею в виду, как мне изменить приведенный выше код и использовать тестовые ключи, когда я вдруг хочу совершить тестовую транзакцию вместо реальной, даже если и платформа, и автономная учетная запись активированы и работают?


person jai    schedule 12.06.2017    source источник


Ответы (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.

person Ywain    schedule 12.06.2017
comment
А как насчет заголовка аккаунта? Могу ли я использовать тот же заголовок реального счета? Я имею в виду, что в моих вызовах полос мне нужно каким-то образом получить заголовок тестовой учетной записи и заменить массив ('stripe_account' => live_account_header) массивом ('stripe_account' => test_account_header) - person jai; 12.06.2017
comment
Нет, вы можете отправлять тестовые запросы на действующую учетную запись, поэтому вы можете использовать один и тот же идентификатор учетной записи в обоих случаях. - person Ywain; 12.06.2017