<?php

// Include required library files.
require_once '../includes/config.php';
require_once '../autoload.php';
// Create PayPal object.
$PayPalConfig = array('Sandbox' => $sandbox, 'APIUsername' => $payflow_username, 'APIPassword' => $payflow_password, 'APIVendor' => $payflow_vendor, 'APIPartner' => $payflow_partner, 'Verbosity' => 'HIGH', 'PrintHeaders' => $print_headers, 'LogResults' => $log_results, 'LogPath' => $log_path);
$PayPal = new angelleye\PayPal\PayFlow($PayPalConfig);
// Prepare request arrays
$PayPalRequestData = array('tender' => 'C', 'trxtype' => 'S', 'acct' => '4012888888881881', 'expdate' => '1215', 'amt' => '10.00', 'dutyamt' => '', 'freightamt' => '5.00', 'taxamt' => '2.50', 'taxexempt' => '', 'comment1' => 'This is a test!', 'comment2' => 'This is only a test!', 'cvv2' => '123', 'recurring' => '', 'swipe' => '', 'orderid' => '', 'billtoemail' => '*****@*****.**', 'billtophonenum' => '816-555-5555', 'billtofirstname' => 'Tester', 'billtomiddlename' => '', 'billtolastname' => 'Testerson', 'billtostreet' => '123 Test Ave.', 'billtocity' => 'Kansas City', 'billtostate' => 'MO', 'billtozip' => '64111', 'billtocountry' => 'US', 'shiptofirstname' => 'Tester', 'shiptomiddlename' => '', 'shiptolastname' => 'Testerson', 'shiptostreet' => '123 Test Ave.', 'shiptocity' => 'Kansas City', 'shiptostate' => 'MO', 'shiptozip' => '64111', 'shiptocountry' => 'US', 'origid' => '', 'custref' => '', 'custcode' => '', 'custip' => '', 'invnum' => '', 'ponum' => '', 'starttime' => '', 'endtime' => '', 'securetoken' => '', 'partialauth' => '', 'authcode' => '');
// Pass data into class for processing with PayPal and load the response array into $PayPalResult
$PayPalResult = $PayPal->ProcessTransaction($PayPalRequestData);
// Write the contents of the response array to the screen for demo purposes.
echo '<pre />';
print_r($PayPalResult);
     $_SESSION['shipping_state'] = isset($_SESSION['billing_state']) ? $_SESSION['billing_state'] : '';
     $_SESSION['shipping_postal_code'] = isset($_SESSION['billing_postal_code']) ? $_SESSION['billing_postal_code'] : '';
     $_SESSION['shipping_country_code'] = isset($_SESSION['billing_country_code']) ? $_SESSION['billing_country_code'] : '';
     $_SESSION['shipping_country_name'] = $paypal->GetCountryName($_SESSION['billing_country_code']);
 }
 $_SESSION['amount'] = $_POST['GrandTotal'];
 $_SESSION['subtotal'] = $_POST['NetAmount'];
 $_SESSION['shipping_amount'] = $_POST['ShippingAmount'];
 $_SESSION['handling_amount'] = $_POST['HandlingAmount'];
 $_SESSION['tax_amount'] = $_POST['TaxAmount'];
 $_SESSION['billingInfo'] = isset($_POST['billingInfo']) ? $_POST['billingInfo'] : array();
 $_SESSION['shippingInfo'] = isset($_POST['shippingInfo']) ? $_POST['shippingInfo'] : array();
 ##########[ Process Transaction ]############
 // Create new PayPal object
 $PayPalRequestData = array('tender' => 'C', 'trxtype' => $_SESSION['transaction_type'] == 'Sale' ? 'S' : 'A', 'acct' => $_SESSION['cc_number'], 'expdate' => $_SESSION['cc_expdate'], 'amt' => $_SESSION['amount'], 'dutyamt' => '', 'freightamt' => $_SESSION['shipping_amount'], 'taxamt' => $_SESSION['tax_amount'], 'taxexempt' => '', 'comment1' => $_SESSION['notes'], 'comment2' => '', 'cvv2' => $_SESSION['cvv2'], 'recurring' => '', 'swipe' => '', 'orderid' => '', 'billtoemail' => $_SESSION['billing_email'], 'billtophonenum' => $_SESSION['billing_phone'], 'billtofirstname' => $_SESSION['billing_first_name'], 'billtomiddlename' => '', 'billtolastname' => $_SESSION['billing_last_name'], 'billtostreet' => $_SESSION['billing_street1'] . ' ' . $_SESSION['billing_street2'], 'billtocity' => $_SESSION['billing_city'], 'billtostate' => $_SESSION['billing_state'], 'billtozip' => $_SESSION['billing_postal_code'], 'billtocountry' => $_SESSION['billing_country_code'], 'shiptofirstname' => $_SESSION['shipping_first_name'], 'shiptomiddlename' => '', 'shiptolastname' => $_SESSION['shipping_last_name'], 'shiptostreet' => $_SESSION['shipping_street1'], 'shiptocity' => $_SESSION['shipping_city'], 'shiptostate' => $_SESSION['shipping_state'], 'shiptozip' => $_SESSION['shipping_postal_code'], 'shiptocountry' => $_SESSION['shipping_country_code'], 'origid' => '', 'custref' => '', 'custcode' => '', 'custip' => '', 'invnum' => '', 'ponum' => '', 'starttime' => '', 'endtime' => '', 'securetoken' => '', 'partialauth' => '', 'authcode' => '');
 $_SESSION['PayPayResult'] = $paypal->ProcessTransaction($PayPalRequestData);
 // Write to transaction log
 if (isset($config['LogEnabled']) && $config['LogEnabled']) {
     logTransaction($_SESSION['PayPayResult'], $config['LogFilePath']);
 }
 if (isset($_SESSION['PayPayResult']['RESULT']) && $_SESSION['PayPayResult']['RESULT'] != 0) {
     $_SESSION['paypal_errors'] = $_SESSION['PayPayResult']['RESPMSG'];
     $PayPalErrors = $_SESSION['paypal_errors'];
     $result_data_html = '<ul>';
     $result_data_html .= '<li><strong>ERROR</strong>&nbsp;' . $PayPalErrors . '</li>';
     $result_data_html .= '</ul>';
     echo json_encode(array('result' => 'error', 'result_data' => $result_data_html));
     exit;
 }
 $_SESSION['PNREF'] = isset($_SESSION['PayPayResult']['PNREF']) ? $_SESSION['PayPayResult']['PNREF'] : '';
 $_SESSION['RESPMSG'] = isset($_SESSION['PayPayResult']['RESPMSG']) ? $_SESSION['PayPayResult']['RESPMSG'] : '';