2009-07-20 7 views
0

Je confesse que je suis un noob à asp.net et des formulaires Web. J'ai un problème en incorporant quelques boutons PayPal Buy Now sur une seule page. Fondamentalement, le problème est quel que soit le bouton "Acheter maintenant" est cliqué, l'utilisateur est pris à paypal pour acheter le produit représenté par le dernier bouton sur la page.Problème d'accès à PayPal Acheter maintenant Boutons pour travailler sur une seule page dans ASP.NET

Le code pour mon premier bouton est quelque chose comme ça ...

<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="ABC123"> 
<asp:ImageButton runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif"/> 

Mon deuxième bouton est similaire à ...

<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="ABC456"> 
<asp:ImageButton runat="server" id="PPImageButton2" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif"/> 

Comment puis-je faire le premier bouton envoyer la valeur ABC123 au service PayPal au lieu de ABC456?

Merci d'avance.

Répondre

1

Le contenu POST d'un bouton correspond à chaque entrée de la balise FORM entourant le bouton d'envoi. Donc, pour avoir chaque bouton soumettre un ensemble distinct de champs cachés dont vous avez besoin pour envelopper le bouton et les champs cachés souhaités sous une forme séparée:

<form ... > 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="ABC123"> 
<asp:ImageButton runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif"/> 
</form> 

<form ... > 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="ABC456"> 
<asp:ImageButton runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif"/> 
</form> 
+0

Merci pour la réponse.J'ai fondamentalement foiré dans mon explication en ce que je n'ai pas fourni suffisamment de détails. C'est un site SharePoint et quand j'ai essayé d'ajouter une deuxième balise Form (pour créer le premier bouton, j'ai reçu une erreur indiquant que les formulaires imbriqués n'étaient pas supportés dans ASP.NET.) Donc, j'ai tiré le

et le premier bouton a bien fonctionné. – MikeW

+0

Alors, est-ce que ça fonctionne maintenant avec des formes distinctes pour chaque produit? –

+0

asp: ImageButton runat = "serveur" id = "PPImageButton1" PostBackUrl = "https://www.paypal.com/cgi-bin/ webscr "ImageUrl =" https://www.paypal.com/fr_FR/i/btn/btn_buynow_SM.gif "/>

MikeW

0

Ce n'est pas votre bouton qui envoie la valeur - c'est la forme dans laquelle il se trouve, et/ou le code derrière. Pourriez-vous:

  1. Publier le code forme?
  2. Postez le code derrière pour cette page?
1

Ma solution noob pour c'est de couper chacun des buy-it-yourself maintenant boutons et ses champs associés hors de la page aspx, et mettre chaque ensemble dans une page html séparée.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>first button</title> 
</head> 

<body> 
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="paypal"> 
<input type="hidden" value="_s-xclick" name="cmd" /> <input type="hidden" value="???????" name="hosted_button_id" /> 
<table> 
<tbody> 
<tr> 
<td><input type="hidden" value="Member name" name="on0" />Member name</td> 

<td><input maxlength="60" size="30" name="os0" /></td></tr> 
<tr> 
<td><input type="hidden" value="Membership No. (if known)" name="on1" />Membership No. (if known)</td> 
<td><input maxlength="60" size="6" name="os1" /></td></tr></tbody></table> 
<input type="image" alt="PayPal - The safer, easier way to pay online." src="https://www.paypal.com/en_GB/i/btn/btn_cart_LG.gif" name="submit" /> <img height="1" alt="" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1" border="0"/> </form> 

</body> 
</html> 

Au lieu dans la page ASPX où vous avez enlevé le bouton et d'autres champs, insérez un iframe qui pointe vers la page html comme ceci:

<iframe width="600" height="" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="mybuttonpage1.htm"></iframe> 
0

Voici une solution la forme multiple problème lors de l'utilisation de PayPal avec ASP.NET:

http://www.codersbarn.com/post/2008/03/08/Solution-to-ASPNET-Form-PayPal-Problem.aspx

+0

C'est aussi un hack je pense !, les Iframes sont les plus simples et aussi hacky que votre approche (qui m'a coûté des heures de plaisir). –

+0

Substituer le HtmlForm est la bonne façon d'aborder cela. Si vous rencontrez un problème, qu'est-ce que c'est exactement? – IrishChieftain

0

J'ai réussi à le faire fonctionner en supprimant tous les autres conteneurs de boutons du DOM dans jQuery. Ajouter une classe à votre conteneur et ajouter un CssClass au ImageButton, « PayPalImageButtons »

<div> 
    Buy This First Product Below 
</div> 
<div class="ManualPurchase PayPalButtons"> 
    <input type="hidden" name="cmd" value="_s-xclick" /> 
    <input type="hidden" name="hosted_button_id" value="ABC123" /> 
    <asp:ImageButton CssClass="PayPalImageButtons" runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif" /> 
</div> 

<div> 
    Buy This Second Product Below 
</div> 
<div class="ManualPurchase PayPalButtons"> 
    <input type="hidden" name="cmd" value="_s-xclick" /> 
    <input type="hidden" name="hosted_button_id" value="ABC456" /> 
    <asp:ImageButton CssClass="PayPalImageButtons" runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif" /> 
</div> 

et jQuery

<script type="text/javascript"> 
    function pageLoad() { 
     $(".PayPalImageButtons").click(function (e) { 
      $(this).parent().addClass("keep"); 
      $(".PayPalButtons").not(".keep").remove(); 
     }); 
    } 
</script> 

Ma prochaine étape traite de la hauteur des éléments supprimés et peut-être S'il vous plaît attendre dialogue pendant le chargement de la page PayPal

Questions connexes