function eStore_auth_net_ipn_processor_listener()
{
    if (isset($_REQUEST['x_invoice_num']) && isset($_REQUEST['x_trans_id']) && isset($_REQUEST['x_amount'])) {
        if (get_option('eStore_use_authorize_gateway')) {
            //Auth.net is enabled
            //Process the IPN
        } else {
            eStore_payment_debug("Authorize.net payment gateway is not enabled in eStore settings. This IPN will not be processed", false);
        }
    } else {
        return;
    }
    status_header(200);
    include_once 'lib/gateway/Authorize.php';
    include_once 'eStore_process_payment_data.php';
    // Create an instance of the authorize.net library
    $myAuthorize = new Authorize();
    // Log the IPN results
    $debug_on = get_option('eStore_cart_enable_debug');
    if ($debug_on) {
        $myAuthorize->ipnLog = TRUE;
    }
    // Specify your authorize api and transaction id
    $authorize_login_id = get_option('eStore_authorize_login');
    $authorize_tx_key = get_option('eStore_authorize_tx_key');
    $myAuthorize->setUserInfo($authorize_login_id, $authorize_tx_key);
    // Enable test mode if needed
    if (get_option('eStore_cart_enable_sandbox')) {
        $myAuthorize->enableTestMode();
    }
    // Check validity and process
    if ($myAuthorize->validateIpn()) {
        handle_payment_data($myAuthorize->ipnData, "authorize");
    } else {
        $_SESSION['eStore_tx_result'] = $myAuthorize->lastError;
        //Ipn validation failed... redirect to the cancel URL
        $return = get_option('cart_cancel_from_paypal_url');
        if (empty($return)) {
            $return = get_bloginfo('wpurl');
        }
        $redirection_parameter = 'Location: ' . $return;
        header($redirection_parameter);
        exit;
    }
}
function espresso_process_authnet($payment_data)
{
    // Include the authorize.net library
    include_once 'Authorize.php';
    // Create an instance of the authorize.net library
    $myAuthorize = new Authorize();
    echo '<!--Event Espresso Authorize.net SIM Gateway Version ' . $myAuthorize->gateway_version . '-->';
    // Log the IPN results
    $myAuthorize->ipnLog = TRUE;
    $authnet_settings = get_option('event_espresso_authnet_settings');
    $authnet_login_id = $authnet_settings['authnet_login_id'];
    $authnet_transaction_key = $authnet_settings['authnet_transaction_key'];
    // Enable test mode if needed
    //4007000000027  <-- test successful visa
    //4222222222222  <-- test failure card number
    if ($authnet_settings['use_sandbox']) {
        $myAuthorize->enableTestMode();
        $email_transaction_dump = true;
    }
    // Specify your authorize login and secret
    $myAuthorize->setUserInfo($authnet_login_id, $authnet_transaction_key);
    $payment_data['txn_type'] = 'authorize.net SIM';
    $payment_data['payment_status'] = "Incomplete";
    if (!empty($_REQUEST['x_trans_id'])) {
        $payment_data['txn_id'] = $_REQUEST['x_trans_id'];
    } else {
        $payment_data['txn_id'] = 0;
    }
    $payment_data['txn_details'] = serialize($_REQUEST);
    $curl_session_id = uniqid('', true);
    global $wpdb;
    $sql = "UPDATE " . EVENTS_ATTENDEE_TABLE . " SET attendee_session = '" . $curl_session_id . "' WHERE attendee_session ='" . $payment_data['attendee_session'] . "' ";
    $wpdb->query($sql);
    $payment_data['attendee_session'] = $curl_session_id;
    // Check validity and write down it
    if ($myAuthorize->validateIpn()) {
        $payment_data['txn_id'] = $myAuthorize->ipnData['x_trans_id'];
        $payment_data['txn_details'] = serialize($myAuthorize->ipnData);
        //file_put_contents('authorize.txt', 'SUCCESS' . date("m-d-Y")); //Used for debugging purposes
        //Be sure to echo something to the screen so authent knows that the ipn works
        //store the results in reusable variables
        if ($myAuthorize->ipnData['x_response_code'] == 1) {
            ?>
			<h2><?php 
            _e('Thank You!', 'event_espresso');
            ?>
</h2>
			<p><?php 
            _e('Your transaction has been processed.', 'event_espresso');
            ?>
</p>
			<?php 
            $payment_data['payment_status'] = 'Completed';
        } else {
            ?>
			<h2 style="color:#F00;"><?php 
            _e('There was an error processing your transaction!', 'event_espresso');
            ?>
</h2>
			<p><strong>Error:</strong> (Payment was declined)</p>
			<?php 
            $payment_data['payment_status'] = 'Payment Declined';
        }
        //Debugging option
        $email_transaction_dump = true;
        if ($email_transaction_dump == true) {
            // For this, we'll just email ourselves ALL the data as plain text output.
            $subject = 'Authorize.net Notification - Gateway Variable Dump';
            $body = "An authorize.net payment notification was successfully recieved\n";
            $body .= "from " . $myAuthorize->ipnData['x_email'] . " on " . date('m/d/Y');
            $body .= " at " . date('g:i A') . "\n\nDetails:\n";
            foreach ($myAuthorize->ipnData as $key => $value) {
                $body .= "\n{$key}: {$value}\n";
            }
            wp_mail($payment_data['contact'], $subject, $body);
        }
    } else {
        ?>
		<h2 style="color:#F00;"><?php 
        _e('There was an error processing your transaction!', 'event_espresso');
        ?>
</h2>
		<p><strong>Error:</strong> (IPN response did not validate) ?></p>
		<?php 
        if (is_writable('authorize.txt')) {
            file_put_contents('authorize.txt', "FAILURE\n\n" . $myAuthorize->ipnData);
        }
        //echo something to the screen so authent knows that the ipn works
        $subject = 'Instant Payment Notification - Gateway Variable Dump';
        $body = "An instant payment notification failed\n";
        $body .= "from " . $myAuthorize->ipnData['x_email'] . " on " . date('m/d/Y');
        $body .= " at " . date('g:i A') . "\n\nDetails:\n";
        foreach ($myAuthorize->ipnData as $key => $value) {
            $body .= "\n{$key}: {$value}\n";
        }
        wp_mail($payment_data['contact'], $subject, $body);
    }
    add_action('action_hook_espresso_email_after_payment', 'espresso_email_after_payment');
    return $payment_data;
}
include_once 'eStore_process_payment_data.php';
status_header(200);
// Create an instance of the authorize.net library
$myAuthorize = new Authorize();
// Log the IPN results
$debug_on = get_option('eStore_cart_enable_debug');
if ($debug_on) {
    $myAuthorize->ipnLog = TRUE;
}
// Specify your authorize api and transaction id
$authorize_login_id = get_option('eStore_authorize_login');
$authorize_tx_key = get_option('eStore_authorize_tx_key');
$myAuthorize->setUserInfo($authorize_login_id, $authorize_tx_key);
// Enable test mode if needed
if (get_option('eStore_cart_enable_sandbox')) {
    $myAuthorize->enableTestMode();
}
// Check validity and process
if ($myAuthorize->validateIpn()) {
    handle_payment_data($myAuthorize->ipnData, "authorize");
} else {
    $_SESSION['eStore_tx_result'] = $myAuthorize->lastError;
    //Ipn validation failed... redirect to the cancel URL
    $return = get_option('cart_cancel_from_paypal_url');
    if (empty($return)) {
        $return = get_bloginfo('wpurl');
    }
    $redirection_parameter = 'Location: ' . $return;
    header($redirection_parameter);
    exit;
}
Esempio n. 4
0
 function authorize()
 {
     // make sure there are no timeouts...
     echo 'Processing...';
     flush();
     $gate = $this->db->get_where('gateways', array('name' => 'authorize'))->row();
     $gate_conf = unserialize($gate->settings);
     // Include the paypal library
     include_once APPPATH . 'libraries/payment/Authorize.php';
     $this->gateway = '2';
     // Create an instance of the authorize.net library
     $myAuthorize = new Authorize();
     // Log the IPN results
     // $myAuthorize->ipnLog = TRUE;
     // Specify your authorize login and secret
     $myAuthorize->setUserInfo($gate_conf['login'], $gate_conf['secret']);
     // Enable test mode if needed
     $myAuthorize->enableTestMode();
     // Check validity and write down it
     if ($myAuthorize->validateIpn()) {
         $settings = unserialize(base64_decode($myAuthorize->ipnData['x_Cust_ID']));
         if ($settings['type'] == 'reg') {
             $this->_newUserPayment($settings['user_id'], $myAuthorize->ipnData['x_Amount']);
             redirect('/user/pay_complete');
         }
         redirect('/user/pay_cancel');
     } else {
         $this->_logError($myAuthorize->ipnData);
         redirect('/user/pay_cancel');
     }
 }