2. Construct
__construct()
public function __construct() { // Define gateway unique slug $this->unique_id = 'sample'; // Add gateway options to Admin > Jobster Settings > Payment Gateways add_action( 'wpj_after_admin_paypal_settings_fields', function() { if ( class_exists( 'Redux' ) ) { Redux::setSection( 'jobster_settings', array( 'id' => 'sample-settings', // settings option name 'title' => __( 'Sample', 'wpjobster-sample' ), // gateway settings page title 'desc' => __( 'Sample Settings', 'wpjobster-sample' ), // gateway settings page description 'subsection' => true, // subsection of Payment Gateways section 'fields' => wpj_get_gateway_default_fields( array( 'gateway_id' => $this->unique_id, // gateway id 'gateway_name' => 'Sample', // gateway name 'gateway_version' => WPJ_SAMPLE_VERSION, // gateway version 'gateway_instructions' => array( // gateway instructions 'Do you have any special instructions for your gateway?', 'You can put them here.', ), 'license' => true, // include license field 'enable' => true, // include enable field 'enable_sandbox' => true, // include enable sandbox field 'exclude_payment_type' => array( 'withdraw' ), // exclude payment types from options; accepted values: job_purchase, 'topup', 'featured', 'withdraw', 'tips', 'subscription', 'custom_extra' 'button_name' => true, // include button name field 'public_key' => false, // include public key field 'secret_key' => false, // include secret key field 'succes_page_url' => true, // include transaction success page field 'fail_page_url' => true, // include transaction failure page field 'new_fields' => array( // extra fields (optional fields) array( 'unique_id' => 'sample-settings-section', 'type' => 'section', 'title' => esc_html__( 'Keys', 'wpjobster-sample' ), 'indent' => true, ), array( 'unique_id' => 'wpjobster_sample_id', 'type' => 'text', 'title' => __( 'Sample ID', 'wpjobster-sample' ), ), array( 'unique_id' => 'wpjobster_sample_key', 'type' => 'text', 'title' => __( 'Sample Key', 'wpjobster-sample' ) ) ) ) ) ) ); } }); // Add gateway (button) to payment methods list - add button to checkout page add_filter( 'wpj_payment_gateways_filter', function ( $payment_gateways_list ) { $payment_gateways_list[$this->unique_id] = __( 'Sample', 'wpjobster-sample' ); return $payment_gateways_list; }, 10, 1 ); // Add gateway to payment process flow - send and receive the payment info add_action( 'wpjobster_taketo_' . $this->unique_id . '_gateway', array( $this, 'initializePayment' ), 10, 2 ); add_action( 'wpjobster_processafter_' . $this->unique_id . '_gateway', array( $this, 'processPayment' ), 10, 2 ); // Use this filter if your gateway works with a specific currency only add_filter( 'wpjobster_take_allowed_currency_' . $this->unique_id, array( $this, 'setGatewayCurrency' ) ); // Set plugin compatibility - prevents the plugin from activating on other themes add_action( 'admin_notices', array( $this, 'checkCompatibility' ) ); // Set plugin action link - show 'Settings' link to plugins page add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), function ( $links ) { return function_exists( 'wpj_generate_settings_link' ) ? array_merge( array( wpj_generate_settings_link( $this->unique_id ) ), $links ) : $links; }); // Set plugin textdomain add_action( 'plugins_loaded', function () { load_plugin_textdomain( 'wpjobster-sample', false, trailingslashit( dirname( plugin_basename( __FILE__ ) ) ) ); }, 0 ); // Gateway name translatable - allows the Gateway name to be translated into other languages add_filter( 'wpjobster_database_strings_filter', array( $this, 'translateGatewayName' ), 10, 1 ); // Add gateway to all plugins list add_filter( 'wpj_gateways_plugins_folder_list_filter', array( $this, 'addToGatwaysList' ), 10, 1 ); }
$this->unique_id - This is the lowercase name of your gateway and it really needs to be unique.
setGatewayCurrency()
public function setGatewayCurrencies( $currency ) { $currency = 'EUR'; return $currency; }
This function is filtering the currency for processing the payment.
If your gateway only accepts a certain currency this is the place where you can define it.
Feel free to play around with the conditions. For example, if your gateway accepts a limited range of currencies you can check if the selected currency is in the range, otherwise return a specific currency.
checkCompatibility()
public function checkCompatibility() { if ( ! function_exists( 'wpj_get_wpjobster_plugins_list' ) && ! defined( 'wpjobster_VERSION' ) ) $error = sprintf( __( 'The current theme is not compatible with the %s gateway. Activate the WPJobster theme before installing this plugin.', 'wpjobster' ), $this->unique_id ); if ( ! empty( $error ) && is_plugin_active( plugin_basename( __FILE__ ) ) ) { deactivate_plugins( plugin_basename( __FILE__ ), true ); ?> <div data-dismissible="compatibility-theme-notice" class="notice notice-error is-dismissible"><p><?php echo $error; ?></p></div> <?php if ( isset( $_GET['activate'] ) ) unset( $_GET['activate'] ); } do_action( 'wpj_after_plugin_compatibility_errors', WPJ_SAMPLE_VERSION, 'Sample', plugin_basename( __FILE__ ), WPJ_SAMPLE_REQUIRED_THEME_VERSION ); }<br>
This function checks if the gateway is compatible with the theme activated on the site, and if not, it will display a message and will not allow the plugin to be activated until the WPJobster theme is activated.
translateGatewayName()
public function translateGatewayName( $strings ) { $strings['sample'] = _x( 'Sample', 'Sample gateway', 'wpjobster-sample' ); return $strings; }
This function will allow the name of the plugin to be translated when it is saved as a string in the database, when an order is paid.
addToGatwaysList()
public function addToGatwaysList( $plugins ) { $plugins[] = 'wpjobster-sample-gateway'; return $plugins; }
This function will add the gateway to a WPJobster array containing all the gateways and extensions we have.