سؤال

أحاول دمج PayPal وأنا لا أحصل على الأشياء بشكل صحيح. عند إعادة توجيه الموقع إلى PayPal، فإنه يدل على صفحة الويب (الصورة التي قمت بإضافتها مع هذا المنشور). يرجى أي شخص ساعدني من هذه الفوضى COZ أنا أقوم بذلك لأول مرة. يرجى أي شخص يقترح لي أين يمكن أن أكون مخطئا.نص Alt http://img341.imageshack.us/img341/6920/captureqt.jpg.

لقد استخدمت هذه الفئة لإدماج PayPal إلى موقعي. ولكن لا أعرف لماذا لا أحصل على الشيء المطلوب.

/ ************************************************* ****************************** * فب باي بال فئة التكامل IPN


  • المؤلف: ميخا كاريك
  • البريد الإلكتروني: البريد الإلكترونيmicahcarrick.com.
  • موقع الكتروني: http://www.micahcarrick.com. *
  • ملف: paypal.class.php.
  • النسخة: 1.3.0.
  • حقوق النشر: (ج) 2005 - Micah Carrick
  • أنت حر في استخدام وتوزيع وتعديل هذا البرنامج
  • تحت شروط رخصة جنو العامة العامة. انظر
  • وشملت ملف الترخيص.

  • تاريخ فيريون:

  • v1.3.0 [10.10.2005] - إصلاحه حتى يتم التعامل مع علامات اقتباس واحدة
  • الطريق الصحيح وليس بسيطة تجريدهم. هذه
  • كان هناك حاجة لأن المستخدم لا يزال بإمكانه وضعه
  • يقتبس.
    • v1.2.2 [06.05.2005] - مطبعي ثابت من الإصلاح السابق :) *
  • v1.2.0 [05.31.2005] - إضافة القدرة الاختيارية لإزالة جميع علامات الاقتباس
  • من المشاركات paypal. سوف تعود IPN
  • غير صالح في بعض الأحيان عند استخدام علامات الاقتباس في Certian
  • مجالات. *
  • v1.1.0 [05.15.2005] - المنقحة إخراج النموذج في submit_paypal_post
  • طريقة للسماح للمتصفحات غير الجاف سكريبت
  • لتوفير وسيلة لتقديم النموذج اليدوي. *
  • v1.0.0 [04.16.2005] - الإصدار الأولي *


  • وصف: *

  • ملاحظة: انظر www.micahcarrick.com للحصول على أحدث إصدار من هذه الفئة
  • جنبا إلى جنب مع أي ملفات عينة قابلة للتطبيق وغيرها من المستندات. *
  • يوفر هذا الملف طريقة أنيقة وبسيطة للواجهة مع PayPal و
  • واجهة إشعار الدفع الفوري PayPal (IPN). هذا الملف هو
  • لا تهدف إلى جعل تكامل PayPal "سد" Play ". لا يزال
  • يتطلب المطور (يجب أن يكون لك) لفهم PayPal
  • عملية ومعرفة المتغيرات التي تريدها / تحتاج إلى المرور إلى PayPal
  • تحقيق ما تريد.
    *
  • تعالج هذه الفئة تقديم طلب إلى PayPal كما
  • معالجة إشعار الدفع الفوري.
    • يعتمد هذا الرمز على مجموعة أدوات PHP من PayPal. لقد أخذت
  • المدارس الأساسية ووضعها في الفصل بحيث يكون قليلا
  • أسهل - على الأقل بالنسبة لي - للاستخدام. يمكن تنزيل مجموعة أدوات PHP من
  • http://sourceforge.net/projects/paypal..
    • لتقديم طلب إلى PayPal، استمتع بنظام الطلب الخاص بك إلى ملف مع: *
  • $ p = new paypal_class؛
  • $ p-> add_field ('business'، 'somebody@domain.com')؛
  • $ p-> add_field ('first_name'، $ _Post ['first_name'])؛
  • ... (إضافة جميع الحقول الخاصة بك في نفس القمضة)
  • $ p-> submit_paypal_post ()؛ *
  • لمعالجة IPN، تحتوي ملف معالجة IPN الخاص بك على: *
  • $ p = new paypal_class؛
  • إذا ($ p-> validate_ipn ()) {
  • ... (يتم التحقق من IPN. التفاصيل موجودة في صفيف ipn_data ()
  • } * *
  • في حال كنت جديدا في PayPal، إليك بعض المعلومات لمساعدتك: *
    1. قم بتنزيل وقراءة دليل مستخدم التاجر ودليل التكامل من
  • http://www.paypal.com/en_us/pdf/integration_guide.pdf.. وبعد هذا يعطي
  • لك جميع المعلومات التي تحتاجها بما في ذلك الحقول التي يمكنك تمريرها
  • باي بال (باستخدام add_field () مع هذه الفئة) كما aswell كجميع الحقول
  • يتم إرجاعها في مشاركة IPN (تخزينها في صفيف IPN_DATA ()
  • هذه الفئة). كما أنها تخطط لعملية المعاملات بأكملها. *
    1. قم بإنشاء حساب "علبة الرمل" للمشتري والبائع. هذا فقط
  • حساب (حساب) اختبار يسمح لك باختبار موقعك من كل من
  • منظور البائع والمشتري. التعليمات لهذا متاح
  • في https:/developer.paypal.com/ وكذلك منتدى رائع حيث
  • يمكن أن نسأل جميع أسئلة تكامل paypal الخاص بك. تأكد من اتبع
  • جميع الاتجاهات في إعداد بيئة اختبار Sandbox، بما في ذلك
  • إضافة حسابات بنكية وهمية وبطاقات الائتمان.

*/

فئة paypal_class {

var $ last_error؛ / / يحمل أخيرا آخر مواجهته

var $ ipn_log؛ // bool: تسجيل النتائج iPN إلى ملف نصي؟

var $ ipn_log_file؛ / / اسم ملف سجل IPN VAR $ iPN_Response؛ // يحمل استجابة IPN من PayPal
var $ ipn_data = صفيف ()؛ يحتوي Array على القيم الموجودة في IPN

VAR $ الحقول = صفيف ()؛ // مجموعة تحمل الحقول لتقديمها إلى PayPal

وظيفة paypal_class () {

  // initialization constructor.  Called when class is created.

  $this->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';

  $this->last_error = '';

  $this->ipn_log_file = 'ipn_results.log';
  $this->ipn_log = true; 
  $this->ipn_response = '';

  // populate $fields array with a few default values.  See the paypal
  // documentation for a list of fields and their data types. These defaul
  // values can be overwritten by the calling script.

  $this->add_field('rm','2');           // Return method = POST
  $this->add_field('cmd','_xclick'); 

}

وظيفة add_field (حقل $، قيمة $) {

  // adds a key=>value pair to the fields array, which is what will be 
  // sent to paypal as POST variables.  If the value is already in the 
  // array, it will be overwritten.

  $this->fields["$field"] = $value;

}

وظيفة submit_paypal_post () {

  // this function actually generates an entire HTML page consisting of
  // a form with hidden elements which is submitted to paypal via the 
  // BODY element's onLoad attribute.  We do this so that you can validate
  // any POST vars from you custom form before submitting to paypal.  So 
  // basically, you'll have your own form which is submitted to your script
  // to validate the data, which in turn calls this function to create
  // another hidden form and submit to paypal.

  // The user will briefly see a message on the screen that reads:
  // "Please wait, your order is being processed..." and then immediately
  // is redirected to paypal.

  echo "<html>\n";
  echo "<head><title>Processing Payment...</title></head>\n";
  echo "<body onLoad=\"document.forms['paypal_form'].submit();\">\n";
  echo "<center><h2>Please wait, your order is being processed and you";
  echo " will be redirected to the paypal website.</h2></center>\n";
  echo "<form method=\"post\" name=\"paypal_form\" ";
  echo "action=\"".$this->paypal_url."\">\n";

  foreach ($this->fields as $name => $value) {
     echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n";
  }
  echo "<center><br/><br/>If you are not automatically redirected to ";
  echo "paypal within 5 seconds...<br/><br/>\n";
  echo "<input type=\"submit\" value=\"Click Here\"></center>\n";

  echo "</form>\n";
  echo "</body></html>\n";      

} // ---------------------------------------- // تعيين حالة / * وظيفة تعيين الحالة() {

   $db = new Connection();
   $con = $db->getConnection();
   $query="insert into paypal_Result(`mc_gross`,`protection_eligibility`) values ('1','2')";
   $rs=mysql_query($query,$con);
   if($rs != "")
   {
      return true; 
   }
   else
   {
       return false;
   }

}*/

//----------------------------------------

وظيفة Validate_ipn () {

  // parse the paypal URL
  $url_parsed=parse_url($this->paypal_url);        

  // generate the post string from the _POST vars aswell as load the
  // _POST vars into an arry so we can play with them from the calling
  // script.
  $post_string = '';    
  foreach ($_POST as $field=>$value) { 
     $this->ipn_data["$field"] = $value;
     $post_string .= $field.'='.urlencode(stripslashes($value)).'&'; 
  }
  $post_string.="cmd=_notify-validate"; // append ipn command

  // open the connection to paypal
  $fp = fsockopen($url_parsed[host],"80",$err_num,$err_str,30); 
  if(!$fp) {

     // could not open the connection.  If loggin is on, the error message
     // will be in the log.
     $this->last_error = "fsockopen error no. $errnum: $errstr";
     $this->log_ipn_results(false);       
     return false;

  } else { 

     // Post the data back to paypal
     fputs($fp, "POST $url_parsed[path] HTTP/1.1\r\n"); 
     fputs($fp, "Host: $url_parsed[host]\r\n"); 
     fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); 
     fputs($fp, "Content-length: ".strlen($post_string)."\r\n"); 
     fputs($fp, "Connection: close\r\n\r\n"); 
     fputs($fp, $post_string . "\r\n\r\n"); 

     // loop through the response from the server and append to variable
     while(!feof($fp)) { 
        $this->ipn_response .= fgets($fp, 1024); 
     } 

     fclose($fp); // close connection

  }

  if (eregi("VERIFIED",$this->ipn_response)) {

     // Valid IPN transaction.
     $this->log_ipn_results(true);
     return true;       

  } else {

     // Invalid IPN transaction.  Check the log for details.
     $this->last_error = 'IPN Validation Failed.';
     $this->log_ipn_results(false);   
     return false;

  }

}

وظيفة log_ipn_results (نجاح $) {

  if (!$this->ipn_log) return;  // is logging turned off?

  // Timestamp
  $text = '['.date('m/d/Y g:i A').'] - '; 

  // Success or failure being logged?
  if ($success) $text .= "SUCCESS!\n";
  else $text .= 'FAIL: '.$this->last_error."\n";

  // Log the POST variables
  $text .= "IPN POST Vars from Paypal:\n";
  foreach ($this->ipn_data as $key=>$value) {
     $text .= "$key=$value, ";
  }

  // Log the response from the paypal server
  $text .= "\nIPN Response from Paypal Server:\n ".$this->ipn_response;

  // Write to log
  $fp=fopen($this->ipn_log_file,'a');
  fwrite($fp, $text . "\n\n"); 

  fclose($fp);  // close file

}

وظيفة dump_fields () {

  // Used for debugging, this function will output all the field/value pairs
  // that are currently defined in the instance of the class using the
  // add_field() function.

  echo "<h3>paypal_class->dump_fields() Output:</h3>";
  echo "<table width=\"95%\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\">
        <tr>
           <td bgcolor=\"black\"><b><font color=\"white\">Field Name</font></b></td>
           <td bgcolor=\"black\"><b><font color=\"white\">Value</font></b></td>
        </tr>"; 

  ksort($this->fields);
  foreach ($this->fields as $key => $value) {
     echo "<tr><td>$key</td><td>".urldecode($value)."&nbsp;</td></tr>";
  }

  echo "</table><br>"; 

} }

هل كانت مفيدة؟

المحلول

لست متأكدا ما هو الخطأ في التعليمات البرمجية الخاصة بك، ولكن من الجيد دائما استخدام الفصول المدمجة لتجنب أي مشاكل تخرج من التعليمات البرمجية الخاصة بك، لذلك أود أن أقترح عليك استخدام هذا فئة باي بال والتي سوف ترفع الكثير من الجهود من جانبكم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top