`
jsczxy2
  • 浏览: 1270826 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

paypal IPN返回

阅读更多

1.设定返回的地址

目标:登录paypal-->用户信息-->我的销售工具-->即时付款通知-->编辑并填写url

 

填写的URL必须为公网的,不能为局域网,要不就无法接收到paypal发送的信息

 


 2.编写IPN.jsp (此代码为官方代码)

Java代码  收藏代码
  1. //从 PayPal 出读取 POST 信息同时添加变量„cmd‟  
  2.     Enumeration en = request.getParameterNames();  
  3.     String str = "cmd=_notify-validate";  
  4.     while (en.hasMoreElements()) {  
  5.         String paramName = (String) en.nextElement();  
  6.         String paramValue = request.getParameter(paramName);  
  7.         str = str + "&" + paramName + "="  
  8.                 + URLEncoder.encode(paramValue, "utf-8");  
  9.         //此处的编码一定要和自己的网站编码一致,不然会出现乱码,paypal回复的通知为‘INVALID’  
  10.     }  
  11.     System.out.println("paypal传递过来的交易信息:" + str);  
  12.     //建议在此将接受到的信息 str 记录到日志文件中以确认是否收到 IPN 信息  
  13.     //将信息 POST 回给 PayPal 进行验证  
  14.     //设置 HTTP 的头信息  
  15.     //在 Sandbox 情况下,设置:  
  16.     URL u = new URL("https://www.sandbox.paypal.com/cgi-bin/webscr");  
  17.     //正式环境  
  18.     //      URL u = new URL("https://www.paypal.com/cgi-bin/webscr");  
  19.     URLConnection uc = u.openConnection();  
  20.     uc.setDoOutput(true);  
  21.     uc.setRequestProperty("Content-Type",  
  22.             "application/x-www-form-urlencoded");  
  23.     PrintWriter pw = new PrintWriter(uc.getOutputStream());  
  24.     pw.println(str);  
  25.     pw.close();  
  26.     //接受 PayPal 对 IPN 回发的回复信息  
  27.     BufferedReader in = new BufferedReader(new InputStreamReader(  
  28.             uc.getInputStream()));  
  29.     String res = in.readLine();  
  30.     in.close();  
  31.   
  32.     //将 POST 信息分配给本地变量,可以根据您的需要添加  
  33.     //该付款明细所有变量可参考:  
  34.     //https://www.paypal.com/IntegrationCenter/ic_ipn-pdt-variable-reference.html  
  35.     String itemName = request.getParameter("item_name");//商品名  
  36.     String itemNumber = request.getParameter("item_number");//购买数量  
  37.     String paymentStatus = request.getParameter("payment_status");//交易状态  
  38.     String paymentDate = request.getParameter("payment_date");//交易时间  
  39.     String paymentAmount = request.getParameter("mc_gross");//交易钱数  
  40.     String paymentCurrency = request.getParameter("mc_currency");//货币种类  
  41.     String txnId = request.getParameter("txn_id");//交易id  
  42.     String receiverEmail = request.getParameter("receiver_email");//收款人email  
  43.     String payerEmail = request.getParameter("payer_email");//付款人email  
  44.   
  45.     if (res == null || res == "")  
  46.         res = "0";  
  47.     //…  
  48.     //获取 PayPal 对回发信息的回复信息,判断刚才的通知是否为 PayPal 发出的  
  49.     if (res.equals("VERIFIED")) {  
  50.         //检查付款状态  
  51.         //检查 txn_id 是否已经处理过  
  52.         //检查 receiver_email 是否是您的 PayPal 账户中的 EMAIL 地址  
  53.         //检查付款金额和货币单位是否正确  
  54.         //处理其他数据,包括写数据库  
  55.           
  56.     } else if (res.equals("INVALID")) {  
  57.         //非法信息,可以将此记录到您的日志文件中以备调查  
  58.     } else {  
  59.         //处理其他错误  
  60.   
  61.     }  

 注意:paypal回复的通知为'VERIFIED',也不一定代表此次交易成功,要判断是否交易成功通过下面语句,判断交易状态是否成功。

Java代码  收藏代码
  1. String paymentStatus = request.getParameter("payment_status");//交易状态 Completed 代表交易成功  
分享到:
评论

相关推荐

    paypal ipn全攻略asp版.rar

    - 验证通常通过向PayPal发送一个确认请求,包含接收到的IPN信息,PayPal会返回一个确认消息来验证IPN的合法性。 - 如果验证成功,商家服务器可以据此更新订单状态、库存等信息,确保业务流程的顺利进行。 2. ASP...

    paypal Ipn

    - PayPal返回消息的原样副本,商家比较这个副本与收到的消息是否一致。 - 如果一致,说明消息有效;如果不一致,可能是PayPal重新发送,或者存在潜在的安全问题。 4. PHP实现PayPal IPN: - 使用PHP,可以创建一...

    paypal新的ipn返回接口 代码 加文档

    paypal新的ipn返回接口 代码 加文档 中文paypal支付 ipn 返回接口处理代码和文档

    php_paypal.zip_paypal ipn_paypal php

    PayPal IPN(Instant Payment Notification)是PayPal提供的一项重要服务,它允许商家通过自动化的后台处理来实时跟踪和确认交易状态。这个机制对于在线销售业务至关重要,因为它确保了无论用户是否在交易完成后返回...

    PayPal即时付款通知IPN-商户集成指南

    - **步骤3**:商户服务器收到IPN消息后,需将接收到的消息原样返回给PayPal进行验证,以防止欺诈行为。 - **步骤4**:PayPal接收到验证信息后,如果一切正常,则返回“VERIFIED”,否则返回“INVALID”。 - **步骤5*...

    ipn_pdt:非官方测试 PayPal IPN 和 PDT

    **PayPal IPN (Instant Payment Notification) 和 PDT (Payment Data Transfer)** PayPal IPN(即时支付通知)和PDT(支付数据传输)是两种关键的技术,用于在PayPal交易完成后与商家网站进行通信,确保交易状态的...

    Laravel开发-paypal-ipn-laravel

    如果PayPal返回的验证结果失败,或者无法更新订单状态,你应该记录这些错误并采取适当的措施,如发送邮件通知。 7. **测试**:在生产环境部署之前,务必进行充分的测试。可以使用PayPal的模拟IPN工具,或者创建测试...

    paypal 在线支付 api ipn pdt 指南大全 www.fywang.com/bbs

    前几天需要完成一个法国网站的paypal支付,我搜遍了相关的文档,有中文的,但相对来说较少,所以我参看了很多英文文档,终于把paypal的支付形式搞懂了,nvp,pdt,ipn的返回形式。 鉴于网上很多流传的代码缺少必要的...

    paypal_ipn_manager:将 PayPal IPN 通知缓冲到您的业务应用程序的 Elixir 服务器

    任务阅读 PayPal Sandbox 的 IPN HTTP 请求解析请求如下: 贝宝 ID 传输PayPal服务器或沙箱的标识启动一个异步进程来执行 SSL HTTP 确认返回传输 PayPal 框。 在启动过程中: 成功完成后,将请求转发到 Hedgeye 应用...

    Paypal的IPN和PDT变量对照表(中文版)PP_IPN_PDT_Guide_CHN

    ### PayPal的IPN和PDT变量对照表(中文版)详解 #### 一、付款数据传输(PDT) ##### 1.1 什么是PDT? PDT(Payment Data Transfer),即付款数据传输,是PayPal提供的一种服务,允许商家在其网站上安全地获取...

    paypal-octa-ipn:PayPal的IPN广播器,最多支持八个不同的IPN主机。 以WHMCS为例

    贝宝Octa IPN PayPal的IPN广播器,最多支持八个不同的IPN主机。 以WHMCS为例。情况贝宝提供IPN服务,该服务将回调您定义的IPN链接以确认付款。 这是一个幕后过程,客户不会注意到任何事情。 问题在于PayPal仅允许一...

    paypal支付接入php开发文档

    3. PayPal验证IPN数据的真实性,如果验证成功,会返回“VERIFIED”,此时你可以根据这些信息处理订单,例如更新库存或发货状态。 4. 如果返回“INVALID”,则说明可能存在欺诈行为,应谨慎处理这些交易。 在实际的...

    zencart单站paypal账号轮询

    - 错误处理:当PayPal返回错误代码时,需要有适当的错误处理机制,确保订单状态正确更新。 - 安全性:确保所有敏感信息,如API凭证,都安全存储,并在处理支付时使用HTTPS以保护用户数据。 - 事务处理:为了保持数据...

    Asp.net 支付 Paypal 成功案例,,

    4. IPN处理:一旦用户完成支付,PayPal会发送IPN消息到你的IPN验证页面。 5. 验证IPN:验证页面接收到POST数据后,会回发一个确认请求到PayPal,确保数据的有效性和完整性。 6. 更新订单状态:如果IPN消息验证成功,...

    OpenCart中PayPal Payments Standard(Paypal 标准支付方式)设置.

    - **IPN设置**:返回“My Selling Tools”页面,点击“Instant Payment Notification Preferences”(即时支付通知偏好设置),设置为“Enable”,并填写您的网站地址作为“Notification URL”。 #### 三、...

    paypal php支付demo

    3. **重定向用户**:创建支付成功后,PayPal会返回一个批准URL,这个URL用于将用户重定向到PayPal网站进行支付确认。用户可以在PayPal账户中查看商品详情并完成支付。 4. **用户确认支付**:在PayPal上,用户可以...

    PHP程序集成PayPal操作步骤[借鉴].pdf

    如果数据无误,PayPal会返回"VERIFIED",否则返回"INVALID"。"VERIFIED"响应意味着你可以信任这些数据并执行相应的操作,如更新订单状态或发货。 **注册Sandbox账户** 为了进行代码调试,PayPal提供了Sandbox环境,...

Global site tag (gtag.js) - Google Analytics