【Paypal】即时付款通知IPN六级分数计算器
什么是即时付款通知IPN
当您收到新的付款交易或者已发⽣的付款交易的状态发⽣变化时,PayPal都将异步(即不作为⽹站付款流程的⼀部分)发送付款详细数据到您所指定的URL,以便您了解买家付款的具体情况并做出相应的响应。这个过程我们称作即时付款通知(简称 IPN)。⽰意图如下:
图 1 IPN通知⽰意图
• 客户点击“付款”按钮向您的账户付款;
• PayPal接受到客户的付款后,向您的服务器指定的URL通过POST⽅式发送IPN;
• 在您的服务器收到IPN之后,您必须将收到的POST信息对原样返回给PayPal进⾏验证,PayPal通过此⽅法帮您防范欺骗或“中间⼈”攻击;(对IPN信息的验证过程我们称之为通知确认);
• PayPal返回验证信息,通过验证为VERIFIED,不通过则为INVALD;
• 根据验证信息处理付款明细;
注:每次付款您可能收到多个IPN信息,⼀般来说直到收到IPN信息中的付款状态为Completed为⽌。
IPN数据包含了整个付款过程的详细信息,通过获取并分析它您可以:
• ⾃定义⽹站对客户购物进⾏实时回复:您可以以email或其他⽅式通知客户付款的状态;
share with u>奥巴马和平奖
• ⾃动履⾏相关操作:当收到IPN数据并确认付款状态已经完成后,您就可以⽴刻启动向买家发货的流程,也可以为买家进⾏虚拟货币的充值或者以某种⽅式将虚拟商品的卡号和密码发送给买家;
• 记录交易信息到您的数据库中;火影忍者日语
如何启⽤IPN?
启⽤IPN有两种⽅法:
⼀种是在您的PayPal账户⾥进⾏全局设置,设置⽅法如下:
• 登录到您的PayPal帐户,点击“Profile”;
• 点击右边列表栏中“Instant payment Notification Preferences”打开即时付款通知习惯设定页⾯;
• 按“编辑”按钮后打开如6-1所⽰页⾯;
• 输⼊⽤于接收IPN的通告URL并在选中图中所⽰的勾选框;
图 6-1 即时付款通知习惯设定
另⼀种是在每笔交易的付款按钮中通过定义变量notify_url来进⾏设定,⽰例如下:
<input type="hidden" name="notify_url" value="/ipn.script">
注:
• 上⾯的通告URL和notify_url就是PayPal向您发送IPN数据的URL;这个URL是您的后台处理程序,只⽤于处理从 PayPal处接受到的IPN信息,您可以将这些信息写⼊数据库,也可以写⽂件,但是不能通过浏览器⽅式显⽰给您的客户看;课外辅导班
• 如果您希望在不同的URL接收IPN(例如:在您需要区分对您各个不同⽹站的付款时),请使⽤变量notify_url 。对于每笔付款,PayPal会保存特定付款的notify_url的值,对该笔付款的任何后续更新都将发送到此notify_url;
• 如果您在付款按钮中没有设定变量notify_url,则将使⽤您⽤户信息中设置的URL;否则它将覆盖您⽤户信息中设置的URL⽽采⽤变量notify_url中设置的值;
变量列表
donghang完整的IPN变量列表,请访问。
代码⽣成器
<提供了⼀个,你可以根据你的编程语⾔选择。
其他资源
订单管理集成指南(,2.7MB)
PayPal开发者论坛中。
关于验证
bool VerifyIPN()birth是什么意思
{
四舍五入英文string strFormValues = Request.Form.ToString();
string strNewValue;
string strRespon;
string rverURL = "www./cgi-bin/webscr";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(rverURL);
req.Method = "POST";
jungle是什么意思req.ContentType = "application/x-www-form-urlencoded";
strNewValue = strFormValues + "&cmd=_notify-validate";
req.ContentLength = strNewValue.Length;
StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(strNewValue);
stOut.Clo();
StreamReader stIn = new StreamReader(req.GetRespon().GetResponStream());
strRespon = stIn.ReadToEnd();
stIn.Clo();
return strRespon == "VERIFIED";
}
string ppTx = Request.Form["txn_id"].ToString();
string ppStatus = Request.Form["payment_status"].ToString();
string ppDate = Request.Form["payment_date"].ToString();
string ppItem = Request.Form["item_name"].ToString();
公路运输发票string ppPrice = Request.Form["mc_gross"].ToString();
这样,就实现了将⽀付信息传回⽹站的功能。注:当交易状态发⽣改变时,paypal也会返回⼀个ipn,⽐如完成⽀付,退款等等。
介绍⼀下sandbox中IPN测试⼯具,登陆sandbox主帐号,就是你在sandbox上注册的那个,不是那些卖家/买家帐号。
选择Test Tools -> Instant Payment Notification (IPN) Simulator:
输⼊你的ipn接受⽂件地址,选择ipn信息的⽅式,然后会让你填具体信息内容,再点击Send IPN,就能模拟⼀个ipn到你⽹站的页⾯,可以⽤来测试IPN是否正常⼯作。