2010-10-27 18 views
7

J'ai cherché pendant plus de 4 heures maintenant comment faire un rappel avec PayPal après que le paiement ait été effectué. Le fait est que j'ai un site où l'on vend des billets pour un LAN Party, et la seule façon de payer est avec PayPal.
Voici mon PayPal acheter code du bouton:PayPal Payment Callback

<form target="paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="add" value="1"> 
<input type="hidden" name="cmd" value="_cart"> 
<input type="hidden" name="business" value="_MY_PAYPAL_EMAIL_"> 
<input type="hidden" name="item_number" value="<?php echo mktime(); ?>"> 
<input type="hidden" name="cn" value="<?php echo $_SESSION['userid']; ?>"> 
<input type="hidden" name="return" value="http://80.202.213.240/apps/tickets/buy/success/" /> 
<input type="hidden" name="cancel_return" value="http://80.202.213.240/apps/tickets/buy/cancelled/" /> 
<input type="hidden" name="notify_url" value="http://80.202.213.240/apps/tickets/buy/ipn/" /> 
<input type="hidden" name="lc" value="NO"> 
<input type="hidden" name="item_name" value="BitHack - Standard Ticket"> 
<input type="hidden" name="amount" value="100.00"> 
<input type="hidden" name="currency_code" value="NOK"> 
<input type="hidden" name="no_shipping" value="1"> 
<input type="hidden" name="button_subtype" value="Tickets"> 
<input type="hidden" name="add" value="1"> 
<input type="hidden" name="bn" value="PP-ShopCartBF:btn_cart_LG.gif:NonHostedGuest"> 
<input type="submit" value="Add to Cart" class="ticketShowButton submit" title="Payment via PayPal"> 

Les informations doit ensuite être inséré dans une base de données, cette partie j'ai fini. Juste besoin du système de rappel pour fonctionner. Quelqu'un connaît-il de bons exemples de script de rappel?

BTW, est-ce possible d'utiliser des entrées personnalisées?

Répondre

10

La fonction de rappel spécifiée dans les variables return et notify url est la responsabilité du programmeur. Pourquoi? Parce que chaque site a sa propre structure de table pour les commandes. Essayez ceci comme guide:

Sur votre profil Paypal, définissez votre préférence de redirection automatique après une commande. Vous devrez également définir une URL de retour par défaut. ceci sera utilisé si vous avez oublié de spécifier une URL de retour sur votre formulaire de commande ou une chaîne de requête envoyée à Paypal.

Ensuite, définissez votre champ rm/variable « 2 » (ceci indiquera API Paypal pour autoRedirect à votre URL de retour après la commande et passer les informations de commande au format POST)

Vous pouvez voir la réponse Paypal en faisant un var_dump ($ _ POST) ou print_r ($ _ POST).

L'une des variables importantes de la réponse est $ _POST ['payment_status'] qui vous indiquera le résultat de la commande. Une transaction réussie est "Terminée". Une transaction qui nécessite une vérification de la part de Paypal ou du côté du marchand est «en attente». Enfin, n'oubliez pas de spécifier 'facture' dans votre champ/demande Paypal pour pouvoir mettre à jour le statut de votre commande. Quelque chose comme:

$status = $_POST['payment_status']; 
$invoice = $_POST['invoice']; 
mysql_query("UPDATE Orders SET status='$status' WHERE order_id='$invoice'"); 

Je sais que cela est mauvais codage, mais au moins vous avez l'idée générale dans sa forme la plus simple.

Encore une fois, ne comptez pas sur les codes d'autres. Les codes dans le réseau existent à des fins de référence et non comme le travail manuel de Dieu. Seulement vous avez le pouvoir de créer votre propre chef-d'œuvre: D

J'espère que cela aide. Votez si vous l'aimez. Ignorer sinon.

+0

est sûr $ _POST'? Qu'est-ce qui se passe quand une personne sans payer, envoyer 'payment_status = 1' à l'URL de rappel? – Cooper

1

Un spot publicitaire, mais la solution à faible coût est le script LinkLokIPN à:

http://www.vibralogix.com/linklokipn/

Aucune connexion autre que comme un client satisfait de la version de PHP. Parfois, il est BEAUCOUP plus facile d'acheter (et peut-être d'adapter) une solution de travail que de réinventer la roue.

+0

Merci, jetterons un coup d'oeil dans cela. – NoobiCake