2010-01-13 31 views
6

J'ai été à ce sujet pendant des jours et je n'arrive pas à le comprendre. Tout ce que je veux faire est quand le bouton d'abonnement est poussé, une variable est envoyée (post obtiennent je ne m'inquiète pas) le paiement est accompli et a atterri sur la page de succès, avec ma variable!Passer une variable du début à la fin - Paypal

D'après ce que je peux comprendre cela devrait être en mesure de le faire:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="0000000"> 
<Input type="hidden" name="custom" value="<?php md5($code.microtime()); ?>"/> 
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

Toute aide très appréciée (et oui j'ai lu paypal et la documentation de bac à sable, pas terrible à la lecture.)

Répondre

0

Manquant un echo. Au lieu de cela:

<?php md5($code.microtime()); ?> 

Essayez ceci:

<?php echo md5($code.microtime()); ?> 
+0

Sera-t-il passé par le biais de $ _POST ['custom'] ?? –

+0

Toujours pas de chance. rien n'est envoyé. –

0

PayPal ne traitera pas vos données personnalisées, donc au lieu de l'envoyer à eux et le récupérer, stocker juste dans votre propre base de données. Associez les données à la transaction en utilisant invoice comme clé.

Sur votre page de destination, vous pouvez obtenir la transaction PayPal invoice. Ensuite, vous pouvez aller chercher les données de votre propre base de données référencée par cet ID invoice.

+0

Ce principe s'applique-t-il à l'option de paiement standard (c'est-à-dire lorsque vous hébergez le bouton mais que l'utilisateur doit payer à Paypal pour effectuer la transaction)? – Joel

+0

@Joel vous pouvez lire l'API standard Paypal. Toutes les variables autres que leurs spécifications ne seront pas traitées par Paypal et pourraient être rejetées lorsque l'utilisateur est redirigé vers la page de succès. Le champ 'facture' peut être utilisé pour suivre le numéro de facture de votre application, et dans la page de succès, vous pouvez l'utiliser pour aller chercher des données supplémentaires et les afficher à l'utilisateur. –

+0

Il s'avère qu'il existe un champ "personnalisé" pour cela. – Joel

9

Les variables 'custom' et 'invoice' sont toutes deux ce que PayPal appelle les variables "pass-through". PayPal ne fait rien avec eux, il vous les renvoie simplement dans les notifications IPN que vous recevez concernant cette transaction (quelqu'un effectue un paiement, un rejet de débit, etc.).

Je peux confirmer personnellement que cela fonctionne correctement dès maintenant en utilisant la variable 'custom'. J'utilise actuellement leur solution de paiement standard (gratuite) ...

Comment surveillez-vous la notification IPN pour voir quelles variables vous sont renvoyées?

Modifier - Info Ajouté supplémentaires ci-dessous:

Je voulais développer un peu ce que j'ai été pris très récemment par un problème lié à intercommunication des variables! La variable 'facture' doit être UNIQUE par transaction

PayPal autorisera seulement 1 paiement effectué par chaîne de facture UNIQUE. Toutes les tentatives ultérieures de paiement (qui arrivent avec une variable "facture" déjà payée) afficheront immédiatement un "Cette facture a déjà été payée". message. D'autre part, la variable 'custom' n'est PAS requise pour être unique et est destinée à être strictement utilisée comme variable pass-through - dans la plupart des cas, c'est ce que vous voulez utiliser lorsque vous recherchez simplement la fonctionnalité "pass-through".

Espérons que cela vous aide - le problème de l'unicité m'a récemment coûté près d'une journée complète d'un processus de commande cassé pour un projet personnel!

0

La question semble ne semble se CUSTOM être passé à travers dans Sandbox

Honte PayPal est pas si bon que nous avons tous pensé

0

Essayez ceci:

<input type="hidden" name="custom" value=<?php echo "\"".md5($code.microtime())."\""; ?>/> 

Il y avait un écho manquant et aussi les citations sont autour de la valeur, pas le php

Questions connexes