php - Paypal IPN INVALID 消息 当有特殊字符时

标签 php paypal special-characters paypal-ipn

当我在 paypal 沙盒上使用信用卡付款时,我在地址 1/地址 2 文本字段中填写了一些特殊字符(例如:!@#@%^&)。 付款后,我收到一条 IPN 消息,回传到 PP 并收到一条 INVALID 消息(HTTP 错误 200)。

我在 PP 的配置文件/语言上设置了 UTF-8。但问题依然存在。

备注:如果我使用PP账户付款(即登录并点击付款按钮),付款过程是可以正常进行的。

最佳答案

您必须小心地将您在 IPN 调用中收到的确切数据发送到 Paypal,cmd 参数明显异常(exception),该参数必须设置为 _notify-validate

下面是一些 PHP 代码,它获取原始 POST 数据,将其解析为数组,更改 cmd 参数,将其转换回 POST 数据,并将其发送到 Paypal。获取原始 POST 数据允许绕过 PHP 的内置解析,这可能会应用一些困惑的东西,例如魔术引号,具体取决于您的配置。

$post = file_get_contents('php://input');
parse_str($post, $data);
$data['cmd'] = '_notify-validate';
$post = http_build_query($data);

$ch = curl_init('https://www.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

$result = curl_exec($ch);
curl_close($ch);

if ($result == 'VERIFIED') {
    // process the payment
}

关于php - Paypal IPN INVALID 消息 当有特殊字符时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6212592/

相关文章:

java - 获取参数特殊字符

java - 带有特殊字符 '+' 的 RequestParam

php - 表名在 MySQL 中显示语法错误

asp.net-mvc - 如何使用 PayPal 添加 "donate"按钮

paypal - 添加数量到 paypal 立即购买按钮

paypal - 是否可以使用带有快速结账功能的定期付款资料?

javascript - 引用错误 : array is not defined

javascript - 使用 AJAX 和联系表单来消除页面重新加载

php - 使用 PHP 和 Regex 提取 Paypal 按钮 ID

hive - 无法删除包含特殊字符等号(=)的hive表分区