doude2635 2014-07-09 21:55
浏览 240
已采纳

即使付款已处理,PayPal IPN也会返回“INVALID”

FAILED REQUEST

request:cmd=_notify-validate&mc_gross=2.00&protection_eligibility=Eligible&address_status=confirmed&payer_id=LDYM496TZ5PMS&tax=0.00&address_street=7 Malcom Ave Quarrington Hill&payment_date=10:56:23 Jul 10, 2014 PDT&payment_status=Completed&charset=windows-1252&address_zip=DH6 4QT&first_name=fake&mc_fee=0.38&address_country_code=GB&address_name=fake fake&notify_version=3.8&custom=168&payer_status=unverified&business=fake@gmail.com&address_country=United Kingdom&address_city=Durham&quantity=0&verify_sign=AO3SqMqkkL6g6znCfk.bTx0YGc9QAAC62A.uYD2AR27aMUKA8tjOenQg&payer_email=fake@gmail.com&txn_id=0V51470288084925M&payment_type=instant&last_name=fake&address_state=&receiver_email=fake@gmail.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

Failed POST

mc_gross=2.00&protection_eligibility=Eligible&address_status=confirmed&payer_id=LDYM496TZ5PMS&tax=0.00&address_street=7+Malcom+Ave%0D%0AQuarrington+Hill&payment_date=10%3A56%3A23+Jul+10%2C+2014+PDT&payment_status=Completed&charset=windows-1252&address_zip=DH6+4QT&first_name=fake&mc_fee=0.38&address_country_code=GB&address_name=fake+fake&notify_version=3.8&custom=168&payer_status=unverified&business=fake%40gmail.com&address_country=United+Kingdom&address_city=Durham&quantity=0&verify_sign=AO3SqMqkkL6g6znCfk.bTx0YGc9QAAC62A.uYD2AR27aMUKA8tjOenQg&payer_email=fake%40gmail.com&txn_id=0V51470288084925M&payment_type=instant&last_name=fake&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

So, my PayPal IPN is returning an INVALID response SOMETIMES! ... When I test it on sandbox it works fine. When I test it with my own CC it works fine.

Occasionally when I get a donation however, the money comes through ... but the response from IPN is invalid.

I am in the US ... the particular donator it is currently failing on is from the UK ... I do not know if that has any relevance. This is my code.

$request = "cmd=_notify-validate"; 
foreach ($_POST as $varname => $varvalue){
$email .= "$varnamefake: $varvalue
";  
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("fakeemail@fake.com","paypal response", $message);
        break;
    default:
        $message ="other";
        mail("fakeemail@fake.com","paypal response", $message);
}

FAILED REQUEST

request:cmd=_notify-validate&mc_gross=2.00&protection_eligibility=Eligible&address_status=confirmed&payer_id=LDYM496TZ5PMS&tax=0.00&address_street=7 Malcom Ave Quarrington Hill&payment_date=10:56:23 Jul 10, 2014 PDT&payment_status=Completed&charset=windows-1252&address_zip=DH6 4QT&first_name=fake&mc_fee=0.38&address_country_code=GB&address_name=Brendan fake&notify_version=3.8&custom=168&payer_status=unverified&business=fake@gmail.com&address_country=United Kingdom&address_city=Durham&quantity=0&verify_sign=AO3SqMqkkL6g6znCfk.bTx0YGc9QAAC62A.uYD2AR27aMUKA8tjOenQg&payer_email=fake@gmail.com&txn_id=0V51470288084925M&payment_type=instant&last_name=Watson&address_state=&receiver_email=fake@gmail.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

Failed POST

mc_gross=2.00&protection_eligibility=Eligible&address_status=confirmed&payer_id=LDYM496TZ5PMS&tax=0.00&address_street=7+Malcom+Ave%0D%0AQuarrington+Hill&payment_date=10%3A56%3A23+Jul+10%2C+2014+PDT&payment_status=Completed&charset=windows-1252&address_zip=DH6+4QT&first_name=fake&mc_fee=0.38&address_country_code=GB&address_name=fake+fake&notify_version=3.8&custom=168&payer_status=unverified&business=fake%40gmail.com&address_country=United+Kingdom&address_city=Durham&quantity=0&verify_sign=AO3SqMqkkL6g6znCfk.bTx0YGc9QAAC62A.uYD2AR27aMUKA8tjOenQg&payer_email=fake%40gmail.com&txn_id=0V51470288084925M&payment_type=instant&last_name=Watson&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

  • 写回答

1条回答 默认 最新

  • douduoting8408 2014-07-10 18:08
    关注
    if(function_exists('get_magic_quotes_gpc') and get_magic_quotes_gpc()){  
        $varvalue = urlencode(stripslashes($varvalue)); 
    }
    else { 
        $value = urlencode($value); 
    } 
    

    IPN variables are already url encoded, no point of encoding them again to send back to paypal - probably the reason why some transactions work and others don't.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)