0
PayPal IPN 시스템을 사용하려고합니다. 테스트를 위해 SandBox 플랫폼을 사용하도록 코드를 설정했습니다. 왜 내 코드의 if (strcmp ($res, "VERIFIED") == 0) {
부분이 실행되지 않는지에 대한 이유를 찾고 있습니다. 뿐만 아니라이 코드의 어느 부분도 "log.txt"에 출력을 쓰지 않습니다.PayPal IPN이 특정 부분의 코드를 실행하지 않습니다.
내가 잘못 가고있는 부분을 알기 위해 내 코드를 검토해 주시면 감사하겠습니다.
<?php
require_once('includes/mysql.inc.php');
if($_POST) {
$req = 'cmd=' . urlencode('_notify-validate');
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Host: sandbox.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://sandbox.paypal.com', 443, $errno, $errstr, 30);
if (!$fp) {
file_put_contents('log.txt', 'httperrrrr');
die();
} else {
file_put_contents('log.txt', 'die here');
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
$data = print_r($res, TRUE);
if (strcmp ($res, "VERIFIED") == 0) {
file_put_contents('log.txt', 'verified');
$username = $_POST['custom'];
require_once('classes/admin.class.php');
$activate = new Admin($db);
$activate->modifyUser($username, 'activate');
} else {
file_put_contents('log.txt', 'noverifyshit');
}
}
} else {
file_put_contents('log.txt', 'no post');
}
}
?>
은 아마 파일에 쓸 수없는 이유는 무엇입니까? error_reporting (E_ALL)을 추가하십시오. 및 ini_set ('display_errors', 1)을 실행중인 코드 바로 앞에 추가합니다 (코드의 다른 위치에 코드가없는 경우). – Aeolun
음, 그게 실제로 많은 도움이되었습니다. 조건은 지금 실행 중입니다. 실행해야하는 것은 아닙니다. "if (strcmp ($ res,"VERIFIED ") == 0) {" –
아마도 paypal의 결과로 추가 공백이 포함될 수 있습니까? 비교 실패의 가장 분명한 이유는 문자열이 동일하지 않다는 것입니다. – Aeolun