2014-03-26 3 views
0

내 .aspx 페이지에서 페이팔 지불을 구현하려고합니다. 나는 내 페이지에 다음과 같은 HTML을 가지고있다 :ASP.NET 페이지의 POST 양식

<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
    <input type="hidden" name="cmd" value="_xclick"> 
    <input type="hidden" name="hosted_button_id" value="19218"> 
    <input type="hidden" name="rm" value="2"> 
    <input type="hidden" name="business" value="<%= ConfigurationManager.AppSettings("BusinessEmail").ToString%>"> 
    <input type="hidden" name="item_name" value="<%= "CityBits Gold " & listplans.SelectedItem.ToString & " listing plan for " & trim(txttitle.text)%>"> 
    <input type="hidden" name="item_number" value="<%= HiddenFieldid.Value%>"> 
    <input type="hidden" name="amount" value="<%= listplans.SelectedValue%>"> 
    <input type="hidden" name="currency_code" value="EUR"> 
    <input type="hidden" name="return" value="<%= ConfigurationManager.AppSettings("ReturnUrl").ToString & "?requestID=" & HiddenFieldid.Value%>"> 
    <input type="hidden" name="cancel_return" value="<%= ConfigurationManager.AppSettings("CancelUrl").ToString%>"> 
    <input type="hidden" name="no_shipping" value="1"> 
    <input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_cart_LG.gif" border="0" name="submit" alt=""> 
    <img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

내 aspx 페이지에서 페이팔 버튼을 클릭하면 페이지가 새로 고쳐진다. 평범한 html 파일에 정확히 동일한 코드 (실제 값이있는)를 넣고 버튼을 클릭하면 원하는대로 페이팔로 리디렉션됩니다. html 페이지와 마찬가지로 입력 값에 실제 값을 사용하려했지만 여전히 작동하지 않습니다.

내 페이지에 업데이트 패널이 있지만이 양식이 내부에 없습니다.

누구나 내가 뭘 잘못하고 있는지 알 수 있습니까? 그것은 어리석은 무엇인가일지도 모른다. 그러나 이것은 2 일 동안 나에게 두통을 지금주고있다!

+0

빠른 해킹 : 장소 시작에 가까운 형태 ->'= "페이팔"<폼 목표는 ....'거기 asp.net 양식을 닫습니다. 바라건대 버튼처럼 다른 asp.net elemets가 없기를 바랍니다. – Aristos

+0

@Aristos 사실 저는이 페이지에서 masterpage를 사용하고 있습니다. 그래서 처음부터 폼을 닫을 수는 없습니다. 그 후에 다른 asp.net 요소가 있습니다. – user2916280

답변

1

여기에서 문제는 ASP.NET 페이지의 작동 방식입니다. ASP.NET은 항상 페이지에서 하나의 큰 폼만 사용하고 두 번째 폼을 소개 할 때 다양한 트릭을 수행하기 시작합니다.

그러나 귀하의 경우에 사용할 수있는 것은 Button 컨트롤과 PostBackUrl 속성입니다. 이 게시물을 모든 매개 변수를 수집하고 수행하는, 제대로 내면의 양식을 처리합니다 :

<form target="paypal"> 
    ... 
    <asp:ImageButton runat="server" ID="PayPalSubmit" 
        PostBackUrl="https://www.paypal.com/cgi-bin/webscr" 
        ImageUrl="https://www.sandbox.paypal.com/en_US/i/btn/btn_cart_LG.gif" /> 
</form> 
+0

나는 실제로 이것을 (미안하지만 말하지 않아도) 시험해 보았습니다. 그러나 페이팔로 리다이렉트되었을 때 어떤 이유로이 메시지가 나타납니다. 현재 귀하의 요청을 처리 할 수 ​​없습니다. [email protected]으로 돌아가서 다른 옵션을 시도하십시오. – user2916280

+0

@ user2916280, ASP.NET 문제와 유사하지 않습니다. 피들러 또는 방화 광구를 사용하여 요청을 검사 한 다음 PayPal 문서를 참조하여 요청이 PayPal이 기대하는 것과 일치하는지 확인하십시오 – Andrei

0

이것은 ASP.NET 양식으로 잘 알려진 문제입니다 페이팔에 데이터를 게시 할 때.

http://jerschneid.blogspot.com/2007/03/hide-form-tag-but-leave-content.html

그리고 여기가 HtmlForm의 사용자 지정 버전을 사용 제레미 슈나이더의 생각에 확장이 개인 블로그 게시물은 다음과 같습니다 : 여기가 전자 상거래 웹 양식 애플리케이션을위한 모든 시간을 사용하는 정말 멋진 솔루션입니다

http://codersbarn.com/post/2008/03/27/Integrate-PayPal-Checkout-Button-with-ASPNET-20.aspx

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

멀리, 자바 스크립트 및 기타 해킹을 두 번 폼 태그를 사용에서있어.

using System; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 

/// <summary> 
/// This is a special form that can _not_ render the actual form tag, but always render the contents 
/// </summary> 
public class GhostForm : System.Web.UI.HtmlControls.HtmlForm 
{ 
    protected bool _render; 

    public bool RenderFormTag 
    { 
     get { return _render; } 
     set { _render = value; } 
    } 

    public GhostForm() 
    { 
     //By default, show the form tag 
     _render = true; 
    } 

    protected override void RenderBeginTag(HtmlTextWriter writer) 
    { 
     //Only render the tag when _render is set to true 
     if (_render) 
      base.RenderBeginTag(writer); 
    } 

    protected override void RenderEndTag(HtmlTextWriter writer) 
    { 
     //Only render the tag when _render is set to true 
     if (_render) 
      base.RenderEndTag(writer); 
    } 
}