Stripe: нет такого токена.. аналогичный объект существует в тестовом режиме, но для выполнения этого запроса использовался клавиша режима реального времени

При использовании Stripe в режиме live я получаю эту ошибку PHP:

Нет такого токена tok_fgfhn.. аналогичный объект существует в тестовом режиме, но для выполнения этого запроса использовался клавиша в реальном времени

Все работает хорошо в режиме тестирования Stripe, и я переключился на живой API-ключ.

Я создаю нового клиента следующим образом:

$token  = $_POST['stripeToken'];
    $email  = $_POST['email'];

$customer = \Stripe\Customer::create(array(
      'email' => $email,
      'card'  => $token
    ));

    //charge for user ads
    $charge = \Stripe\Charge::create(array(
      'customer' => $customer->id,
      'amount'   => $amount,
      'currency' => 'eur'
    ));

Я ждал много часов, но я все еще получаю эту ошибку. Как я могу это исправить?

Ответы

Ответ 1

Похоже, вы пытаетесь обвинить клиента, который существует на вашем тестовом счете, а не в вашей реальной учетной записи. Убедитесь, что вы создаете нового клиента с вашими живыми клавишами и используете свой токен для создания заряда.

Ответ 2

Посмотрите на javascript, который использует тестовый открытый ключ API для извлечения токена. Измените его на свой открытый API API.

Это должно быть что-то вроде этого

Stripe.setPublishableKey('pk_test_axEdfdasdfasfsadfsad');

Ответ 3

У вас будет два разных ключа в вашей учетной записи. Пожалуйста, убедитесь, что вы заменили обе тестовые клавиши живыми клавишами:

живой сектантский ключ: sk_live_00000000000000000000000

живой ключ публикации: pk_live_00000000000000000000000

1- Секретный ключ будет заменен во всех ваших php-скриптах, где вы заряжаете

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

2. Опубликовать ключ заменит в вашем .JS файле, через который вы проверите форму платежа, этот же файл также создает токен после успешной проверки. Он может вызывать stripe.js или может иметь другое имя, необходимое для поиска этого файла, у него будет ключ публикации, который вам нужно заменить из test to live:

 Stripe.setPublishableKey('pk_live_0000000000000'); //this would be publish key

            function stripeResponseHandler(status, response) { //token function
                if (response.error) {
                    // re-enable the submit button
                    $('.submit-button').removeAttr("disabled");
                    // show hidden div
                    document.getElementById('a_x200').style.display = 'block';
                    // show the errors on the form
                    $(".payment-errors").html(response.error.message);
                } else {
                    var form$ = $("#payment-form");
                    // token contains id, last4, and card type
                    var token = response['id'];
                    // insert the token into the form so it gets submitted to the server
                    form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />");
                    // and submit
                    form$.get(0).submit();
                }
            }