1
當我通過信用卡在PayPal沙箱上進行支付時,我在地址1 /地址2文本字段中填入一些特殊字符(例如:@ @ @ @%^ )。 付款後,我收到一封IPN郵件,發回PP並收到INVALID消息(HTTP錯誤200)。PayPal IPN INVALID消息當有特殊字符時
我在PP上的配置文件/語言上設置了UTF-8。但問題仍然存在。
備註:如果我使用PP帳戶付款(表示登錄並單擊付款按鈕),付款過程將正常工作。
當我通過信用卡在PayPal沙箱上進行支付時,我在地址1 /地址2文本字段中填入一些特殊字符(例如:@ @ @ @%^ )。 付款後,我收到一封IPN郵件,發回PP並收到INVALID消息(HTTP錯誤200)。PayPal IPN INVALID消息當有特殊字符時
我在PP上的配置文件/語言上設置了UTF-8。但問題仍然存在。
備註:如果我使用PP帳戶付款(表示登錄並單擊付款按鈕),付款過程將正常工作。
您必須謹慎向PayPal發送您在IPN呼叫中收到的確切數據,但cmd
參數的顯着例外必須設置爲_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
}
雖然這個問題很老,但它確實幫助了我。它甚至允許我避免必須處理字符編碼問題!那謝謝啦! :) – Abs 2013-01-13 16:00:48
很高興幫助:) – Benjamin 2013-01-13 16:18:12