5 년 이상 다양한 업데이트가있는 PayPal IPN 처리기가 있습니다. 갑자기 어제 나는 정상적인 '&'및 '='분리 된 데이터 문자열을받지 못하게하고 ~ 6 개의 가비지가 아닌 ASCII 문자를 받기 시작했습니다. PayPal IPN가 갑자기 가비지를 받고 있습니다.
I 데이터가 무엇이든, 나는 일반적으로
[2016년 7월 13일 세계 협정시 04시 46분] 원시 데이터 handling_amount = 0.00을 얻을, 처리, 분석, 어떤 확인하기 전에, 페이팔에서 직접 들어오는 로그인
& 할인 = 0.00 & insurance_amount = 0.00 & payer_id = ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ 이제 등
, 난 그냥지고있어이
,536,913,632 10[2016년 7월 13일 세계 협정시 04시 37분] 원시 데이터는 항상 같은 문자 세트,하지만 쓰레기 (만 6 자) 결코
을 xæÕ-.
PayPal 계정의 인코딩을 확인하고 UTF-8로 설정했습니다. 도와주지 않았어. PayPal IPN Simulator를 정확히 동일한 코드 (주소가 샌드 박스로 변경됨)와 함께 사용했으며 완벽하게 작동합니다. 나는 3 개의 별도 IPN을 PayPal의 IPN 기록에서 재발송했습니다. 그들 중 누구도 일하지 않고 모두 동일한 쓰레기 데이터를 만듭니다. $ _POST 및 file_get_contents ('php : // input')를 사용하여 직접 PayPal에서 입력을 처리해 보았습니다. 차이점은 없습니다. 시뮬레이터에서는 모든 것이 작동하며 그냥 라이브에서 나오는 쓰레기입니다.
여기 내 수신기 코드입니다. 온라인상의 다른 곳에서 볼 수있는 예제와 거의 같습니다.
<?php
error_reporting(E_ALL^E_NOTICE);
define("LOG_FILE", "./ipn.log");
$raw_post_data = file_get_contents('php://input');
error_log(date('[Y-m-d H:i e] '). "Raw data " . $raw_post_data . PHP_EOL, 3, LOG_FILE);
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval)
{
$keyval = explode ('=', $keyval);
if (count($keyval) == 2)
$myPost[$keyval[0]] = urldecode($keyval[1]);
}
// Read the post from PayPal and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($myPost as $key => $value)
{
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
$value = urlencode(stripslashes($value));
} else {
$value = urlencode($value);
}
$req .= "&$key=$value";
}
이것은 데이터 수신 및 구문 분석을 보여줍니다. 7 행에서 error_log 호출을 확인하십시오. 이것은 위 인용문이 나오는 곳입니다. 일반적으로 데이터는 괜찮습니다 (샌드 박스에서는 괜찮습니다). 그러나 갑자기 라이브 사이트의 로그 데이터가 가비지입니다. 확인 또는 구문 분석 할 데이터가 없기 때문에 문제가 PayPal에 연결되어 있지 않거나 '확인'또는 '유효하지 않음'으로 돌아가고 있습니다.
누구나 전에 경험 했습니까? 확실히 인코딩 문제처럼 보이지만 인코딩을 UTF-8로 설정했습니다. 그리고 일부 데이터가 나쁜 부분 인코딩 문제가 아니기 때문입니다. 모든 것이 나쁜 것입니다. 감사합니다.
PayPal에서 Tls12를 강제로 사용하고 있는지 궁금합니다. – David
PayPal에 로그인하여 IPN 기록 페이지를 방문하고 이전 IPN을 재전송하여 IPN을 재전송 할 때만 유효하지 않은 데이터가 발생한다고 결정했습니다. 샌드 박스에서 보낸 IPN과 모든 * 원본 * IPN이 올바르게 전송됩니다. 모든 단일 * 재전송 * 나는 잘못된 데이터로 결과를 시도합니다. 문제는 PayPal에서 분명히 드러났습니다. 그것은 단지 내 계정이든 아니든 상관 없습니다. – avariant