Support

Home Forums Event Espresso Premium New Payment Gateway

New Payment Gateway

Posted: October 19, 2023 at 12:46 am

Viewing 1 reply thread


mbote

October 19, 2023 at 12:46 am

I need help in adding an Mpesa (mobile Money) payment gateway.

The code looks something like this


<?php
// In order to prevent direct access to the plugin
defined('ABSPATH') or die("No access please!");

// Event Espresso Payment Gateway header
/* Plugin Name: Event Espresso M-PESA Payment Gateway
* Plugin URI: https://paymentprocessor-script.com/
* Description: M-PESA Payment Gateway for Event Espresso.
* Version: 1.0.0
* Author: Your Name
* Author URI: Your Plugin Website
* Licence: GPL2
*/

// Add action to initialize the payment gateway
add_action('plugins_loaded', 'event_espresso_mpesa_payment_gateway_init');

// Define and enqueue CSS and JavaScript files
function event_espresso_mpesa_adds_to_the_head() {
    wp_enqueue_script('Callbacks', plugin_dir_url(__FILE__) . 'trxcheck.js', array('jquery'));
    wp_enqueue_style('Responses', plugin_dir_url(__FILE__) . '/display.css', false, '1.1', 'all');
}

// Add the CSS and JS files to the header
add_action('wp_enqueue_scripts', 'event_espresso_mpesa_adds_to_the_head');

// Register activation hook to create the transaction table
register_activation_hook(__FILE__, 'event_espresso_mpesatrx_install');

// Request payment function start
add_action('init', function () {
    // Add a custom path and set a custom query argument.
    add_rewrite_rule('^/event-espresso-payment/?([^/]*)/?', 'index.php?event_espresso_payment_action=1', 'top');
});

// Filter query vars to recognize the custom action
add_filter('query_vars', function ($query_vars) {
    $query_vars[] = 'event_espresso_payment_action';
    return $query_vars;
});

// Handle the custom action for payment requests
add_action('wp', function () {
    if (get_query_var('event_espresso_payment_action')) {
        event_espresso_mpesa_request_payment();
    }
});

// Request payment function end

// Callback handler function start
add_action('init', function () {
    add_rewrite_rule('^/event-espresso-callback/?([^/]*)/?', 'index.php?event_espresso_callback_action=1', 'top');
});

// Filter query vars for callback action
add_filter('query_vars', function ($query_vars) {
    $query_vars[] = 'event_espresso_callback_action';
    return $query_vars;
});

// Handle the custom action for callback processing
add_action('wp', function () {
    if (get_query_var('event_espresso_callback_action')) {
        event_espresso_mpesa_callback_handler();
    }
});

// Callback handler function end

// Callback scanner function start
add_action('init', function () {
    add_rewrite_rule('^/event-espresso-scanner/?([^/]*)/?', 'index.php?event_espresso_scanner_action=1', 'top');
});

// Filter query vars for scanner action
add_filter('query_vars', function ($query_vars) {
    $query_vars[] = 'event_espresso_scanner_action';
    return $query_vars;
});

// Handle the custom action for transaction scanning
add_action('wp', function () {
    if (get_query_var('event_espresso_scanner_action')) {
        event_espresso_mpesa_scan_transactions();
    }
});

// Callback scanner function end

// Initialize the payment gateway
function event_espresso_mpesa_payment_gateway_init() {
    if (!class_exists('EE_Payment_Method')) return;

    class EE_Payment_Method_Mpesa extends EE_Payment_Method {
        // Plugin constructor
        public function __construct() {
            // Initialize the payment method
            // Define payment method settings, actions, and form fields
        }

        // Other methods related to the payment method

        // Process payment function
        public function process_payment($transaction, $billing_info) {
            // Handle payment processing and redirects
        }
    }
}

// Add the M-PESA payment method to Event Espresso
function event_espresso_add_mpesa_payment_method($payment_methods) {
    $payment_methods[] = 'EE_Payment_Method_Mpesa';
    return $payment_methods;
}

// Register the M-PESA payment method
add_filter('FHEE_load_payment_method_classes', 'event_espresso_add_mpesa_payment_method');

// Create a table for M-PESA transactions during plugin activation
function event_espresso_mpesatrx_install() {
    // Database table creation
}

// Payment request function
function event_espresso_mpesa_request_payment() {
    // Handle M-PESA payment requests and responses
}

// Scanner function for transaction status
function event_espresso_mpesa_scan_transactions() {
    // Scan and handle transaction status
}

// Callback handler for payment responses
function event_espresso_mpesa_callback_handler() {
    // Handle callbacks from M-PESA payments
}

// Update transaction status
function event_espresso_mpesa_update_transaction($merchant_id, $rescode, $resdesc) {
    // Update the status of a transaction
}
?>


Tony

  • Support Staff

October 19, 2023 at 3:45 am

Hi there,

We don’t provide support for custom code on the forums but have you read through the details here:

https://eventespresso.com/2015/03/developers-guide-to-payment-methods-for-event-espresso-4-6/

and the developer docs here:

https://github.com/eventespresso/event-espresso-core/tree/master/docs/L–Payment-Methods-and-Gateways

Viewing 1 reply thread

The support post ‘New Payment Gateway’ is closed to new replies.

Have a question about this support post? Create a new support post in our support forums and include a link to this existing support post so we can help you.

Event Espresso