PHP开发详解:PayPal Instant Payment Notification (IPN) - Ethan - s Blog, кэшбэк ipn
PHP开发详解:PayPal Instant Payment Notification (IPN)
上次在 PHP开发详解:PayPal Payment Data Transfer(PDT) 一文中介绍了网站集成Paypal付款功能并如何将付款数据返回,能够使得用户在付款完成后继续回到网站上来,并将付款信息告知用户。但是PayPal Payment Data Transfer这样的数据返回方式是不保险的,特别是对于用户完成付款后还需要进行后续业务处理,如标注订单为已付款以及减去商品库存等。用户有可能在付款完成后还没跳转到自己网站就已经关闭了页面,而我们的交易数据和业务处理都必须通过访问付款完成后的ReturnURL来得到展示与处理。为了获得更加保险的业务处理,我们在集成使用Paypal付款功能时需要按需使用PayPal Instant Payment Notification (IPN)。
Instant Payment Notification (IPN) is a message service that notifies you of events related to PayPal transactions. You can use IPN messages to automate back-office and administrative functions, such as fulfilling orders, tracking customers, and providing status and other transaction-related information.
同样,在我根据网上部分代码和PayPal开发文档开发使用此功能时,遇到了诸多麻烦,不过经过一些时间的探索,也最终实现了 PayPal Instant Payment Notification (IPN) 的集成使用,我也将自己的探究过程和实现方法记录下来,方便读者。如果你在测试或开发中与任何问题或想法欢迎留言交流。
一、PayPal Instant Payment Notification 的工作流程和原理
顾客在接入了PayPal的应用上通过某种方式成功付款。 PayPal通过HTTP POST的方式向你的 listener 发送这次交易的数据和通知。 listener 接收数据并返回一个空的HTTP 200响应。 listener 将接收到的通知数据完整的通过HTTP POST的方式返回给PayPal用于验证。 PayPal根据接收到的信息进行验证,验证通过返回VERIFIED,否则返回INVALID。
二、申请PayPal开发者账号
这在前面文章介绍 PayPal Payment Data Transfer(PDT) 已经有了详细的说明,在此不再赘述。
三、为商家账号启用IPN功能
为了使用PayPal的 PayPal Instant Payment Notification,必须启用商家账户的实即时付款通知,并设置好的通告URL。
四、建立一个“立即付款”按钮并集成到自己的应用
这也在前面文章介绍 PayPal Payment Data Transfer(PDT) 已经有了详细的说明,同样不再赘述。
五、获取IPN发送过来的交易数据
在我们的 listener 页面,该做的第一件事便是获取PayPal发送过来的数据,PayPal使用POST的方式发送数据,我们只需要简单一句代码获取POST数据即可:
$ipn_post_data = $_POST;
在获取到数据的同时,实际上 listener 已经自动给PayPal返回了HTTP 200的状态码。
六、向PayPal验证交易数据
在这段代码的最开始设置了对test_ipn字段的检测,用于区分测试环境和真实的生产环境,能够方便的应用于测试或者真实生产环境。此外,代码中的CURLOPT_CAINFO => ‘cacert. pem’,这个证书文件可以前往 http://curl. haxx. se/docs/caextract. html 进行下载。
八、在正式生产环境中使用PayPal Instant Payment Notification
经过前面的步骤后,我们已经将使用 PayPal Instant Payment Notification 的流程和部分关键代码弄清楚,在开发测试中,首先在sandbox中测试通过,然后就可以应用到真实的生产环境了。在真实的生产环境中使用 PayPal Instant Payment Notification 和我们前文所述方法步骤完全一致。
前文已经详细介绍了PayPal Instant Payment Notification的PHP开发步骤,中间夹带了部分重要代码片段,由于前面的代码比较分散,为方便大家参考,这里也提供一份示例代码,你可以访问这里来获取代码。
至此,PayPal Instant Payment Notification 的PHP开发详解已经介绍完毕,希望大家看过有所收获。如果你在阅读过程中发现错误或者对文章有任何观点欢迎留言讨论。最后,此篇文章的形成离不开我在探索过程中所参阅的各种网络资料,对它们的作者表示感谢!
Комментарии
Отправить комментарий