При использовании Stripe в режиме реального времени я получаю эту ошибку 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'
));
Я ждал много часов, но все еще получаю эту ошибку. Как я могу это исправить?
Похоже, вы пытаетесь списать средства с клиента, который существует в вашей тестовой учетной записи, а не в реальной учетной записи. Убедитесь, что вы делаете нового клиента с вашими живыми ключами и используете их токен для создания платежа.
Посмотрите на JavaScript, который использует тестовый открытый ключ API для получения токена. Измените его на ваш открытый ключ API.
Должно быть как то так
Stripe.setPublishableKey('pk_test_axEdfdasdfasfsadfsad');
У вас будет два разных ключа в вашем аккаунте. Пожалуйста, убедитесь, что вы заменили оба тестовых ключа на живые ключи:
ключ активной сектры: sk_live_00000000000000000000000
живой ключ публикации: pk_live_00000000000000000000000
1- Секретный ключ заменит во всех ваших php-скриптах где вы заряжаете
\Stripe\Stripe::setApiKey("sk_live_00000000000000000000");
2- Ключ публикации заменит в вашем файле .JS, с помощью которого вы проверяете форму платежа, этот же файл также создает токен после успешной проверки. Это может вызвать stripe.js или другое имя, которое вам нужно, чтобы найти этот файл, у него будет ключ публикации, который вам нужно заменить с test на 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();
}
}
Потратив на это несколько часов. Я позволю это здесь, если это может помочь кому-то еще:
У меня есть приложение, развернутое в Heroku с секретным и публикуемым ключом, хранящимся в переменной окружения на heroku.
я использую <%= ENV.fetch('STRIPE_PU_KEY') %>
в .coffee.erb
Помните, что если вы измените и перезапустите свой сервер, этого будет недостаточно. Вам нужно будет перегенерировать ваш application.js, иначе он все равно примет значение catched.
Надеюсь, поможет