<?php

$path = '../lib';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once 'services/AdaptivePayments/AdaptivePaymentsService.php';
require_once 'PPLoggingManager.php';
$logger = new PPLoggingManager('CancelPreapproval');
// create request
$requestEnvelope = new RequestEnvelope("en_US");
$cancelPreapprovalReq = new CancelPreapprovalRequest($requestEnvelope, $_POST['preapprovalKey']);
$logger->log("Created CancelPreapprovalRequest Object");
$service = new AdaptivePaymentsService();
try {
    $response = $service->CancelPreapproval($cancelPreapprovalReq);
    $logger->error("Received CancelPreapprovalResponse:");
    $ack = strtoupper($response->responseEnvelope->ack);
} catch (Exception $ex) {
    throw new Exception('Error occurred in CancelPreapproval method');
}
if ($ack != "SUCCESS") {
    echo "<b>Error </b>";
    echo "<pre>";
    print_r($response);
    echo "</pre>";
    require_once 'Common/Response.php';
    exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 function doCancelPreapproval($backing)
 {
     // $backing is projectbacking record
     extract($backing);
     $this->con->update("update projectbacking set payment_status='c' where backingId='" . $backingId . "'");
     if (isset($paypalId) && !empty($paypalId) && $paypalid != 0) {
         $this->con->update("update paypaltransaction set status='CANCELLED' where paypalId='" . $paypalId . "'");
     }
     $requestEnvelope = new RequestEnvelope("en_US");
     $cancelPreapprovalReq = new CancelPreapprovalRequest($requestEnvelope, $preapproval_key);
     wrtlog("DEBUG cancelPreapprovalReq=" . print_r($cancelPreapprovalReq, true));
     $service = new AdaptivePaymentsService(Configuration::getAcctAndConfig());
     try {
         $response = $service->CancelPreapproval($cancelPreapprovalReq);
         $final_arr = array();
         $preq = dismount($cancelPreapprovalReq);
         foreach ($preq as $K => $P) {
             $final_arr[addslashes($K)] = addslashes(is_array($P) ? json_encode($P) : $P);
         }
         if (is_object($response)) {
             $newarray = dismount($response);
             $response = $newarray;
         }
         foreach ($response as $K => $P) {
             $final_arr[addslashes($K)] = addslashes(is_array($P) ? json_encode($P) : $P);
         }
         $final_arr['url'] = get_url();
         $this->con->insert("insert into preapproval_detail (detail) values ('" . mysql_real_escape_string(json_encode($final_arr)) . "')");
         $cancel_detail_id = mysql_insert_id();
         $this->con->update("update projectbacking set cancel_detail_id='" . $cancel_detail_id . "' where backingId='" . $backingId . "'");
         wrtlog("DEBUG doCancelPreapproval response for project {$projectId} : " . print_r($response, true));
     } catch (Exception $ex) {
         wrtlog("DEBUG doCancelPreapproval error: " . $ex->getMessage());
         wrtlog("DEBUG doCancelPreapproval request: " . print_r($cancelPreapprovalReq, true));
         require_once 'Common/Error.php';
         /// THIS IS CALLED BY automatic_cron.php ////
         /// SO TBD IF WE SHOULD STOP IT          ////
         exit;
     }
 }