干杯,
我将Paypal购物车集成到我的ASP.NET C#项目时遇到问题。 问题是Paypal购物车在FORM标签内,所以如果我把它放在我的服务器表单标签内,它将无法工作。
看起来像这样:
<body>
<form id="form1" runat="server">
<form target="_self" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="MySecretEmail@hidden.com">
<input type="hidden" name="display" value="1">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_viewcart_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
</form>
</body>
有什么方法可以阻止这种情况发生吗?我在google上搜索,在Stackoverflow上我找到了这个链接:PayPal Name-Value Pair API Basics,但老实说,这对我来说没有任何意义,因为我不是程序员。
谢谢!
答案 0 :(得分:10)
解决此问题的最简单方法是使用asp:按钮的PostBackUrl属性。使用此方法,ASP生成您的JavaScript以处理外部帖子。
这样可以正确地呈现表单,并且不需要任何解决方法。请记住,由于您的代码已经在表单标记中,因此您的PayPal项目不需要包含在额外标记中。
e.g。
<input type='hidden' name='cmd' value='_cart'/>
<input type='hidden' name='upload' value='1'/>
<input type='hidden' name='business' value='business@business.com'/>
<input type='hidden' name='currency_code' value='aud'/>
<input type='hidden' name='item_number_1' value='item number_1'>
<input type='hidden' name='item_name_1' value='16x16 inch square canvas'>
<input type='hidden' name='amount_1' value='70'>
<input type='hidden' name='item_number_2' value='item number_2'>
<input type='hidden' name='item_name_2' value=' 48x20 rectangular canvas'>
<input type='hidden' name='amount_2' value='104'>
<asp:Button ID="Button1" PostBackUrl='https://www.paypal.com/cgi-bin/webscr' runat="server" />
希望这有帮助。
答案 1 :(得分:1)
从技术上讲,您的示例不是有效的HTML。从长远来看,您可能最好重构此代码以消除您的“技术债务”。 (请参阅W3C site对于XHTML 1.0的元素禁止下的“不得包含其他表单元素”)
与此同时,您可以尝试使用jQuery
提交嵌套表单。
<button class="submit-button" id="submit-button">Submit Payment</button>
<form id="nested-form" target="_self" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<script type="text/javascript">
$('#submit-button').live('click',function() {
$('#nested-form').submit();
});
</script>
我没有机会测试这个,所以请测试并告诉我它是否适合您。
答案 2 :(得分:1)
这是一种非常简单的方法。这是我独家使用的,所以我100%确定它知道它有效。
当用户点击false按钮时,onclick方法会调用一个只执行两项操作的javascript函数... a)将span显示更改为内联,b)自动点击真实的PayPal按钮。
<form id="form1" runat="server">
<!-- Here's the image only "false" paypal button -->
<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!"
onclick="javascript:doPPform();" />
</form> <!-- this closes your asp.net form -->
<!-- Here's the hidden span with the real paypal button
at the bottom of your webpage -->
<span id="ppform" style="display: none;">
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"
target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="xxxxx">
<input id="ppsubmit" 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>
</span>
<!-- Here's the 2 line javascript code when the user clicks the "false" button -->
<script language="javascript" type="text/javascript">
function doPPform() {
document.getElementById("ppform").style.display = "inline";
document.getElementById("ppsubmit").click();
}
</script>
答案 3 :(得分:0)
快速解决方案是将paypal表单放在iframe
中。
在表单元素上,更改target="_parent"
,使其回发到父页面。
答案 4 :(得分:0)
为什么不在付款表格中使用已删除标签的MasterPage。我在所有网站上都这样做,它没有问题。
答案 5 :(得分:-1)
在我发现它是一个ASP.NET问题之前,我发现了PayPal按钮问题。 在创建按钮和添加到我的页面的过程中,有时他们会工作,有时他们不会。然后我将有2个相同的按钮,第二个将工作,第一个不会。删除第一个,然后删除工作的按钮。如果我在PayPal按钮之前添加了一个表单标签,Paypal按钮就可以正常运行。
<%-- simple form tag --%>
<form action="">
</form>
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="hughet_1335403121_biz@yahoo.com">
<input type="hidden" name="lc" value="US">
<input id="iptItemName" type="hidden" name="item_name" value="testBuyNow">
<input type="hidden" name="amount" value="10.00">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="button_subtype" value="products">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="cn" value="Add special instructions to the seller">
<input type="hidden" name="no_shipping" value="2">
<input type="hidden" name="bn"
value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted">
<input type="image"
src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_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>
我理解这是一个“破解修复”,我不知道为什么会这样。好奇,如果这适用于其他人。