if (isset($_POST['duration']) && $projectDurationOption == '0') { $startDate = time(); $endDate = strtotime($_POST['Selecteddays']); } elseif ($projectDurationOption == '1') { $days = (int) $_POST['days']; $days = $days * 24 * 3600; $startDate = time(); $endDate = $startDate + $days; } else { $days = 30 * 24 * 3600; $projectDurationOption = 0; $startDate = time(); $endDate = $startDate + $days; } $projectDurationOption = isset($projectDurationOption) ? $projectDurationOption : 0; $commision = get_commission($projectId, $projectFunding, '0', 'p'); if ($commision == "") { $sel_re_projectcommission = mysql_fetch_array($con->recordselect("SELECT * FROM smallprojectamount")); $admincommission = $sel_re_projectcommission['std_cat_commission']; } else { $admincommission = $commision; } $updateBasic = $con->update("UPDATE projectbasics SET `projectStart` = " . $startDate . ", \n\t\t\t\t\t\t`projectEnd` = " . $endDate . " , `durationType` = '" . $projectDurationOption . "' , \n\t\t\t\t\t\t`fundingGoal` ='" . $projectFunding . "', `admincommission` = " . $admincommission . " \n\t\t\t\t\t\tWHERE `projectId` = " . $projectId); } elseif ($_POST['current'] == '4') { // save the rewards //echo $_POST['current']; $rewardQr = $con->delete("DELETE FROM projectrewards WHERE projectId=" . $projectId); $pledgeAmount = $_POST['rewardAmount']; $limitAvail = $_POST['avail']; $rewardDescription = $_POST['rewardDescription']; $rewardMonth = $_POST['rewardMonth'];
function backerPreapprovePayment($array) { extract($array); // the following (other than user_amount name change) are a bit redundant // but here for a touch of security... $backerId = sanitize_string($array['backerId']); $user_amount = sanitize_string($array['amount']); $projectId = sanitize_string($array['projectId']); $rewardId = sanitize_string($array['rewardId']); $TrackingID = generate_password(5); $user = mysql_fetch_array($this->con->recordselect("SELECT * from `users` where `userId` = " . $_SESSION['userId'])); //$backer_paypal = base64_decode($user['paypalUserAccount']); $backer_email = base64_decode($user['emailAddress']); $senderPhoneCountryCode = ''; $senderPhone = ''; $project_rcd = mysql_fetch_array($this->con->recordselect("SELECT * from `projects` where `projectId` = {$projectId} ")); $creator = mysql_fetch_array($this->con->recordselect("SELECT * from `users` where `userId` = " . $project_rcd['userId'])); $creator_paypal = base64_decode($creator['paypalUserAccount']); $project = mysql_fetch_array($this->con->recordselect("SELECT * from `projectbasics` where `projectId` = {$projectId} ")); $Memo = "Support CrowdedRocket project: " . $project['projectTitle']; $CurrencyCode = 'USD'; $DateOfMonth = '0'; $DayOfWeek = 'NO_DAY_SPECIFIED'; $StartingDate = date('Y-m-d', strtotime("+10 minutes", $project['projectEnd'])); $EndingDate = date('Y-m-d', strtotime("+5 days", $project['projectEnd'])); $IPNNotificationURL = ''; $MaxAmountPerPayment = $user_amount; $MaxNumberOfPayments = 1; $MaxTotalAmountOfAllPaymentsPerPeriod = $user_amount; $MaxTotalAmountOfAllPayments = $user_amount; $PaymentPeriod = 'NO_PERIOD_SPECIFIED'; $PinType = 'NOT_REQUIRED'; $ReturnURL = SITE_URL . 'thankyou.php?projectId=' . $projectId . '&trackingId=' . $TrackingID; //$CancelURL =SITE_URL."browseproject/".$projectId."/".Slug($selectProject['projectTitle']).'/'; $CancelURL = SITE_URL . 'precancel.php?projectId=' . $projectId . '&trackingId=' . $TrackingID; //$SenderEmail='admin@'.$_SERVER['SERVER_NAME']; $FeesPayer = 'PRIMARYRECEIVER'; $DisplayMaxTotalAmount = true; $CustomerID = $backerId; $CustomerType = 'Backer'; $GeoLocation = ''; $Model = '1.0'; $PartnerName = DISPLAYSITENAME; $commission = get_commission($projectId, $user_amount, '0', 'p'); // Prepare request arrays $PreapprovalFields = array('CancelURL' => $CancelURL, 'CurrencyCode' => $CurrencyCode, 'DateOfMonth' => $DateOfMonth, 'DayOfWeek' => $DayOfWeek, 'EndingDate' => $EndingDate, 'IPNNotificationURL' => $IPNNotificationURL, 'MaxAmountPerPayment' => $MaxAmountPerPayment, 'MaxNumberOfPayments' => $MaxNumberOfPayments, 'MaxTotalAmountOfAllPaymentsPerPeriod' => $MaxTotalAmountOfAllPaymentsPerPeriod, 'MaxTotalAmountOfAllPayments' => $MaxTotalAmountOfAllPayments, 'Memo' => $Memo, 'PaymentPeriod' => $PaymentPeriod, 'PinType' => $PinType, 'ReturnURL' => $ReturnURL, 'SenderEmail' => $backer_email, 'StartingDate' => $StartingDate, 'FeesPayer' => $FeesPayer, 'DisplayMaxTotalAmount' => $DisplayMaxTotalAmount); $ClientDetailsFields = array('CustomerID' => $CustomerID, 'CustomerType' => $CustomerType, 'GeoLocation' => $GeoLocation, 'Model' => $Model, 'PartnerName' => $PartnerName); /* $Receivers = array(); $Receiver = array( 'Amount' => $commission, 'Email' => $this->PayPalConfig["DeveloperAccountEmail"], 'InvoiceID' => '', 'PaymentType' => '', 'PaymentSubType' => '', 'Phone' => array('CountryCode' => '', 'PhoneNumber' => '', 'Extension' => ''), 'Primary' => 'FALSE' ); array_push($Receivers,$Receiver); $Receiver = array( 'Amount' => $user_amount, 'Email' =>$creator_paypal, 'InvoiceID' => '', 'PaymentType' => '', 'PaymentSubType' => '', 'Phone' => array('CountryCode' => $senderPhoneCountryCode, 'PhoneNumber' => $senderPhone, 'Extension' => ''), 'Primary' => 'TRUE' ); array_push($Receivers,$Receiver); $PayPalRequestData = array( 'PreapprovalFields' => $PreapprovalFields, 'ClientDetailsFields' => $ClientDetailsFields, 'Receivers' => $Receivers ); */ $PayPalRequestData = array('PreapprovalFields' => $PreapprovalFields, 'ClientDetailsFields' => $ClientDetailsFields); // Pass data into class for processing with PayPal and load the response array into $PayPalResult $PayPal = new PayPal_Adaptive($this->PayPalConfig); wrtlog("backerPreapprovePayment requesting Preapproval using: " . print_r($PayPalRequestData, true)); $PayPalResult = $PayPal->Preapproval($PayPalRequestData); wrtlog("backerPreapprovePayment after Preapproval - PayPalResult: " . print_r($PayPalResult, true)); /* ex per paypal doc Response -------- responseEnvelope.ack=Success &preapprovalKey=PA-5KY19448VE6821234 #Value of the preapproval key, for use in subsequent steps However, what we get back from paypal.adaptive.class.php is array( 'Errors' => $Errors, 'Ack' => $Ack, 'Build' => $Build, 'CorrelationID' => $CorrelationID, 'Timestamp' => $Timestamp, 'PreapprovalKey' => $PreapprovalKey, 'RedirectURL' => $PreapprovalKey != '' ? $RedirectURL : '', 'XMLRequest' => $XMLRequest, 'XMLResponse' => $XMLResponse) //// expect only the Ack, PreapprovalKey, RedirectURL, XMLRequest and XMLResponse to be filled.. */ if (isset($PayPalResult['Ack']) && strtolower($PayPalResult['Ack']) == 'success') { // jwg -- $PayPalResult contains both the current TrackingID and the new CorrelationID if (!isset($PayPalResult['PreapprovalKey'])) { $errors = "UNEXPECTED - no PreapprovalKey in paypal preapproval response."; wrtlog($errors); wrtlog("PayPalResult from Preapproval: " . print_r($PayPalResult, true)); $_SESSION['msgType1'] = array('from' => 'user', 'type' => 'error', 'var' => "multiple", 'val' => $errors); return SITE_URL . "projectBacker/" . $projectId; } else { // Create a pre-approved projectbacking record including the preapproval key $final_arr = array(); foreach ($PayPalRequestData as $K => $P) { $final_arr['request.' . addslashes($K)] = addslashes(is_array($P) ? json_encode($P) : $P); } foreach ($PayPalResult as $K => $P) { $final_arr[addslashes($K)] = addslashes(is_array($P) ? json_encode($P) : $P); } $this->con->insert("insert into preapproval_detail (detail) values ('" . json_encode($final_arr) . "')"); $preapproval_detail_id = mysql_insert_id(); // create initial backing record with payment_status='?' $this->con->insert("INSERT INTO `projectbacking` " . "(rewardId, projectId, userId, pledgeAmount, backingTime, paypalId,preapproval_detail_id,payment_status,preapproval_key,tracking_id,pledgeCommision) " . "VALUES('" . $rewardId . "','" . $projectId . "', " . $backerId . ", '" . $user_amount . "', " . time() . ",NULL,'" . $preapproval_detail_id . "','?','" . $PayPalResult['PreapprovalKey'] . "','" . $TrackingID . "','" . $commission . "')"); wrtlog("backerPreapprovePayment redirecting to " . $PayPalResult['RedirectURL']); redirect($PayPalResult['RedirectURL']); // This is where user makes actual decision to pre-approve // control returns to either ReturnURL (thankyou.php) or CancelURL (precancel.php) } } else { //$PayPalErrorsSerialized = serialize($PayPalResult['Errors']); //$PayPalErrorsUnserialized = unserialize($PayPalErrorsSerialized); //print $PayPalErrorsSerialized; $error = array(); foreach ($PayPalResult['Errors'] as $er) { $error[] = $er['Message']; } $errors = implode("<br/>", $error); $_SESSION['msgType1'] = array('from' => 'user', 'type' => 'error', 'var' => "multiple", 'val' => $errors); return SITE_URL . "projectBacker/" . $projectId; } }
function doPreapproval($array) { // $array is $_POST from paypalInfo.tpl.php form submission // extract yields: $amount, $rewardId, $projectId, $backerId // $backerId has been verified == $_SESSION['userId'] by our caller extract($array); $TrackingID = generate_password(5); $user = mysql_fetch_array($this->con->recordselect("SELECT * from `users` where `userId` = {$backerId} ")); $senderEmail = base64_decode($user['paypalUserAccount']); if (empty($senderEmail)) { $senderEmail = base64_decode($user['emailAddress']); } $project_rcd = mysql_fetch_array($this->con->recordselect("SELECT * from `projects` where `projectId` = {$projectId} ")); $project = mysql_fetch_array($this->con->recordselect("SELECT * from `projectbasics` where `projectId` = {$projectId} ")); $memo = "Support CrowdedRocket project: " . $project['projectTitle']; $returnUrl = SITE_URL . 'modules/projectBacker/thankyou.php?projectId=' . $projectId . '&trackingId=' . $TrackingID; $cancelUrl = SITE_URL . 'modules/projectBacker/precancel.php?projectId=' . $projectId . '&trackingId=' . $TrackingID; $currencyCode = 'USD'; $startingDate = date('Y-m-d', strtotime("+10 minutes", $project['projectEnd'])); $endingDate = date('Y-m-d', strtotime("+5 days", $project['projectEnd'])); // copied from samples PreapprovalReceipt.php $requestEnvelope = new RequestEnvelope("en_US"); $preapprovalRequest = new PreapprovalRequest($requestEnvelope, $cancelUrl, $currencyCode, $returnUrl, $startingDate); $preapprovalRequest->endingDate = $endingDate; $preapprovalRequest->maxAmountPerPayment = $amount; $preapprovalRequest->maxNumberOfPayments = 1; $preapprovalRequest->maxNumberOfPaymentsPerPeriod = 1; $preapprovalRequest->maxTotalAmountOfAllPayments = $amount; $preapprovalRequest->memo = $memo; $preapprovalRequest->senderEmail = $senderEmail; $preapprovalRequest->feesPayer = 'PRIMARYRECEIVER'; $preapprovalRequest->displayMaxTotalAmount = 'TRUE'; $service = new AdaptivePaymentsService(Configuration::getAcctAndConfig()); try { $response = $service->Preapproval($preapprovalRequest); //wrtlog("DEBUG payment.class.php service Preapproval response: ".print_r($response,true)); $ack = strtoupper($response->responseEnvelope->ack); if ($ack != "SUCCESS") { wrtlog("WARNING payment.class.php Preapproval failed. response=" . print_r($resonse, true)); $redirectUrl = isset($response->redirectUrl) ? $response->redirectUrl : $cancelUrl; } else { $token = $response->preapprovalKey; $redirectUrl = isset($response->redirectUrl) ? $response->redirectUrl : $returnUrl; // Create a pre-approved projectbacking record including the preapproval key $final_arr = array(); foreach ($preapprovalRequest as $K => $P) { $final_arr['request.' . addslashes($K)] = addslashes(is_array($P) ? json_encode($P) : $P); } $response_array = dismount($response); foreach ($response_array as $K => $P) { $final_arr[addslashes($K)] = addslashes(is_array($P) ? json_encode($P) : $P); } $this->con->insert("insert into preapproval_detail (detail) values ('" . json_encode($final_arr) . "')"); $preapproval_detail_id = mysql_insert_id(); // create initial backing record with payment_status='?' $commission = get_commission($projectId, $amount); $this->con->insert("INSERT INTO `projectbacking` " . "(rewardId, projectId, userId, pledgeAmount, backingTime, paypalId,preapproval_detail_id,payment_status,preapproval_key,tracking_id,pledgeCommision) " . "VALUES('" . $rewardId . "','" . $projectId . "', " . $backerId . ", '" . $amount . "', " . time() . ",NULL,'" . $preapproval_detail_id . "','?','" . $token . "','" . $TrackingID . "','" . $commission . "')"); redirect($redirectUrl); // control returns to either returnUrl (thankyou.php) or cancelUrl (precancel.php) } } catch (Exception $ex) { return $ex; // return error to caller } }
<?php require_once "../../includes/config.php"; $cost = sanitize_string($_POST['cost']); $prjId = sanitize_string($_POST['projectId']); $manage_commision_cost = mysql_fetch_array($con->recordselect("SELECT value from commision WHERE start =0 AND end >0 AND type = 'p'")); if ($cost != '' && is_numeric($cost)) { $commision = get_commission($prjId, $cost, '0', 'p'); if ($commision == "") { $sel_re_projectcommission = mysql_fetch_array($con->recordselect("SELECT * FROM smallprojectamount")); echo $sel_re_projectcommission['std_cat_commission']; } else { if ($commision <= 0) { echo $manage_commision_cost['value']; } else { echo $commision; } } } else { echo $manage_commision_cost['value']; }