require_once $_CONF['path'] . 'plugins/paypal/proversion/paypalfunctions.php'; $finalPaymentAmount = $_SESSION["Payment_Amount"]; /* '------------------------------------ ' Calls the DoExpressCheckoutPayment API call '------------------------------------------------- */ if ($finalPaymentAmount > 0) { $resArray1 = ConfirmPayment($finalPaymentAmount); $ack = strtoupper($resArray1["ACK"]); if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { $items[1] = $_SESSION["item_id"]; $quantities[1] = 1; $item_price[1] = $_SESSION["Payment_Amount"]; $name[1] = $_SESSION["BILLINGDESCRIPTION"]; $display .= PAYPAL_handlePurchase($items, $quantities, $data, $name, $item_price, 1, 'complete', 0, '', '', $resArray1["PAYMENTINFO_0_TRANSACTIONTYPE"], $resArray1["PAYMENTINFO_0_PAYMENTTYPE"]); // Add user to group PAYPAL_addToGroup($_SESSION["group_id"], $_USER['uid']); } } $resArray = CreateRecurringPaymentsProfile(); $ack = strtoupper($resArray["ACK"]); if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { //Record profileid : ActiveProfile, PendingProfile, ExpiredProfile, SuspendedProfile, CancelledProfile $recdate = date("Y-m-d H:i:s"); DB_query("INSERT INTO {$_TABLES['paypal_recurrent']} SET profileid='{$resArray['PROFILEID']}', recdate='{$recdate}', status ='{$resArray['PROFILESTATUS']}', user_id = '{$_USER['uid']}', product_id = '{$_SESSION['item_id']}', group_id = '{$_SESSION["group_id"]}' "); $display .= "<p>{$LANG_PAYPAL_1['recurrent_has_been_set']} {$LANG_PAYPAL_1['will_pay']} <span style=\"border: 1px solid #DDD; background:#EEE; padding:5px;\">{$_SESSION["currencyCodeType"]} {$_SESSION["BILLINGAMT"]}</span> {$LANG_PAYPAL_1['every']} <span style=\"border: 1px solid #DDD; background:#EEE; padding:5px;\">{$_SESSION["BILLINGFREQUENCY"]} {$_SESSION["BILLINGPERIOD"]}</span></p>"; if ($finalPaymentAmount = 0) { PAYPAL_addToGroup($_SESSION["group_id"], $_USER['uid']); } } else {
} // price can only contain numbers and a decimal $_REQUEST['price'] = preg_replace('/[^\\d.]/', '', $_REQUEST['price']); if (!empty($_REQUEST['id'])) { // Edition $sql = "product_id = '{$_REQUEST['product_id']}', " . "user_id = '{$_REQUEST['user_id']}', " . "txn_id = '{$_REQUEST['txn_id']}', " . "purchase_date = '{$_REQUEST['purchase_date']}', " . "expiration = '{$_REQUEST['expiration']}', " . "price = '{$_REQUEST['price']}', " . "status = '{$_REQUEST['status']}', " . "add_to_group = '{$_REQUEST['add_to_group']}', " . "notification = '{$_REQUEST['notification']}'\n\t\t\t "; $sql = "UPDATE {$_TABLES['paypal_subscriptions']} SET {$sql} " . "WHERE id = {$_REQUEST['id']}"; } else { // Creation $prod_id = $_REQUEST['product_id']; $products[1] = $_REQUEST['product_id']; $quantity[1] = 1; $product_name = DB_getItem($_TABLES['paypal_products'], 'name', "id={$prod_id}"); $names[1] = $product_name; $prices[1] = $_REQUEST['price']; $txn_id = PAYPAL_handlePurchase($products, $quantity, $data, $names, $prices, 0, 'complete', $_REQUEST['user_id']); $sql = "product_id = '{$_REQUEST['product_id']}', " . "user_id = '{$_REQUEST['user_id']}', " . "txn_id = '{$txn_id}', " . "purchase_date = '{$_REQUEST['purchase_date']}', " . "expiration = '{$_REQUEST['expiration']}', " . "price = '{$_REQUEST['price']}', " . "status = '{$_REQUEST['status']}', " . "add_to_group = '{$_REQUEST['add_to_group']}', " . "notification = '{$_REQUEST['notification']}'\n\t\t\t "; $sql = "INSERT INTO {$_TABLES['paypal_subscriptions']} SET {$sql} "; } DB_query($sql); if (DB_error()) { $msg = $LANG_PAYPAL_1['save_fail']; } elseif ($_REQUEST['id'] == 0) { $msg = $LANG_PAYPAL_1['subscription_label'] . ' >> ' . $LANG_PAYPAL_1['save_success']; //add user to group if ($_POST['notification'] != '3') { PAYPAL_addToGroup($_REQUEST['add_to_group'], $_REQUEST['user_id']); } } else { $msg = $LANG_PAYPAL_1['subscription_label'] . ' ' . $_REQUEST['id'] . ' >> ' . $LANG_PAYPAL_1['save_success']; //add user to group
$i = 1; for (;;) { if ($ipn['item_number' . $i] == '') { break; } $products[$i] = $ipn['item_number' . $i]; $quantity[$i] = $ipn['quantity' . $i]; $names[$i] = $ipn['item_name' . $i]; $prices[$i] = $ipn['mc_gross_' . $i]; $i++; } $timestamp = strtotime($ipn['payment_date']); //Testing for check //$timestamp = strtotime($ipn['order_date']); $mysql_date = date("Y-m-d H:i:s", $timestamp); PAYPAL_handlePurchase($products, $quantity, $ipn, $names, $prices, 0, 'complete', $ipn['custom'], $ipn['txn_id'], $mysql_date); // Set verified to true DB_query("UPDATE {$_TABLES['paypal_ipnlog']} SET verified = 1 WHERE txn_id = '{$txn_id}'"); if (DEBUG) { COM_errorLog("PAYPAL: handle purchase for old IPN {$txn_id} done!"); } } echo $LANG_PAYPAL_1['done']; break; case 'paypal_new_ipn': $content = $_POST['content']; $raw_ipn = explode('&', $content); foreach ($raw_ipn as $keyval) { $keyval = explode('=', $keyval); if (count($keyval) == 2) { //if (DEBUG) COM_errorLog('PAYPAL: IPN pair: ' . $keyval[0] . ' | ' . $keyval[1]);
$item_price[$i] = $item['price']; $A = DB_fetchArray(DB_query("SELECT * FROM {$_TABLES['paypal_products']} WHERE id = '{$item_id}' LIMIT 1")); if ($item_price[$i] != PAYPAL_productPrice($A) || !SEC_hasAccess2($A) || $A['active'] != '1') { $valid_prices = false; } $i++; } if ($valid_prices !== true) { echo COM_refresh($_CONF['site_url'] . '/index.php'); exit; } //Main // EMPTY THE CART $cart->empty_cart(); $display .= PAYPAL_siteHeader(); $display .= paypal_user_menu(); switch ($_REQUEST['mode']) { default: //Display cart $display .= '<div id="cart"> <div id="jcart"> <ul id="ULcheckoutProcedure"> <li>' . $LANG_PAYPAL_1['checkout_step_1'] . '</li> <li>' . $LANG_PAYPAL_1['checkout_step_2'] . '</li> <li id="LIactiveStep">' . $LANG_PAYPAL_1['checkout_step_3'] . '</li> </ul> </div></div>'; $display .= PAYPAL_handlePurchase($items, $quantities, $data, $namesfromcart, $item_price); $display .= PAYPAL_siteFooter(); } COM_output($display);