2011-10-26 17 views
2

PayPal IPN定期購読IDを取得するのが最も困難です。これは私のIPNページです。PayPal IPN定期購読Idを取得しようとするのが最も難しいです。

<?php 
    // read the post from PayPal system and add 'cmd' 
$req = 'cmd=_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 .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; 
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); 




if (!$fp) { 
// HTTP ERROR 
} else { 
fputs ($fp, $header . $req); 
while (!feof($fp)) { 
$res = fgets ($fp, 1024); 
if (strcmp ($res, "VERIFIED") == 0) { 
// check the payment_status is Completed 
// check that txn_id has not been previously processed 
// check that receiver_email is your Primary PayPal email 
// check that payment_amount/payment_currency are correct 
// process payment 
    if("susbcr_signup" == $_POST['txn_type']){ 

     $_id = $_POST['subscr_id']; 



    $websites= "websites"; 
    $database = "k29803_1"; 
    mysql_connect("localhost", $username, $password) or die(mysql_error()); 
    mysql_select_db($database); 

    $query = "SELECT * FROM users WHERE username= 'drahoslava' AND password = 'drah0slava'"; 
    $results = mysql_query($query)or die(mysql_error()); 
    if(mysql_num_rows($results)==1){ 
     $add_credits = "UPDATE users SET hash = '$_id' 
     WHERE username= 'drahoslava' AND password = 'drah0slava'"; 
     mysql_query($add_credits) or die(mysql_error()); 
     echo 'done'; 


     } 

} 
else if (strcmp ($res, "INVALID") == 0) { 
// log for manual investigation 
} 
} 
fclose ($fp); 
} 
    } 
    ?> 

は、これが問題になる可能性がどのような私のフォーム

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="6ZZUDQCUUXGMS"> 
    <input type="hidden" name="item_name" value="Baseball Hat Monthly"> 
    <input type="hidden" name="item_number" value="123"> 
<input type="hidden" name="notify_url" value="http://www.germcode.kodingen.com/ipn.php" /> 

<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

MySQLのテーブルdoesntの更新...です。 *私は申し訳ありません

答えて

1

これは本当にごとの言う答えではないが、私はきちんと

が受け取るテスト目的のための余分なテーブルを設定してみたコメントに私の提案を得ることができなかった上、オートリターンを持っています各トランザクションのipn情報の生のダンプ。あなたはそれがあなたのテーブルに挿入されていない理由を判断するために受け取ったものを見てみることができます。あなたがそのように行うことができ、生データのすべてのストアに

$IpnSerialized = serialize($_POST); 
$RawInsert = "INSERT INTO `IpnRaw` (`IpnDump`) VALUES ('{$IpnSerialized}')"; 

をまた、IPNハンドラスクリプトに任意のエコーやプリントを追加しないでください。とにかく誰もそれを見るつもりはない。

テストテーブルにいくつかのフィールドを追加して、プログレッションマーカーを保存して、爆撃前のスクリプトの到達距離を確認することができます。

1

paypalから戻ってきたipnデータを電子メールで送信し、データを取得できるかどうかを確認してください。あなたがデータを取得することができれば、あなたの質問に問題があります。

関連する問題