Sivo 悉见

PHP-PayPal-IPN

匿名 · 更新于 2013/11/5

PHP-PayPal-IPN

PayPal即时付款通知IPN)PHP 5

使用您的PHP脚本的ipnlistener IPN类来处理数据的编码贝宝和解析响应从PayPal

特征

  • 在生存与通过设置 use_sandbox  产权沙盘开关
  • 通过设置 use_ssl  属性支持安全的SSL和普通的HTTP交易(SSL推荐)
  • 通过设置 use_curl  属性支持两个卷曲和fsockopen网络库(卷曲推荐)
  • 验证一个HTTP响应状态代码“200PayPal服务器
  • 得到详细的文本文件报告整个IPN使用用于电子邮件和日志管理 gettextreport()  方法
  • 区分代码或服务器配置与无效的IPN的反应之间的各种异常的常见错误

开始

本代码是用于Web开发者。你应该了解IPN工艺厂在概念上和你应该理解何时以及为什么你会利用IPN。阅读 贝宝即时付款通知指导  是一个好的开始

你也应该测试买方的帐户有 贝宝Sandbox帐户 和测试卖方账户。登录到您的帐户沙盒IPN模拟器在“测试工具”菜单中可以用来测试你的IPN的听众

一旦你有你的沙盒帐号设置,您只需创建一个PHP脚本,将你的IPN的听众。在这个脚本,使用如下所示的 ipnlistener() 类。一个更彻底的记录的例子在 子/ IPN看PHP本。 源代码中。

 

<?php

include('ipnlistener.php');

$listener = new IpnListener();
$listener->use_sandbox = true;

try {
    $verified = $listener->processIpn();
} catch (Exception $e) {
    // fatal error trying to process IPN.
    exit(0);
}

if ($verified) {
    // IPN response was "VERIFIED"
} else {
    // IPN response was "INVALID"
}

?>

文档

文件尚未产生,但是,有phpDocumentor文档字符串(评论)风格在 ipnlistener。PHP 解释重要的公共属性和方法。

我也写在我的博客更深入的互穿网络教程: PayPal IPN with PHP

已知问题

问题

 processipn()  方法抛出以下例外:

cURL error: [52] GnuTLS recv error (-9): A TLS packet with unexpected length was received.

解决方案

当cURL是gnutls调用贝宝将如果SSL版本是没有显式设置为卷曲选项编译失败。设置 force_ssl_v3  属性使用SSL 3:

$listener = new IpnListener();
$listener->force_ssl_v3 = true;

注:forcessl_v3现在是真正default_

问题

 PHP Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION 
 cannot be activated when in safe_mode or an open_basedir is set in ...

解决方案

如果你需要PHP的安全模式您可以禁用curlopt_followlocation使用 follow_locationproperty

$listener = new IpnListener();
$listener->follow_location = false;

注:followlocation现在启用default_

例报告

这是一份由 gettextreport() 方法返回一个例子。通过扩展 ipnlistener() 访问数据直接在您的互穿网络脚本创建你自己的报告。

--------------------------------------------------------------------------------
[09/09/2011 8:35 AM] - https://www.sandbox.paypal.com/cgi-bin/webscr (curl)
--------------------------------------------------------------------------------
HTTP/1.1 200 OK
Date: Fri, 09 Sep 2011 13:35:39 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=Ch-NORlHUjlmbEm__KG9LupR4mfMfQTkx1QQ6hHDyc0RImWr88NY_ILeICENiwtVX3iw4jEnT1-1gccYjQafWrQCkDmiykNT8TeDUg7R7L0D9bQm47PTG8MafmrpyrUAxQfst0%7c_jG1ZL6CffJgwrC-stQeqni04tKaYSIZqyqhFU7tKnV520wiYOw0hwk5Ehrh3hLDvBxkpm%7cYTFdl0w0YpEqxu0D1jDTVTlEGXlmLs4wob2Glu9htpZkFV9O2aCyfQ4CvA2kLJmlI6YiXm%7c1315575340; domain=.paypal.com; path=/; Secure; HttpOnly
Set-Cookie: cookie_check=yes; expires=Mon, 06-Sep-2021 13:35:40 GMT; domain=.paypal.com; path=/; Secure; HttpOnly
Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly
Set-Cookie: navlns=0.0; expires=Thu, 04-Sep-2031 13:35:40 GMT; domain=.paypal.com; path=/; Secure; HttpOnly
Set-Cookie: Apache=10.72.109.11.1315575339707456; path=/; expires=Sun, 01-Sep-41 13:35:39 GMT
X-Cnection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

VERIFIED
--------------------------------------------------------------------------------
test_ipn                 1
payment_type             instant
payment_date             06:34:51 Sep 09, 2011 PDT
payment_status           Completed
address_status           confirmed
payer_status             verified
first_name               John
last_name                Smith
payer_email              buyer@paypalsandbox.com
payer_id                 TESTBUYERID01
address_name             John Smith
address_country          United States
address_country_code     US
address_zip              95131
address_state            CA
address_city             San Jose
address_street           123, any street
business                 seller@paypalsandbox.com
receiver_email           seller@paypalsandbox.com
receiver_id              TESTSELLERID1
residence_country        US
item_name                something
item_number              AK-1234
quantity                 1
shipping                 3.04
tax                      2.02
mc_currency              USD
mc_fee                   0.44
mc_gross                 12.34
mc_gross_1               9.34
txn_type                 web_accept
txn_id                   51991334
notify_version           2.1
custom                   xyz123
charset                  windows-1252
verify_sign              Ah5rOpfPGo5g6FNg95DMPybP51J5AUEdXS1hqyRAP6WYYwaixKNDgQRR