Public Member Functions | |
ilPurchasePaypal (&$user_obj) | |
openSocket () | |
checkData ($fp) | |
__checkTransactionId ($a_id) | |
__checkItems ($a_array) | |
__saveTransaction ($a_id) | |
__sendBill ($bookings, $a_array) | |
__initShoppingCartObject () | |
__getCountries () | |
__getCountryCode ($value="") | |
__getCountryName ($value="") | |
Data Fields | |
$psc_obj = null | |
$user_obj = null | |
$db = null | |
$paypalConfig |
Definition at line 44 of file class.ilPurchasePaypal.php.
ilPurchasePaypal::__checkItems | ( | $ | a_array | ) |
Definition at line 178 of file class.ilPurchasePaypal.php.
References $total.
Referenced by checkData().
{ $genSet = new ilGeneralSettings(); include_once './payment/classes/class.ilPayMethods.php'; // Wrong currency if ($a_array["mc_currency"] != $genSet->get("currency_unit")) { return false; } if (is_array($sc = $this->psc_obj->getShoppingCart(PAY_METHOD_PAYPAL)) && count($sc) > 0) { for ($i = 0; $i < count($sc); $i++) { $items[$i] = array( "name" => $a_array["item_name".($i+1)], "amount" => $a_array["mc_gross_".($i+1)] ); } $found = 0; $total = 0; for ($i = 0; $i < count($sc); $i++) { for ($j = 0; $j < count($items); $j++) { if (substr($items[$j]["name"], 0, strlen($sc[$i]["obj_id"])+2) == "[".$sc[$i]["obj_id"]."]" && $items[$j]["amount"] == $sc[$i]["betrag"]) { $total += $items[$j]["amount"]; $found++; } } } // The number of items, the items themselves and their amounts and the total amount correct if (number_format($total, 2, ".", "") == $a_array["mc_gross"] && $found == count($sc)) { return true; } } return false; }
ilPurchasePaypal::__checkTransactionId | ( | $ | a_id | ) |
Definition at line 168 of file class.ilPurchasePaypal.php.
Referenced by checkData().
{ $query = "SELECT * FROM payment_statistic ". "WHERE transaction_extern = '".$a_id."'"; $res = $this->db->query($query); return $res->numRows() ? true : false; }
ilPurchasePaypal::__getCountries | ( | ) |
Definition at line 387 of file class.ilPurchasePaypal.php.
References $lng.
Referenced by __getCountryCode(), and __getCountryName().
{ global $lng; $lng->loadLanguageModule("meta"); $cntcodes = array ("DE","ES","FR","GB","AT","CH","AF","AL","DZ","AS","AD","AO", "AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY", "BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF", "BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM", "CG","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","TP","EC", "EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","FX","GF","PF", "TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GN", "GW","GY","HT","HM","HN","HU","IS","IN","ID","IR","IQ","IE","IL","IT", "JM","JP","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS", "LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH", "MQ","MR","MU","YT","MX","FM","MD","MC","MN","MS","MA","MZ","MM","NA", "NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM", "PK","PW","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO", "RU","RW","KN","LC","VC","WS","SM","ST","SA","CH","SN","SC","SL","SG", "SK","SI","SB","SO","ZA","GS","ES","LK","SH","PM","SD","SR","SJ","SZ", "SE","SY","TW","TJ","TZ","TH","TG","TK","TO","TT","TN","TR","TM","TC", "TV","UG","UA","AE","GB","UY","US","UM","UZ","VU","VA","VE","VN","VG", "VI","WF","EH","YE","ZR","ZM","ZW"); $cntrs = array(); foreach($cntcodes as $cntcode) { $cntrs[$cntcode] = $lng->txt("meta_c_".$cntcode); } asort($cntrs); return $cntrs; }
ilPurchasePaypal::__getCountryCode | ( | $ | value = "" |
) |
Definition at line 420 of file class.ilPurchasePaypal.php.
References __getCountries().
{ $countries = $this->__getCountries(); foreach($countries as $code => $text) { if ($text == $value) { return $code; } } return; }
ilPurchasePaypal::__getCountryName | ( | $ | value = "" |
) |
Definition at line 433 of file class.ilPurchasePaypal.php.
References __getCountries().
{ $countries = $this->__getCountries(); return $countries[$value]; }
ilPurchasePaypal::__initShoppingCartObject | ( | ) |
Definition at line 382 of file class.ilPurchasePaypal.php.
Referenced by ilPurchasePaypal().
{ $this->psc_obj =& new ilPaymentShoppingCart($this->user_obj); }
ilPurchasePaypal::__saveTransaction | ( | $ | a_id | ) |
Definition at line 227 of file class.ilPurchasePaypal.php.
References $ilias, $obj_id, $query, $res, $total, and ilPaymentObject::_getObjectData().
Referenced by checkData().
{ global $ilias, $ilUser, $ilObjDataCache; if (is_array($sc = $this->psc_obj->getShoppingCart(PAY_METHOD_PAYPAL)) && count($sc) > 0) { include_once './payment/classes/class.ilPaymentBookings.php'; $book_obj =& new ilPaymentBookings($this->usr_obj); for ($i = 0; $i < count($sc); $i++) { $pobjectData = ilPaymentObject::_getObjectData($sc[$i]["pobject_id"]); $inst_id_time = $ilias->getSetting('inst_id').'_'.$ilUser->getId().'_'.substr((string) time(),-3); $book_obj->setTransaction($inst_id_time.substr(md5(uniqid(rand(), true)), 0, 4)); $book_obj->setPobjectId($sc[$i]["pobject_id"]); $book_obj->setCustomerId($ilUser->getId()); $book_obj->setVendorId($pobjectData["vendor_id"]); $book_obj->setPayMethod($pobjectData["pay_method"]); $book_obj->setOrderDate(time()); $book_obj->setDuration($sc[$i]["dauer"]); $book_obj->setPrice($sc[$i]["betrag_string"]); $book_obj->setPayed(1); $book_obj->setAccess(1); $book_obj->setVoucher(''); $book_obj->setTransactionExtern($a_id); $book_obj->add(); $obj_id = $ilObjDataCache->lookupObjId($pobjectData["ref_id"]); $obj_type = $ilObjDataCache->lookupType($obj_id); $obj_title = $ilObjDataCache->lookupTitle($obj_id); $bookings["list"][] = array( "type" => $obj_type, "title" => "[".$obj_id."]: " . $obj_title, "duration" => $sc[$i]["dauer"], "price" => $sc[$i]["betrag_string"] ); $total += $sc[$i]["betrag"]; $query = "DELETE FROM payment_shopping_cart ". "WHERE pobject_id = '".$sc[$i]["pobject_id"]."'"; $res = $this->db->query($query); } } $bookings["total"] = $total; $bookings["vat"] = $this->psc_obj->getVat($total); return $bookings; }
ilPurchasePaypal::__sendBill | ( | $ | bookings, | |
$ | a_array | |||
) |
Definition at line 284 of file class.ilPurchasePaypal.php.
References $ilias, $tpl, ilUtil::html2pdf(), and ilUtil::makeDir().
Referenced by checkData().
{ global $ilUser, $ilias; $transaction = $a_array["txn_id"]; include_once './classes/class.ilTemplate.php'; include_once './classes/class.ilUtil.php'; include_once './payment/classes/class.ilGeneralSettings.php'; include_once './payment/classes/class.ilPaymentShoppingCart.php'; include_once './classes/class.ilMimeMail.php'; $genSet = new ilGeneralSettings(); $tpl = new ilTemplate("./payment/templates/default/tpl.pay_paypal_bill.html", true, true, true); $tpl->setVariable("VENDOR_ADDRESS", nl2br(utf8_decode($genSet->get("address")))); $tpl->setVariable("VENDOR_ADD_INFO", nl2br(utf8_decode($genSet->get("add_info")))); $tpl->setVariable("VENDOR_BANK_DATA", nl2br(utf8_decode($genSet->get("bank_data")))); $tpl->setVariable("TXT_BANK_DATA", utf8_decode($this->lng->txt("pay_bank_data"))); # $tpl->setVariable("CUSTOMER_FIRSTNAME", utf8_decode($ilUser->getFirstname())); # $tpl->setVariable("CUSTOMER_LASTNAME", utf8_decode($ilUser->getLastname())); # $tpl->setVariable("CUSTOMER_STREET", utf8_decode($ilUser->getStreet())); # $tpl->setVariable("CUSTOMER_ZIPCODE", utf8_decode($ilUser->getZipcode())); # $tpl->setVariable("CUSTOMER_CITY", utf8_decode($ilUser->getCity())); # $tpl->setVariable("CUSTOMER_COUNTRY", utf8_decode($ilUser->getCountry())); $tpl->setVariable("CUSTOMER_FIRSTNAME", $a_array["first_name"]); $tpl->setVariable("CUSTOMER_LASTNAME", $a_array["last_name"]); $tpl->setVariable("CUSTOMER_STREET", $a_array["address_street"]); $tpl->setVariable("CUSTOMER_ZIPCODE", $a_array["address_zip"]); $tpl->setVariable("CUSTOMER_CITY", $a_array["address_city"]); $tpl->setVariable("CUSTOMER_COUNTRY", $a_array["address_country"]); $tpl->setVariable("BILL_NO", $transaction); $tpl->setVariable("DATE", date("d.m.Y")); $tpl->setVariable("TXT_BILL", utf8_decode($this->lng->txt("pays_bill"))); $tpl->setVariable("TXT_BILL_NO", utf8_decode($this->lng->txt("pay_bill_no"))); $tpl->setVariable("TXT_DATE", utf8_decode($this->lng->txt("date"))); $tpl->setVariable("TXT_ARTICLE", utf8_decode($this->lng->txt("pay_article"))); $tpl->setVariable("TXT_PRICE", utf8_decode($this->lng->txt("price_a"))); for ($i = 0; $i < count($bookings["list"]); $i++) { $tpl->setCurrentBlock("loop"); $tpl->setVariable("LOOP_OBJ_TYPE", utf8_decode($this->lng->txt($bookings["list"][$i]["type"]))); $tpl->setVariable("LOOP_TITLE", utf8_decode($bookings["list"][$i]["title"])); $tpl->setVariable("LOOP_TXT_ENTITLED_RETRIEVE", utf8_decode($this->lng->txt("pay_entitled_retrieve"))); $tpl->setVariable("LOOP_DURATION", $bookings["list"][$i]["duration"] . " " . utf8_decode($this->lng->txt("paya_months"))); $tpl->setVariable("LOOP_PRICE", $bookings["list"][$i]["price"]); $tpl->parseCurrentBlock("loop"); } $tpl->setVariable("TXT_TOTAL_AMOUNT", utf8_decode($this->lng->txt("pay_bmf_total_amount"))); $tpl->setVariable("TOTAL_AMOUNT", number_format($bookings["total"], 2, ",", ".") . " " . $genSet->get("currency_unit")); if ($bookings["vat"] > 0) { $tpl->setVariable("VAT", number_format($bookings["vat"], 2, ",", ".") . " " . $genSet->get("currency_unit")); $tpl->setVariable("TXT_VAT", $genSet->get("vat_rate") . "% " . utf8_decode($this->lng->txt("pay_bmf_vat_included"))); } $tpl->setVariable("TXT_PAYMENT_TYPE", utf8_decode($this->lng->txt("pay_payed_paypal"))); if (!@file_exists($genSet->get("pdf_path"))) { ilUtil::makeDir($genSet->get("pdf_path")); } if (@file_exists($genSet->get("pdf_path"))) { ilUtil::html2pdf($tpl->get(), $genSet->get("pdf_path") . "/" . $transaction . ".pdf"); } if (@file_exists($genSet->get("pdf_path") . "/" . $transaction . ".pdf") && $ilUser->getEmail() != "" && $ilias->getSetting("admin_email") != "") { $m= new ilMimeMail; // create the mail $m->From( $ilias->getSetting("admin_email") ); $m->To( $ilUser->getEmail() ); $m->Subject( $this->lng->txt("pay_message_subject") ); $message = $this->lng->txt("pay_message_hello") . " " . $ilUser->getFirstname() . " " . $ilUser->getLastname() . ",\n\n"; $message .= $this->lng->txt("pay_message_thanks") . "\n\n"; $message .= $this->lng->txt("pay_message_attachment") . "\n\n"; $message .= $this->lng->txt("pay_message_regards") . "\n\n"; $message .= strip_tags($genSet->get("address")); $m->Body( $message ); // set the body $m->Attach( $genSet->get("pdf_path") . "/" . $transaction . ".pdf", "application/pdf" ) ; // attach a file of type image/gif $m->Send(); // send the mail } @unlink($genSet->get("pdf_path") . "/" . $transaction . ".html"); @unlink($genSet->get("pdf_path") . "/" . $transaction . ".pdf"); }
ilPurchasePaypal::checkData | ( | $ | fp | ) |
Definition at line 78 of file class.ilPurchasePaypal.php.
References $_GET, $auth_token, $key, $res, __checkItems(), __checkTransactionId(), __saveTransaction(), and __sendBill().
{ global $ilUser; // read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-synch'; $tx_token = $_GET['tx']; $auth_token = $this->paypalConfig["auth_token"]; $req .= "&tx=$tx_token&at=$auth_token"; $header .= "POST " . $this->paypalConfig["server_path"] . " HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; fputs ($fp, $header . $req); // read the body data $res = ''; $headerdone = false; while (!feof($fp)) { $line = fgets ($fp, 1024); if (strcmp($line, "\r\n") == 0) { // read the header $headerdone = true; } else if ($headerdone) { // header has been read. now read the contents $res .= $line; } } // parse the data $lines = explode("\n", $res); $keyarray = array(); if (strcmp ($lines[0], "SUCCESS") == 0) { for ($i=1; $i<count($lines);$i++) { list($key,$val) = explode("=", $lines[$i]); $keyarray[urldecode($key)] = urldecode($val); } // check customer if ($ilUser->getId() != $keyarray["custom"]) { #echo "Wrong customer"; return ERROR_WRONG_CUSTOMER; } // check the payment_status is Completed if (!in_array($keyarray["payment_status"], array("Completed", "In-Progress", "Pending", "Processed"))) { #echo "Not completed"; return ERROR_NOT_COMPLETED; } // check that txn_id has not been previously processed if ($this->__checkTransactionId($keyarray["txn_id"])) { #echo "Prev. processed trans. id"; return ERROR_PREV_TRANS_ID; } // check that receiver_email is your Primary PayPal email if ($keyarray["receiver_email"] != $this->paypalConfig["vendor"]) { #echo "Wrong vendor"; return ERROR_WRONG_VENDOR; } // check that payment_amount/payment_currency are correct if (!$this->__checkItems($keyarray)) { #echo "Wrong items"; return ERROR_WRONG_ITEMS; } $bookings = $this->__saveTransaction($keyarray["txn_id"]); $this->__sendBill($bookings, $keyarray); return SUCCESS; } else if (strcmp ($lines[0], "FAIL") == 0) { return ERROR_FAIL; } }
ilPurchasePaypal::ilPurchasePaypal | ( | &$ | user_obj | ) |
Definition at line 55 of file class.ilPurchasePaypal.php.
References $lng, $user_obj, and __initShoppingCartObject().
{ global $ilDB,$lng; $this->user_obj =& $user_obj; $this->db =& $ilDB; $this->lng =& $lng; $this->__initShoppingCartObject(); $ppSet = new ilPaypalSettings(); $this->paypalConfig = $ppSet->getAll(); $this->lng->loadLanguageModule("payment"); }
ilPurchasePaypal::openSocket | ( | ) |
Definition at line 71 of file class.ilPurchasePaypal.php.
{ // post back to PayPal system to validate $fp = @fsockopen ($this->paypalConfig["server_host"], 80, $errno, $errstr, 30); return $fp; }
ilPurchasePaypal::$db = null |
Definition at line 51 of file class.ilPurchasePaypal.php.
ilPurchasePaypal::$paypalConfig |
Definition at line 53 of file class.ilPurchasePaypal.php.
ilPurchasePaypal::$psc_obj = null |
Definition at line 49 of file class.ilPurchasePaypal.php.
ilPurchasePaypal::$user_obj = null |
Definition at line 50 of file class.ilPurchasePaypal.php.
Referenced by ilPurchasePaypal().