【发布时间】:2017-10-31 04:38:15
【问题描述】:
我将以下表格发送到 PayPal
<form name="myForm" method="POST" action="https://www.sandbox.paypal.com/cgi-bin/webscr" >
<input type="hidden" name="cmd" value="_cart"/>
<input type="hidden" name="business" value="myemail@myDomain.com"/>
<input type="hidden" name="item_name_1" value="Product 1"/>
<input type="hidden" name="amount_1" value="500.00"/>
<input type="hidden" name="quantity_1" value="1"/>
<input type="hidden" name="upload" value="1"/>
<input type="hidden" name="currency_code" value="GBP"/>
<input type="hidden" name="return" value="http://XX/paypal/completed.aspx"/>
<input type="hidden" name="rm" value="2"/>
<input type="hidden" name="cancel_return" value="http://XX/paypal/Cancel.aspx"/>
<input type="hidden" name="shopping_url" value="http://XX/paypal/MyShop"/>
<input type="hidden" name="notify_url" value="http://XX/paypal/MyShop/checkout.aspx"/>
<input type="hidden" name="lc" value="GB"/>
<input type="hidden" name="image_url" value="http://XX/paypal/shop.gif"/>
<input type="hidden" name="no_note" value="1"/>
<input type="hidden" name="invoice" value="ZZZ1234567890"/>
<script type="text/javascript">document.myForm.submit();</script></form>
我可以使用沙盒帐户(买家和卖家)成功付款。 我设置了 IPN 来接收消息,输入一个可以从我的网络外部访问的公共 URL。
每次我付款时,我都看不到任何交易历史记录?我是否需要在上面或使用我的 Paypal 帐户添加任何其他配置? - 我正在查看的网址是:
https://www.sandbox.paypal.com/uk/cgi-bin/webscr?cmd=_display-ipns-history
我通过启用 AutoReturn 来设置它,因为我需要交易数据来使用来自 paypal 的响应更新我的数据库。
我将与 notify_url 相同的 URL 添加到返回 URL,并启用支付数据传输。我注意到了身份令牌,但到目前为止不需要使用它....
下面是我处理响应的 C# 代码
try
{
string strRequest = string.Empty;
string strLive = "https://www.sandbox.paypal.com/cgi-bin/webscr";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strLive);
req.KeepAlive = false;
req.ReadWriteTimeout = 600000;
req.Timeout = 600000;
//Set values for the request back
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
strRequest = Encoding.ASCII.GetString(param);
strRequest += "&cmd=_notify-validate";
req.ContentLength = System.Text.Encoding.UTF8.GetByteCount(strRequest);
//Send the request to PayPal and get the response
Stream RequestStream = req.GetRequestStream();
StreamWriter streamOut = new StreamWriter(RequestStream, System.Text.Encoding.UTF8);
RequestStream.ReadTimeout = 600000;
RequestStream.WriteTimeout = 600000;
streamOut.Write(strRequest);
streamOut.Close();
}
catch (Exception ex)
{
.....
}
但我不需要身份令牌来验证任何东西?所以我有点想知道我已经正确地保护了这一点,并且我不需要添加额外的检查来确保处理响应的页面不能被轻易操纵?
我知道我没有发布实际处理数据库记录的代码,但我正在检查表单和来自 Paypal 的响应是否有任何我应该根据这些字段进行检查。
【问题讨论】:
-
你能提供一个交易ID吗?有什么东西我可以在我这边查看一下,看看发生了什么?
-
是的,明白了。谢谢。
标签: c# asp.net paypal paypal-sandbox paypal-ipn