2014-07-09 2 views
0

는 요청을 실패 처리에도 불구하고 "INVALID"를 반환페이팔 IPN은 지불이

요청 : cmd를 = & mc_gross = 2.00 & protection_eligibility = 대상 & address_status을 _notify - 검증 = 확인 & payer_id = LDYM496TZ5PMS & 세금 = 0.00 & address_street = 7 Malcom Ave Quarrington Hill & payment_date = 10 : 56 : 23 2014 년 7 월 10 일 PDT & payment_status = 완료 & cha RSET = 창-1252 & address_zip = DH6 4QT & FIRST_NAME = 가짜 & mc_fee = 0.38 & address_country_code = GB & ADDRESS_NAME = 가짜 가짜 & notify_version = 3.8 & 사용자 정의 = 168 & payer_status = 확인되지 않은 & [email protected] & = 0 & verify_sign = AO3SqMqkkL6g6znCfk.bTx0YGc9QAAC62A.uYD2AR27aMUKA8tjOenQg & [email protected] & txn_id = 0V51470288084925M & PA address_country = 연합 왕국 & address_city = 더럼 & 양 yment_type = 인스턴트 LAST_NAME = & & 가짜 address_state = & & [email protected] payment_fee = 0.38 = & receiver_id 43PTLVVM58JD4 txn_type = & & web_accept ITEM_NAME Hyubusa = & mc_currency = USD = & & ITEM_NUMBER residence_country = GB = 168 transaction_subject & & payment_gross = 2.00 & ipn_track_id = 8f6ab718d71f2

는 01,235 POST

실패 16,

mc_gross = 2.00 & protection_eligibility = 대상 & address_status = 확인 & payer_id = LDYM496TZ5PMS & 세금 = 0.00 & address_street = 7 + 말콤 + 번가 %의 0D %의 0AQuarrington + 힐 & PAYMENT_DATE = 10 % 3A56 % 3A23 + 7월 + 10 % 2C + 2014 + PDT & PAYMENT_STATUS = 완료 & 캐릭터 세트 = 창-1252 & address_zip = DH6 + 4QT & FIRST_NAME = 가짜 & mc_fee = 0.38 & address_country_code = GB & ADDRESS_NAME = 가짜 + 가짜 & notify_version = 3.8 & 고객 사양 m = 168 & payer_status = 확인되지 않은 & 사업 = 가짜 % 40gmail.com & address_country = 미국 + 영국 & address_city = 더럼 & 수량 = 0 & verify_sign = AO3SqMqkkL6g6znCfk.bTx0YGc9QAAC62A.uYD2AR27aMUKA8tjOenQg & payer_email = 가짜 % 40gmail.com & txn_id = 0V51470288084925M & payment_type = instant & last_name = 가짜 & address_state = & receiver_email = adamhyubusa % 40gmail.com & payment_fee = 0.38 & receiver_id = 43PTLVVM58JD4 & txn_type = web_accept & ITEM_NAME의 = Hyubusa & mc_currency = USD & ITEM_NUMBER = & residence_country = GB & transaction_subject = 168 & payment_gross = 2.00 & ipn_track_id = 8f6ab718d71f2

그래서, 내 페이팔 IPN이 반환되는 무의식적 인 반응들 때때로! ... 샌드 박스에서 테스트 할 때 제대로 작동합니다. 내 자신의 참조 그것을 테스트 할 때 잘 작동합니다.

가끔 기부금을 받으면 돈이 나오지만 ... IPN의 응답이 잘못되었습니다.

나는 미국에 있습니다 ... 현재 실패한 특정 기부자는 영국 출신입니다 ... 그게 어떤 관련성이 있는지 나는 모른다. 이것은 내 코드입니다.

$request = "cmd=_notify-validate"; 
foreach ($_POST as $varname => $varvalue){ 
$email .= "$varnamefake: $varvalue\n"; 
if(function_exists('get_magic_quotes_gpc') and get_magic_quotes_gpc()){ 
    $varvalue = urlencode(stripslashes($varvalue)); 
} 
else { 
    $value = urlencode($value); 
} 
$request .= "&$varname=$varvalue"; 
} 

$ch = curl_init(); 
//curl_setopt($ch,CURLOPT_URL,"https://www.sandbox.paypal.com/cgi-bin/webscr"); 
curl_setopt($ch,CURLOPT_URL,"https://www.paypal.com/cgi-bin/webscr"); 
curl_setopt($ch,CURLOPT_POST,true); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$request); 
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,false); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
$result = curl_exec($ch); 
curl_close($ch); 
switch($result){ 
    case "VERIFIED": 
     $message = "good: $".$_POST['mc_gross']." | ".$_POST['custom']; 
     $amt = str_replace("$", "", $_POST['mc_gross']); 
     $data = array(
       'STATUS' => 1, 
       'AMOUNT' => $amt 
     ); 

     $this->db->where('ID', $_POST['custom']); 
     $this->db->update('donations', $data);   

    case "INVALID": 
     $message ="bad"; 
     mail("[email protected]","paypal response", $message); 
     break; 
    default: 
     $message ="other"; 
     mail("[email protected]","paypal response", $message); 
} 

실패한 요청

요청 : cmd를 = _notify-유효성 확인 = & mc_gross = 2.00 & protection_eligibility = 적격 & address_status을 & payer_id = LDYM496TZ5PMS & 세금 = 0.00 & address_street = 7 말콤 Aar Quarrington Hill & payment_date = 10 : 56 : 23 2014 년 7 월 10 일 PDT & PAYMENT_STATUS = 완료 & 캐릭터 세트 = 창-1252 & address_zip = DH6 4QT & FIRST_NAME = 가짜 & mc_fee = 0.38 & address_country_code = GB & ADDRESS_NAME = 브랜든 가짜 & notify_version = 3.8 & 사용자 정의 = 168 & payer_status = 확인되지 않은 & 사업 = 가짜 @ gmail.com & address_country = 연합 왕국 & address_city = 더럼 & 수량 = 0 & verify_sign = AO3SqMqkkL6g6znCfk.bTx0YGc9QAAC62A.uYD2AR27aMUKA8tjOenQg & [email protected],txn_id 0V51470288084925M = & & PAYMENT_TYPE = 인스턴트 LAST_NAME = & 왓슨 address_state = & & [email protected] payment_fee = 0.38 = & receiver_id 43PTLVVM58JD4 txn_type = & & web_accept ITEM_NAME = & Hyubusa mc_currency = USD = & & ITEM_NUMBER residence_country = GB transaction_subject & & payment_gross = 168 = 2.00 = & ipn_track_id 8f6ab718d71f2

=

mc_gross = 2.00 & protection_eligibility = 대상 & address_status POST

실패 & payer_id = LDYM496TZ5PMS & 세금 = 0을 확인했다.00 & address_street = 7 + 말콤 + 아베 %의 0D %의 0AQuarrington + 힐 & PAYMENT_DATE = 10 % 3A56 % 3A23 + 7월 + 10 % 2C + 2014 + PDT & PAYMENT_STATUS = 완료 & 캐릭터 = 윈도우 1252 & address_zip = DH6 + 4QT & FIRST_NAME = 가짜 & mc_fee = 0.38 & address_country_code = GB & ADDRESS_NAME = 가짜 + 가짜 & notify_version = 3.8 & 사용자 정의 = 168 & payer_status = 확인되지 않은 & 사업 = 가짜 % 40gmail.com & address_country = 미국 + 영국 & address_city = 더럼 & 수량 = 0 & verify_sign = AO3SqMqkkL6g6znCfk.bTx0YGc9QAAC62A.uYD2AR27aMU KA8tjOenQg & payer_email = 가짜 % 40gmail.com txn_id = & & 0V51470288084925M PAYMENT_TYPE = 인스턴트 LAST_NAME = & & 왓슨 address_state = & receiver_email = adamhyubusa % & 40gmail.com payment_fee = 0.38 = & receiver_id 43PTLVVM58JD4 txn_type = & & web_accept ITEM_NAME = & Hyubusa mc_currency USD = & & residence_country ITEM_NUMBER = GB = & & transaction_subject = 168 payment_gross = 2.00 = & ipn_track_id 8f6ab718d71f2

+0

POST 데이터의 원시 덤프를 제공 할 수 있습니까? PayPal에서 생성 한 문자열을 원시 덤프하고 실패했을 때이를 다시 보낼 수 있습니다. 어떤 이유로 든 일치하지 않아야합니다. 내 추측은 특정 주문에 대한 데이터의 URL 인코딩 또는 특수 문자와 관련이 있습니다. –

+0

이것은 실패한 요청이 보이는 방법입니다 ... ... 주 질문에 게시 –

+1

그래, 당신은 그들이 다른 것을 볼 수 있습니다. 하나는 URL로 인코딩되고 다른 하나는 인코딩되지 않습니다. 당신은 그들이 당신에게 보낸 것과 똑같이 PayPal로 되돌려 보낼 수 있도록 그 위치를 알아야합니다. –

답변

1
if(function_exists('get_magic_quotes_gpc') and get_magic_quotes_gpc()){ 
    $varvalue = urlencode(stripslashes($varvalue)); 
} 
else { 
    $value = urlencode($value); 
} 

IPN 변수는 이미 인코딩되어 있으므로 paypal로 다시 보내도록 인코딩 할 필요가 없습니다. 일부 트랜잭션이 작동하는 이유와 그렇지 않은 이유가있을 수 있습니다.

+0

고마워 ... 그걸 수정 한 것 같습니다. 좀 더 실제 테스트가 필요하지만 작동하는 것 같습니다. 감사합니다. –

관련 문제