Lorsque j'utilise Stripe en mode direct, j'obtiens ceci PHP:
Aucun tel jeton tok_fgfhn .. un objet similaire existe en mode test, mais une clé de mode en direct a été utilisée pour effectuer cette demande
Tout fonctionne bien en mode de test Stripe, et je suis passé à une clé API en direct.
Je crée un nouveau client comme celui-ci:
$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'
));
J'ai testé plusieurs heures mais je reçois toujours cette erreur. Comment puis-je le réparer?
Il semble que vous essayez de facturer un client qui existe sur votre compte de test, pas sur votre compte en direct. Assurez-vous que vous créez un nouveau client avec vos clés en direct et utilisez leur jeton pour créer la charge.
Vous aurez deux clés différentes dans votre compte Stripe. Veuillez vous assurer que vous avez remplacé les deux clés de test par des clés actives:
clé de section en direct: sk_live_000000000000000000000
clé de publication en direct: pk_live_000000000000000000000
1- La clé secrète remplacera dans tous vos scripts php où vous chargez
\Stripe\Stripe::setApiKey("sk_live_00000000000000000000");
2- La clé de publication remplacera dans votre fichier .JS à travers lequel vous validez votre formulaire de paiement ce même fichier crée également un jeton après une validation réussie. Il peut appeler stripe.js ou tout autre nom dont vous avez besoin pour localiser ce fichier, il aura une clé de publication que vous devez remplacer de 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();
}
}
Examinez le javascript qui utilise la clé API publique de test pour récupérer le jeton. Remplacez-le par votre clé API publique en direct.
Ça devrait être quelque chose comme ça
Stripe.setPublishableKey('pk_test_axEdfdasdfasfsadfsad');
Après y avoir passé quelques heures. Je laisse cela ici si cela peut aider quelqu'un d'autre:
J'ai une application déployée sur Heroku avec la clé secrète et publiable stockée dans la variable d'environnement sur heroku.
J'utilise <%= ENV.fetch('STRIPE_PU_KEY') %>
dans un .coffee.erb
Sachez que si vous changez et redémarrez votre serveur, cela ne sera pas suffisant. Vous devrez régénérer votre application.js sinon il prendra toujours la valeur capturée.
J'espère que ça aide