1.设定返回的地址
目标:登录paypal-->用户信息-->我的销售工具-->即时付款通知-->编辑并填写url
填写的URL必须为公网的,不能为局域网,要不就无法接收到paypal发送的信息
2.编写IPN.jsp (此代码为官方代码)
//从 PayPal 出读取 POST 信息同时添加变量„cmd‟ Enumeration en = request.getParameterNames(); String str = "cmd=_notify-validate"; while (en.hasMoreElements()) { String paramName = (String) en.nextElement(); String paramValue = request.getParameter(paramName); str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue, "utf-8"); //此处的编码一定要和自己的网站编码一致,不然会出现乱码,paypal回复的通知为‘INVALID’ } System.out.println("paypal传递过来的交易信息:" + str); //建议在此将接受到的信息 str 记录到日志文件中以确认是否收到 IPN 信息 //将信息 POST 回给 PayPal 进行验证 //设置 HTTP 的头信息 //在 Sandbox 情况下,设置: URL u = new URL("https://www.sandbox.paypal.com/cgi-bin/webscr"); //正式环境 // URL u = new URL("https://www.paypal.com/cgi-bin/webscr"); URLConnection uc = u.openConnection(); uc.setDoOutput(true); uc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); PrintWriter pw = new PrintWriter(uc.getOutputStream()); pw.println(str); pw.close(); //接受 PayPal 对 IPN 回发的回复信息 BufferedReader in = new BufferedReader(new InputStreamReader( uc.getInputStream())); String res = in.readLine(); in.close(); //将 POST 信息分配给本地变量,可以根据您的需要添加 //该付款明细所有变量可参考: //https://www.paypal.com/IntegrationCenter/ic_ipn-pdt-variable-reference.html String itemName = request.getParameter("item_name");//商品名 String itemNumber = request.getParameter("item_number");//购买数量 String paymentStatus = request.getParameter("payment_status");//交易状态 String paymentDate = request.getParameter("payment_date");//交易时间 String paymentAmount = request.getParameter("mc_gross");//交易钱数 String paymentCurrency = request.getParameter("mc_currency");//货币种类 String txnId = request.getParameter("txn_id");//交易id String receiverEmail = request.getParameter("receiver_email");//收款人email String payerEmail = request.getParameter("payer_email");//付款人email if (res == null || res == "") res = "0"; //… //获取 PayPal 对回发信息的回复信息,判断刚才的通知是否为 PayPal 发出的 if (res.equals("VERIFIED")) { //检查付款状态 //检查 txn_id 是否已经处理过 //检查 receiver_email 是否是您的 PayPal 账户中的 EMAIL 地址 //检查付款金额和货币单位是否正确 //处理其他数据,包括写数据库 } else if (res.equals("INVALID")) { //非法信息,可以将此记录到您的日志文件中以备调查 } else { //处理其他错误 }
注意:paypal回复的通知为'VERIFIED',也不一定代表此次交易成功,要判断是否交易成功通过下面语句,判断交易状态是否成功。
String paymentStatus = request.getParameter("payment_status");//交易状态 Completed 代表交易成功
相关推荐
Paypal IPN 循环付款能获取的 成功付款的一些参数 和取消循环付款的一些参数,简单明了。
paypal新的ipn返回接口 代码 加文档 中文paypal支付 ipn 返回接口处理代码和文档
08年做的,没积分了,拿出来共享 里面的代码只要替换成你的就可以了。
paypal-ipn-listener, 用于PHP的PayPal IPN ( 即时付款通知) 监听器 PayPal 用于PHP的PayPal IPN ( 即时付款通知) 监听器索引先决条件安装工具体系结构插件使用情况扩展注释 PHP> =5.6.0对PayPal即时支付通知系统...
谓paypal ipn,就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。
paypal 网络支付接口,可以实现通过网络自动付款,等功能.
PayPal即时付款通知IPN-商户集成指南 paypal在线支付
PHP-PayPal-IPN, 用于侦听和处理即时付款通知( IPN )的PHP 5类 PHP-PayPal-IPN一个用于 PHP 5的贝宝即时付款通知( IPN ) 类。在 PHP IPN脚本中使用 IpnListener 类处理发布数据。回发到贝宝,以及从PayPal解析响应。...
节点-paypal-ipn 用于侦听 Paypal IPN(即时付款通知)并验证消息的 NodeJS 示例代码。 有关 API 的更多信息,请参阅 如何安装 npm install 怎么跑 sudo npm start 我们为这个监听器使用了 80 端口,因此需要 ...
Paypal-ipn-SDK 简单的 PayPal IPN(更新)
Laravel开发-paypal-ipn-laravel Laravel的Paypal IPN客户端。
#####Useful开始创建一个新的 IPN 对象并传递一个包含 IPN 所需基本信息的数组,例如您的 PayPal 接收电子邮件和您想要使用的货币。 $ ipn = new \ PayPal \ IPN ( array ( "business" => "roger@github.com" , ...
Yii2 PayPal IPN 这是一个简单的PayPal IPN侦听器,不需要其他文件。 安装 安装此扩展的首选方法是通过 。 无论运行 php composer.phar require --prefer-source "c006/yii2-paypal-ipn" "dev-master" 或添加 ...
Symfony2 PayPal IPN捆绑 概述 是一个Symfony2软件包,用于使用PayPal IPN(即时付款通知)服务。 该捆绑包充当PayPal IPN服务的侦听器,并使用Doctrine将传入的订单记录到您的数据库中。 发送订单确认电子邮件也很...
用于php paypal 的类 可以跳转到 paypay 支付 最重要的是里面的ipn信息 记录的交易的详细内容
clojure-paypal-ipn Clojure 的 PayPal IPN 处理程序。 与 ring、compojure 或任何 clojure 服务器环境一起使用。 将此添加到您的:dependencies在 project.clj [clojure-paypal-ipn " 0.0.1-SNAPSHOT " ]与戒指 / ...
PayPal即时付款通知指南(IPN)
任务阅读 PayPal Sandbox 的 IPN HTTP 请求解析请求如下: 贝宝 ID 传输PayPal服务器或沙箱的标识启动一个异步进程来执行 SSL HTTP 确认返回传输 PayPal 框。 在启动过程中: 成功完成后,将请求转发到 Hedgeye 应用...
Android的ShippmentPal应用程序是一个跟踪号条形码扫描仪,用于处理通过PayPal处理的客户订单。 它是ShippmentPal PHP...通过PayPal IPN自动化您的网站订购过程,自动创建运输标签,购买后通过电子邮件自动通知客户,