예제 #1
0
$sessionRequired = true;
$sessionAllowed = true;
$customSessionVarsToRetrieve = array("PayPalTxnDetails");
include "Header.php";
include_once "classes/PayPalMsgHandler.class.php";
include_once "classes/PayPalUser.class.php";
// If redirected to this page from PDTHandler after error, set error message
$errMsg = "";
if (isset($_GET['error'])) {
    if ($_GET['error'] == "PDTError") {
        $errMsg = "There was a problem retrieving your completed transaction details -- please log out, then log in again, to check your current membership status. ";
    }
}
// Retrieve PayPal transaction details, if redirected to this page from a PayPal message handler
$replyMsg = PayPalTxnMsg::ConstructDefaultMsg();
$payPalUser = PayPalUser::constructDefaultPayPalUser();
$numDaysTillNextCycle = 0;
$isRecurringArticleClass = "";
$extendArticleClass = "";
if (isset($customSessionVars) && count($customSessionVars) > 0) {
    // Get transaction details
    $replyMsg = $customSessionVars["PayPalTxnDetails"];
    $replyMsg->SubscriptionIsRecurring = true;
    // If new signup, we can assume subscription is recurring
    $extendArticleClass = "hidden";
    // Look up PayPal user info for this user
    $payPalMsgHandler = new PayPalMsgHandler();
    $payPalUser = $payPalMsgHandler->LookUpPayPalUserByUserId($dataAccess, $logger, $objUser->UserID);
    // If transaction details message is available, need to update related session variables
    $sessionDataAccess = new DataAccess();
    $sessionHandler = new DBSessionHandler($sessionDataAccess);
 public function LookUpPayPalUserByPayerId($dataAccess, $logger, $payerID, $subscriptionID = "-1")
 {
     $getUserQuery = "SELECT `ID`, IFNULL(`SubscriptionType`, '') AS SubscriptionType, IFNULL(`SubscriptionAmtTotal`, 0) AS SubscriptionAmtTotal, " . "IFNULL(`SubscriptionAmtPaidLastCycle`, 0) AS SubscriptionAmtPaidLastCycle, IFNULL(`SubscriptionStartedDate`, '') AS SubscriptionStartedDate, " . "IFNULL(`SubscriptionModifiedDate`, '') AS SubscriptionModifiedDate, IFNULL(`LastBillDate`, '') AS LastBillDate, " . "IFNULL(`MembershipExpirationDate`, '') AS MembershipExpirationDate, `IsRecurring`, `IsActive`, `SubscriptionID`, `FK_User_ID` " . "FROM `Payments.PayPalUsers` " . "WHERE (`PayerId` = :payerId) AND (`SubscriptionID` != :subscrID) " . "ORDER BY `SubscriptionStartedDate` DESC LIMIT 1;";
     $parmPayerId = new QueryParameter(':payerId', $payerID, PDO::PARAM_STR);
     $parmSubscrId = new QueryParameter(':subscrID', $subscriptionID, PDO::PARAM_STR);
     $queryParms = array($parmPayerId, $parmSubscrId);
     $payPalUser = PayPalUser::constructDefaultPayPalUser();
     if ($dataAccess->BuildQuery($getUserQuery, $queryParms)) {
         $results = $dataAccess->GetSingleResult();
         if ($results != null) {
             $payPalUser = new PayPalUser($results['ID'], $results['FK_User_ID'], $results['IsActive'] == 1, $results['IsRecurring'] == 1, $results['LastBillDate'], $results['MembershipExpirationDate'], $payerID, $results['SubscriptionType'], $results['SubscriptionAmtTotal'], $results['SubscriptionAmtPaidLastCycle'], $results['SubscriptionStartedDate'], $results['SubscriptionModifiedDate'], $results['SubscriptionID']);
         }
     }
     $errors = $dataAccess->CheckErrors();
     if (strlen($errors) > 0) {
         $logger->LogError(sprintf("Could not retrieve information associated with payer ID '%s'. %s", $payerID, $errors));
     }
     return $payPalUser;
 }