Suis-je à l'aide de ce code PHP de mal? (en collaboration avec Bande)
Je suis à l'aide de Bande pour une passerelle de paiement. Je peux obtenir une carte de "jeton" comme Bande d'appels, ce qui est expliqué ici: https://stripe.com/docs/checkout#api
Bon aller avec. J'ai réussi à recevoir le jeton dans ma bande de tableau de bord. Maintenant ce que je dois faire est effectivement de charge de la carte(un jeton). Voici comment ils l'ont mis: "Vous avez de l'utilisateur de votre carte de crédit, maintenant ce qui? Maintenant, vous vous chargez de l'argent. Ce qui se passe sur votre serveur, et le moyen le plus rapide de le faire est par l'utilisation de l'un de nos client des bibliothèques." Bien qu'ils fournissent le php nécessaire à droite sur cette page:
//Set your secret key: remember to change this to your live secret key in production
//See your keys here https://manage.stripe.com/account
Stripe::setApiKey("sk_test_68YYnDTKPzcxxRZbkxEJtOVq");
//Get the credit card details submitted by the form
$token = $_POST['stripeToken'];
//Create the charge on Stripe's servers - this will charge the user's card
try {
$charge = Stripe_Charge::create(array(
"amount" => 1000, //amount in cents, again
"currency" => "usd",
"card" => $token,
"description" => "[email protected]")
);
} catch(Stripe_CardError $e) {
//The card has been declined
}
Vous pouvez voir exactement comment ils expliquent ici: https://stripe.com/docs/tutorials/charges
C'est là que les choses vont mal.
1) Lorsque, dans ce code permet de déterminer ce que la carte à charge?! J'ai la carte de l'ID de jeton numéro dans mon tableau de bord personnel. J'ai maintenant besoin de le recharger, mais ce code ne dit rien sur la carte. Le seul endroit que je vois, c'est:
$token = $_POST['stripeToken'];
'stripeToken' dois-je mettre dans la carte et le numéro d'identification d'ici?
2)j'ai créé une page simple pour exécuter ce avec:
<div id="payment">
<form action="charge-cards.php">
<?php require 'Stripe.php';?>
<input type="submit">
</form>
</div><!--end payment-->
"charge-cards.php" c'est le code en haut fournis par Stripe. Lorsque je clique sur submit, j'obtiens l'erreur de suivi:
Fatal error: Class 'Stripe' not found in /home/preemin/public_html/fun.dit /testing/charge-cards.php on line 5
N'importe qui peut voir ce que je m fais de mal? Merci!
avez-vous rouge stripe.com/docs/checkout/guides/php ? où ils ont dit "nous allons créer un fichier appelé config.php, où nous allons mettre en place certains de configuration initiale." avez-vous téléchargé "Bande bibliothèque PHP"
Merci pour votre réponse! Ouais, je l'ai téléchargé Stripe.php sur mon serveur, et dans le formulaire ci-dessus, j'ai compris: "<?php require 'Stripe.php';?>
oups! j'ai répondu ! Avoir un coup de pouce ! si je suis de droite !
Jetez un oeil à ce blog à larryullman.com/2012/11/07/.... Ce blog explique chacune des étapes en détail pour la recharge de paiement.
OriginalL'auteur Anthony Myers | 2013-04-12
Vous devez vous connecter pour publier un commentaire.
Je pense que ça vaut le coup de prendre du recul et de revoir les bases. Tout d'abord, afin de sécuriser la transaction par carte de crédit, et de s'assurer de la conformité PCI, la Bande a fourni une bibliothèque javascript qui permet de crypter et transmet de la nature sensible des données de carte de crédit. Ils fournissent une exemple de formulaire
Note soigneusement le fait que le formulaire n'a pas de soumettre à l'action. Aussi prêter une attention particulière au fait qu'aucun des sensibles champs de la carte de disposer d'un nom d'attribut. Ce formulaire doit jamais être soumis par l'intermédiaire de tout moyen autre que la méthode qu'ils ont fournis. Pour essayer de le faire vous ouvre de responsabilité.
Lorsque vous validez le formulaire, à l'aide de la js classe, ils ont fourni (voir Étape 2), il vous donne en retour une carte token, qui vous dites que vous avez déjà. Vous pouvez la stocker carte jeton dans votre base de données sans aucun problème de sécurité, c'est juste un nombre arbitraire qui ne signifie rien pour un hacker.
Une fois que vous avez ce jeton, vous avez deux options:
Ce que vous devez comprendre, c'est que Bande ne rangez PAS la carte jeton! Si vous le perdez, vous ne pouvez pas le récupérer. Vous devez générer un nouveau. Aussi, la seule façon vous pouvez l'utiliser pour de multiples charges est de créer un objet client. En d'autres termes, à MOINS que vous les stocker sur un client de l'objet, il n'est valable que pour une seule charge. Donc si vous charge contre elle avant de l'attacher à un objet client, il n'est plus valide.
Maintenant, revenons à l'essentiel encore une fois, comme IOIO MAD décrit, il y a deux choses que vous devez faire au-dessus de tout fichier php que vous voulez l'appeler une méthode des bandes à partir de:
La seule fois que la clé publique est utilisée, c'est quand vous réalisez que javascript appeler pour soumettre le formulaire de la carte.
Si vous voulez charger la carte immédiatement, vous avez à tourner à droite autour et faire un appel vers le serveur, l'envoi de la carte de hachage qui vous vient juste de revenir. Vous pourriez le faire avec ajax, ou en le collant dans un champ de formulaire puis valider. Étape 3 vous montre une façon de le faire.
Mais supposons que vous voulez faire d'autres choses avant le chargement de la carte. Pour développer votre exemple, disons que j'ai recueilli de ma carte bancaire du client sur une page, puis sur ma page de paiement, je veux soumettre à la charge:
Lorsque ce formulaire est soumis, charge-cards.php obtiendrez la
$cardHash
de la$_POST
variable, sur quoi vous allez suivre la exemple donné par Bande:Si vous rencontrez toujours des problèmes, employer la bonne compétences de débogage pour vérifier si oui ou non votre $_POST variable contient une carte de hachage. Si tout le reste échoue, contactez Bande de soutien à la clientèle. Leur API est top-notch, comme c'est leur documentation et de soutien.
MODIFIER 4/15/13
L'OP est l'aide de l' quick checkout méthode et à l'aide des boutons personnalisés. La plupart de ce qui précède s'applique toujours.
Le code présenté dans la section de Boutons affecte un gestionnaire de clic sur le bouton personnalisé, qui retourne une fonction de rappel qui lorsqu'il est exécuté, ajoute un caché d'entrée à un formulaire, attribue le stripeToken de ce champ, et soumet le formulaire. Juste avant que le formulaire est soumis, de la console.le journal ou alerte les stripeToken à assurez-vous d'avoir une valeur légitime:
Devrait être utilisé en conjonction avec le présent:
Donc ce qui doit arriver, c'est une fois que l'utilisateur appuie sur le bouton checkout, la forme devrait avoir un champ caché nommé "stripeToken' qui contient la valeur du jeton. Vous pouvez obtenir le jeton à partir du formulaire et l'envoyer plus tard. Alternativement, vous pouvez écouter sur le 'token' événement, qui sera lié à votre bouton:
AVERTISSEMENT: je n'ai pas utilisé le simple caisse méthode encore. Ce code n'est pas testé
"On dirait que vous êtes en train de créer le client, mais pas correctement l'accès à l'ID de jeton une fois qu'elle est publiée sur le serveur" est autre chose que le soutien m'a dit. Alors, quand j'utilise le code EXACT fournies sur cette page: stripe.com/docs/checkout#api , pourquoi n'est-il pas l'Affichage de l'Id de jeton pour le serveur? Fondamentalement, ce que j'ai besoin est la coutume CAISSE méthode(indiqué sur le lien ci-dessus) à travailler avec les "enregistrement de données client pour plus tard", ce qui est indiqué ici: stripe.com/docs/tutorials/... .
"Bande ne rangez PAS la carte jeton!" Donc, je vous envoie le jeton à mon propre serveur? Je pensais que la carte jeton va pour le tableau de bord de Bande de backend.
Je vous concède que leur documentation n'ont des trous, et il y a plusieurs façons de faire ce qui semble être la même chose. Mais de toutes les façons ont un but différent 😉
Permettez-moi de clarifier "Bande ne rangez PAS la carte jeton!" Bande ne rangez la carte jeton en interne... mais il n'y a aucun moyen de le récupérer ou de le voir encore une fois donné à vous (la carte jeton est différente de l'empreinte digitale, vous pouvez les consulter sur le tableau de bord). En fin de compte, la carte jeton est transmis à la bande de serveurs soit de faire une seule charge, ou à être stockés sur un objet client pour plus tard, plusieurs accusations. Mais, sauf si vous êtes en utilisant l'aide de la caisse chose, il va à votre serveur en premier, d'où vous pouvez l'envoyer à bande pour créer une charge, ou un client de l'objet.
OriginalL'auteur Codasaurus
je pense que peut-être il vous manque quelques "include" ,
Class 'Stripe' not found
signifie que le Fichier PHP composé de la Classe 'Stripe' n'ai pas inclus avant l'appel@Remarque : PHP >= 5.2 de l'environnement est nécessaire
Télécharger La Bande bibliothèque PHP
L'extraire dans votre MAISON!
Nous allons créer un fichier appelé config.php, où nous allons mettre en place certains de configuration initiale.
Alors à votre fichier de Code ci-DESSUS (ce qui suppose que yours.php)
"Fatal error: Uncaught exception 'Stripe_CardError' avec le message "Impossible de facturer un client qui n'a pas de carte "dans /home/preemin/public_html/fun.dit/testing/stripephp/lib/Stripe/ApiRequestor.php" C'est tellement frustrant! Où en sommes-nous même dire quelle carte à charge?
IOIO MAD est sur la bonne voie, mais il ya plus à elle.
vous devez savoir que la carte jeton et le publier sur votre page. Semble que vous pourriez être essayer gratuitement un invalide ou utilisés de carte jeton. Voir peut-réponse détaillée ci-dessous
OriginalL'auteur 7-isnotbad