לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 11-12-2010, 16:11
  fadey fadey אינו מחובר  
 
חבר מתאריך: 15.07.02
הודעות: 1,027
בעיה עם Paypal IPN

למי שמכיר, יש לפייפאל אתר נסיונות שם ניתן לבצע רכישות בכאילו.

להלן הקוד אשר פייפאל דורשים על מנת לתקשר עם האתר:
https://cms.paypal.com/cms_content/.../IPN_PHP_41.txt

ולהלן הקוד שאני משתמש איתו:

קוד PHP:
<?php
    
require_once('load_all.php');
    
$paypal = new gPaypal($_POST['item_number'], true);
    
// 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 "";
    
$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$errstr30);

    
// assign posted variables to local variables
    
$item_name $_POST['item_name'];
    
$item_number $_POST['item_number'];
    
$payment_status $_POST['payment_status'];
    
$payment_amount $_POST['mc_gross'];
    
$payment_currency $_POST['mc_currency'];
    
$txn_id $_POST['txn_id'];
    
$receiver_email $_POST['receiver_email'];
    
$payer_email $_POST['payer_email'];
    
$temp_user $_POST['custom'];

    if (!
$fp) {
        
// HTTP ERROR
    
} else {
        
fputs ($fp$header $req);
        while (!
feof($fp)) {
            
$res fgets($fp1024);
            if (
strcmp($res"VERIFIED") == 0) {
                if (
$_POST['payment_status'] == 'Completed' && $paypal->noTransId($_POST['txn_id']) && $paypal->paypalEmail == $_POST['receiver_email'] && $paypal->paypalCurrency == $_POST['mc_currency'] && $paypal->adsPaymentAmountCorrect($_POST)) {
                    
                    
$paypal->createOrderAds($_POST);
                    
$paypal->confirmAduser($temp_user$item_number);                
                
// process payment
                
}
            }
            else if (
strcmp ($res"INVALID") == 0) {
                
// log for manual investigation
                
            
}
        }
    
fclose($fp);
    }
?>


עכשיו כאשר אני מגדיר את חיבור ה ssl לכתובת של www.sandbox.paypal.com, אין שום בעיות
אך כאשר אני מבצע הנ"ל מול האתר האמיתי, כלומר www.paypal.com כפי שמופיע כרגע אצלי בקוד וכפי שמופיע בקוד שלהם, אני מקבל את הERROR הבא:

קוד:
[Sat Dec 11 17:01:29 2010] [error] [client 66.211.170.66] PHP Warning: fgets() [<a href='function.fgets'>function.fgets</a>]: SSL: fatal protocol error in /var/www/vhosts/g1000000.org/httpdocs/ads_paypal.php on line 35


גיגלתי המון, לא מצאתי תשובות..

האם מישהו יודע?
_____________________________________
ציטוט:
Different people use different tools, but its mostly morons who pretend that the problems with PHP actually matter.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 11-12-2010, 19:08
  fadey fadey אינו מחובר  
 
חבר מתאריך: 15.07.02
הודעות: 1,027
ניסיתי חח כבר 50 שקל ביבזתי עליהם. - לא עובד
בתגובה להודעה מספר 2 שנכתבה על ידי שימי שמתחילה ב "גיגלתי שנייה אחת ומצאתי הצעה..."

להלן הקוד ללא \r :

קוד PHP:
<?php
    
require_once('load_all.php');
    
$paypal = new gPaypal($_POST['item_number'], true);
    
// 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 "";
    
$header .= "POST /cgi-bin/webscr HTTP/1.0\n";
    
$header .= "Content-Type: application/x-www-form-urlencoded\n";
    
$header .= "Content-Length: " strlen($req) . "\n\n";
    
$fp fsockopen ('ssl://www.paypal.com'443$errno$errstr30);

    
// assign posted variables to local variables
    
$item_name $_POST['item_name'];
    
$item_number $_POST['item_number'];
    
$payment_status $_POST['payment_status'];
    
$payment_amount $_POST['mc_gross'];
    
$payment_currency $_POST['mc_currency'];
    
$txn_id $_POST['txn_id'];
    
$receiver_email $_POST['receiver_email'];
    
$payer_email $_POST['payer_email'];
    
$temp_user $_POST['custom'];

    if (!
$fp) {
        
// HTTP ERROR
    
} else {
        
fputs ($fp$header $req);
        while (!
feof($fp)) {
            
$res fgets($fp1024);
            if (
strcmp($res"VERIFIED") == 0) {
                if (
$_POST['payment_status'] == 'Completed' && $paypal->noTransId($_POST['txn_id']) && $paypal->paypalEmail == $_POST['receiver_email'] && $paypal->paypalCurrency == $_POST['mc_currency'] && $paypal->adsPaymentAmountCorrect($_POST)) {
                    
                    
$paypal->createOrderAds($_POST);
                    
$paypal->confirmAduser($temp_user$item_number);                
                
// process payment
                
}
            }
            else if (
strcmp ($res"INVALID") == 0) {
                
// log for manual investigation
                
            
}
        }
    
fclose($fp);
    }
?>


ומן הסתם, התשלום מחוייב, אך מטבע הקוד, לא עובר לבסיס נתונים כלום כיוון שהוא מקבל שם false.
_____________________________________
ציטוט:
Different people use different tools, but its mostly morons who pretend that the problems with PHP actually matter.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 11-12-2010, 17:42
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 1 שנכתבה על ידי fadey שמתחילה ב "בעיה עם Paypal IPN"

תבדוק את ההערה כאן לגבי סיומת שורה.

עריכה:
אם נוריד את קוד המקור של (PHP מכאן), ונחפש את המחרוזת "SSL: fatal protocol error" בתיקיה הראשית, נוכל להגיע לחלק הקוד הבא (בקובץ ext/openssl/xp_ssl.c):
קוד:
if (!is_http_stream_talking_to_iis(stream TSRMLS_CC) && ERR_get_error() != 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSL: fatal protocol error"); }

שים לב שבתנאי יש בדיקה האם אנחנו מדברים עם שרת IIS.
כנראה PHP שואל את עצמו "אני מקבל סיומות שורה של CR,LF שזה מתאים לשרת של ווינדוס (IIS), אבל האם אני מדבר עם שרת כזה?
אם כן, אז נסלח לו שאינו פועל לפי SSL.
אם לא, אז השרת שאיתו אנו מדברים - אינו פועל לפי פרוטוקול SSL, ולכן נכריז על fatal error בהקשר של פרוטוקול SSL". (ככתוב SSL: fatal protocol error)

נערך לאחרונה ע"י dorM בתאריך 11-12-2010 בשעה 18:38.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 13-12-2010, 09:29
  fadey fadey אינו מחובר  
 
חבר מתאריך: 15.07.02
הודעות: 1,027
נסיון עם cRUL נכשל:
בתגובה להודעה מספר 12 שנכתבה על ידי שימי שמתחילה ב "בלינק שאני נתתי לך, בקובץ..."

ניסיתי ליישם את הדרך עם cURL אך היא נכשלת ואינני מצליח לראות את הבעיה:

קוד PHP:
<?php
    
require_once('load_all.php');
    
$paypal = new gPaypal($_POST['item_number'], true);
    
// 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 = "";
    $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); */

   // ********* cURL version ***********
    
$url "http://www.paypal.com/cgi-bin/webscr";
    
$ch curl_init();    // Starts the curl handler
    
curl_setopt($chCURLOPT_URL,$url); // Sets the paypal address for curl
    
curl_setopt($chCURLOPT_FAILONERROR1);
    
curl_setopt($chCURLOPT_RETURNTRANSFER,1); // Returns result to a variable instead of echoing
    
curl_setopt($chCURLOPT_TIMEOUT3); // Sets a time limit for curl in seconds (do not set too low)
    
curl_setopt($chCURLOPT_POST1); // Set curl to send data using post
    
curl_setopt($chCURLOPT_POSTFIELDS$req); // Add the request parameters to the post
    
$result curl_exec($ch); // run the curl process (and return the result to $result
    
curl_close($ch);
    
// ********* end cURL **************

    // assign posted variables to local variables
    
$item_name $_POST['item_name'];
    
$item_number $_POST['item_number'];
    
$payment_status $_POST['payment_status'];
    
$payment_amount $_POST['mc_gross'];
    
$payment_currency $_POST['mc_currency'];
    
$txn_id $_POST['txn_id'];
    
$receiver_email $_POST['receiver_email'];
    
$payer_email $_POST['payer_email'];
    
$temp_user $_POST['custom'];

    if (
strcmp ($result"VERIFIED") == 0) {
        if (
$_POST['payment_status'] == 'Completed' && $paypal->noTransId($_POST['txn_id']) && $paypal->paypalEmail == $_POST['receiver_email'] && $paypal->paypalCurrency == $_POST['mc_currency'] && $paypal->adsPaymentAmountCorrect($_POST)) {
            
$paypal->createOrderAds($_POST);
            
$paypal->confirmAduser($temp_user$item_number);                
        
// process payment
        
} else if (strcmp ($result"INVALID") == 0) {
            
// log for manual investigation
        
}
    }

/*    if (!$fp) {
        // HTTP ERROR
    } else {
        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            $res = fgets($fp, 1024);
            if (strcmp($res, "VERIFIED") == 0) {
                if ($_POST['payment_status'] == 'Completed' && $paypal->noTransId($_POST['txn_id']) && $paypal->paypalEmail == $_POST['receiver_email'] && $paypal->paypalCurrency == $_POST['mc_currency'] && $paypal->adsPaymentAmountCorrect($_POST)) {
                    
                    $paypal->createOrderAds($_POST);
                    $paypal->confirmAduser($temp_user, $item_number);                
                // process payment
                }
            }
            else if (strcmp ($res, "INVALID") == 0) {
                // log for manual investigation
                
            }
        }
    fclose($fp);
    } */
?>


אני מבין שיש בעיה עם הסקריפט עצמו כיוון שכל הפוסטים חוזרים בצורה תקינה. אינני מבין מה עליי לעשות על מנת לראות את השגיאות,

אין שגיאות php מהשרת.
_____________________________________
ציטוט:
Different people use different tools, but its mostly morons who pretend that the problems with PHP actually matter.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 14-12-2010, 11:22
  fadey fadey אינו מחובר  
 
חבר מתאריך: 15.07.02
הודעות: 1,027
עדכון: התקשורת עובדת אך הנתונים בעברית לא חוזרים
בתגובה להודעה מספר 16 שנכתבה על ידי fadey שמתחילה ב "מעניין, אני אנסה עם s למרות..."

עם הקוד האחרון, כלומר בשיטת cURL התקשורת עובדת, ואין שגיאות מצד הסקריפט, אך כל הנתונים שחוזרים מפייפאל בעברית חוזרים ריקים, כאשר לעומת זאת בקוד הקודם הנתונים היו חוזרים בצורה תקינה.
להלן הקוד הנשלח אל פייפאל:
קוד PHP:
 <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
            <
input type="hidden" name="cmd" value="_xclick" />
            <
input type="hidden" name="upload" value="1" />
            <
input type="hidden" name="business" value="boynet2@gmail.com" />
            <
input type="hidden" name="charset" value="utf8" />
            <
input type="hidden" name="item_name" value="<?php  echo $paypal['name']; ?>" />
            <
input type="hidden" name="item_number" value="<?php  echo $paypal['id']; ?>" />
            <
input type="hidden" name="amount" value="<?php  echo $paypal['price']; ?>" />
            <
input type="hidden" name="quantity" value="1" />
            <
input type="hidden" name="currency_code" value="ILS" />
            <
input type="hidden" name="lc" value="IL" />
            <
input type="hidden" name="rm" value="2" />
            <
input type="hidden" name="shipping" value="0" />
            <
input type="hidden" name="return" value="http://www.g1000000.org/thankyou.php" />
            <
input type="hidden" name="cancel_return" value="http://www.g1000000.org/adWordsPacks.php" />
            <
input type="hidden" name="notify_url" value="http://www.g1000000.org/ads_paypal.php /">
            <
input type="hidden" name="custom" value="<?php echo $tempUser; ?>">
            <
center><input type="submit" name="pay now" value="לחץ כאן לאשר ולהמשיך תשלום באמצעות פייפאל" /></center>
    </
form
כל מה שנכנס לפייפאל בעברית חוזר בקוד (זה בגרסאת ה cURL ) ריק.. או עם סימני שאלה וזאת למרות שאני מעביר את ה charset לפייפאל לפי UTF-8. ייתכן שזה קרה עקב השינויים שהם עברו לאחרונה?
_____________________________________
ציטוט:
Different people use different tools, but its mostly morons who pretend that the problems with PHP actually matter.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 17:32

הדף נוצר ב 0.14 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר