2013-02-16 127 views
0

我试图创造一个页面:如何使用贝宝IPN

  • 1.用户点击一个名为购买按钮,在那里他需要
  • 2,用户被重定向到PayPal页面登录并付款。

他支付了之后,他会被重定向到另一个页面,在这里:

  • 1.in页面加载,我会检查是否支付成功制造。

我已经这样做了,但它似乎不工作。 我做了什么?

  • 1.从paypal帐户启用IPN并将url设置为asp页面。

    2.Hosted网站

  • 3.Tested但标签上的文字两个文件(PHP/asp.net)没有改变为“完成,付款造”,这意味着他无法处理付款。

购买产品的PHP页面:

<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="[email protected]" /> 

    <input type="hidden" name="item_name" value="Happiness" /> 
    <input type="hidden" name="amount" value="6.52" /> 
    <input type="submit" value="Buy!" /> 

</form> 

的asp.net页面:

protected void Page_Load(object sender, EventArgs e) 
     { 
       string strSandbox = "https://www.sandbox.paypal.com/cgi-bin/webscr"; 
       HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strSandbox); 

       //Set values for the request back 
       req.Method = "POST"; 
       req.ContentType = "application/x-www-form-urlencoded"; 
       byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength); 
       string strRequest = Encoding.ASCII.GetString(param); 
       strRequest += "&cmd=_notify-validate"; 
       req.ContentLength = strRequest.Length; 


       StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); 
       streamOut.Write(strRequest); 
       streamOut.Close(); 
       StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream()); 
       string strResponse = streamIn.ReadToEnd(); 
       streamIn.Close(); 

       if (strResponse == "VERIFIED") 
       { 
        Label1.Text = "Done,payment was made."; 
       } 
       else if (strResponse == "INVALID") 
       { 
        //whatever 
       } 
       else 
       { 
        //whatever 
       } 
} 

我能做些什么?

+1

什么意思是“不工作”? – Aristos 2013-02-16 21:42:15

+0

strResponse验证时不执行代码 – Josi 2013-02-17 19:05:08

+0

我不知道你等待在那里执行什么,因为这是来自pp的自动呼叫,而不是你打电话的页面 - 如果你理解我的意思。如果已验证,这并不意味着付款已完成,您需要检查更多参数。 – Aristos 2013-02-17 20:04:11

回答

0

IPN交易是分批发送的,而且通常在几分钟后发送。您不应该设计用户看到的反映IPN消息状态的页面。在我的系统中,我告诉用户他们的购买已完成,并在PayPal建议清理资金时予以满足,并通过电子邮件通知他们。