Example #1
0
     */
    function process_ipn_return()
    {
        global $mp;
    }
    function api_call($url, $fields)
    {
        global $mp;
        $param_list = array();
        foreach ($fields as $k => $v) {
            $param_list[] = "{$k}=" . rawurlencode($v);
        }
        $url .= '?' . implode('&', $param_list);
        //build args
        $args['user-agent'] = "MarketPress/{$mp->version}: http://premium.wpmudev.org/project/e-commerce | eWay Shared Payments Gateway/{$mp->version}";
        $args['sslverify'] = false;
        $args['timeout'] = 60;
        //use built in WP http class to work with most server setups
        $response = wp_remote_get($url, $args);
        if (is_wp_error($response) || wp_remote_retrieve_response_code($response) != 200) {
            $mp->cart_checkout_error(__('There was a problem connecting to eWay. Please try again.', 'mp'));
            return false;
        } else {
            return $response['body'];
        }
    }
}
//register gateway only if SimpleXML module installed
if (class_exists("SimpleXMLElement")) {
    mp_register_gateway_plugin('MP_Gateway_eWay_Shared', 'eway', __('eWay Shared Payments', 'mp'));
}
Example #2
0
    //This function will take NVPString and convert it to an Associative Array and it will decode the response.
    function deformatNVP($nvpstr)
    {
        parse_str($nvpstr, $nvpArray);
        return $nvpArray;
    }
    function trim_name($name, $length = 127)
    {
        while (strlen(urlencode($name)) > $length) {
            $name = substr($name, 0, -1);
        }
        return urlencode($name);
    }
}
//register shipping plugin
mp_register_gateway_plugin('MP_Gateway_Paypal_Express', 'paypal-express', __('PayPal Express Checkout', 'mp'), true);
if (is_multisite()) {
    //tie into network settings form
    add_action('mp_network_gateway_settings', 'pe_network_gateway_settings_box');
}
function pe_network_gateway_settings_box($settings)
{
    global $mp;
    ?>
  <script type="text/javascript">
	  jQuery(document).ready(function($) {
      $("#gbl_gw_paypal-express").change(function() {
        $("#mp-main-form").submit();
  		});
    });
	</script>
Example #3
0
            $payment_info['total'] = $_POST['amount'];
            $payment_info['currency'] = $_POST['currency'];
            if ($mp->get_order($order_id)) {
                $mp->update_order_payment_status($order_id, $status, $paid);
            } else {
                if ($create_order) {
                    //succesful payment, create our order now
                    $cart = get_transient('mp_order_' . $order_id . '_cart');
                    $shipping_info = get_transient('mp_order_' . $order_id . '_shipping');
                    $user_id = get_transient('mp_order_' . $order_id . '_userid');
                    $success = $mp->create_order($order_id, $cart, $shipping_info, $payment_info, $paid, $user_id);
                    //if successful delete transients
                    if ($success) {
                        delete_transient('mp_order_' . $order_id . '_cart');
                        delete_transient('mp_order_' . $order_id . '_shipping');
                        delete_transient('mp_order_' . $order_id . '_userid');
                    }
                }
            }
            //if we get this far return success so ipns don't get resent
            header('HTTP/1.0 200 OK');
            exit('Successfully recieved!');
        } else {
            header('HTTP/1.0 403 Forbidden');
            exit('Invalid request');
        }
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_Moneybookers', 'moneybookers', __('Skrill (Moneybookers)', 'mp'));
Example #4
0
        $order = $mp->get_order($orderId);
        switch ($invoice_status) {
            case 'paid':
                $status = sprintf(__('%s - The payment request is under process. Bitpay invoice status - %s', 'mp'), 'pending', $invoice_status);
                $mp->update_order_payment_status($orderId, $status, false);
                break;
            case 'confirmed':
                $status = sprintf(__('%s - The payment request is under process. Bitpay invoice status - %s', 'mp'), 'pending', $invoice_status);
                $mp->update_order_payment_status($orderId, $status, false);
                break;
            case 'complete':
                $status = sprintf(__('%s - The payment request has been processed - %s', 'mp'), $invoice_status, $invoice_status);
                if ($order->post_status != 'order_paid') {
                    $mp->update_order_payment_status($orderId, $status, true);
                }
                break;
            case 'invalid':
                $status = sprintf(__('%s - The payment not credited in merchants bitpay account, action required. Bitpay invoice status  - %s', 'mp'), 'error', $invoice_status);
                $mp->update_order_payment_status($orderId, $status, false);
                break;
            case 'expired':
                $status = sprintf(__('%s - The payment request expired, - %s', 'mp'), 'cancelled', $invoice_status);
                $mp->update_order_payment_status($orderId, $status, false);
                $mp->update_order_status($orderId, 'closed');
                break;
        }
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_Bitpay', 'bitpay', __('Bitpay (alpha)', 'mp'));
Example #5
0
            if (strtolower($tco_hash) != strtolower($calc_key)) {
                header('HTTP/1.0 403 Forbidden');
                header('Content-type: text/plain; charset=UTF-8');
                print 'We were unable to authenticate the request';
                exit(0);
            }
            if (strtolower($_REQUEST['invoice_status']) != "deposited") {
                header('HTTP/1.0 200 OK');
                header('Content-type: text/plain; charset=UTF-8');
                print 'Thank you very much for letting us know. REF: Not success';
                exit(0);
            }
            if ($this->SandboxFlag != 'sandbox') {
                if (intval($total) >= $order->mp_order_total) {
                    $payment_info = $order->mp_payment_info;
                    $payment_info['transaction_id'] = $tco_invoice_id;
                    $payment_info['method'] = $payment_method;
                    update_post_meta($order->ID, 'mp_payment_info', $payment_info);
                    $mp->update_order_payment_status($tco_vendor_order_id, "paid", true);
                    header('HTTP/1.0 200 OK');
                    header('Content-type: text/plain; charset=UTF-8');
                    print 'Thank you very much for letting us know';
                    exit(0);
                }
            }
        }
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_2Checkout', '2checkout', __('2Checkout', 'mp'));
Example #6
0
<?php

/*
MarketPress Authorize.net AIM Gateway Plugin
Author: S H Mohanjith (Incsub)
*/
class MP_Gateway_AuthorizeNet_AIM extends MP_Gateway_API
{
}
mp_register_gateway_plugin('MP_Gateway_AuthorizeNet_AIM', 'authorizenet-aim', __('Authorize.net AIM Checkout', 'mp'), false, true);
Example #7
0
                    $payment_info['gateway_public_name'] = $this->public_name;
                    $payment_info['gateway_private_name'] = $this->admin_name;
                    $payment_info['method'] = sprintf(__('%1$s Card ending in %2$s - Expires %3$s', 'mp'), ucfirst($charge['payment']['card_type']), $charge['payment']['last4'], $charge['payment']['expire_month'] . '/' . $charge['payment']['expire_year']);
                    $payment_info['transaction_id'] = $charge['id'];
                    $timestamp = time();
                    $payment_info['status'][$timestamp] = __('Paid', 'mp');
                    $payment_info['total'] = $total;
                    $payment_info['currency'] = $this->currency;
                    $order = $mp->create_order($order_id, $cart, $_SESSION['mp_shipping_info'], $payment_info, true);
                    unset($_SESSION['paymillToken']);
                    $mp->set_cart_cookie(array());
                }
            } catch (Exception $e) {
                unset($_SESSION['paymillToken']);
                $mp->cart_checkout_error(sprintf(__('There was an error processing your card: "%s". Please <a href="%s">go back and try again</a>.', 'mp'), $e->getMessage(), mp_checkout_step_url('checkout')));
                return false;
            }
        }
    }
    /**
     * INS and payment return
     */
    function process_ipn_return()
    {
        global $mp;
        $settings = get_option('mp_settings');
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_Paymill', 'paymill', __('Paymill (beta)', 'mp'));
     * Filters posted data from your settings form. Do anything you need to the $settings['gateways']['plugin_name']
     *	array. Don't forget to return!
     */
    function process_gateway_settings($settings)
    {
        if (isset($settings['gateways']['paymill-for-wordpress']) && !is_array($settings['gateways']['paymill-for-wordpress'])) {
            return $settings;
        }
        //strip slashes
        $settings['gateways']['paymill-for-wordpress'] = array_map('stripslashes', (array) $settings['gateways']['paymill-for-wordpress']);
        //no html
        $settings['gateways']['paymill-for-wordpress']['name'] = stripslashes(wp_filter_nohtml_kses($settings['gateways']['paymill-for-wordpress']['name']));
        $settings['gateways']['paymill-for-wordpress']['image-url'] = stripslashes(wp_filter_nohtml_kses($settings['gateways']['paymill-for-wordpress']['image-url']));
        //filter html if needed
        if (!current_user_can('unfiltered_html')) {
            $settings['gateways']['paymill-for-wordpress']['instructions'] = wp_filter_post_kses($settings['gateways']['paymill-for-wordpress']['instructions']);
        }
        $settings['gateways']['paymill-for-wordpress']['instructions'] = wpautop($settings['gateways']['paymill-for-wordpress']['instructions']);
        return $settings;
    }
    /**
     * Use to handle any payment returns from your gateway to the ipn_url. Do not echo anything here. If you encounter errors
     *	return the proper headers to your ipn sender. Exits after.
     */
    function process_ipn_return()
    {
    }
}
//register shipping plugin
mp_register_gateway_plugin('MP_Gateway_Paymill_for_Wordpress', 'paymill-for-wordpress', __('Paymill for WordPress', 'paymill'), true);
Example #9
0
<?php

/*
MarketPress Stripe Gateway Plugin
Author: Aaron Edwards
*/
class MP_Gateway_Stripe extends MP_Gateway_API
{
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_Stripe', 'stripe', __('Stripe', 'mp'), false, true);
Example #10
0
<?php

/*
MarketPress Payflow Pro Gateway Plugin
Author: Sue Cline (Cyclonic Consulting)
*/
class MP_Gateway_Payflow extends MP_Gateway_API
{
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_Payflow', 'payflow', __('PayPal Payflow Pro (beta)', 'mp'), false, true);
Example #11
0
<?php

/*
MarketPress iDeal Gateway Plugin
Author: Remi Schouten
*/
class MP_Gateway_IDeal extends MP_Gateway_API
{
}
mp_register_gateway_plugin('MP_Gateway_IDeal', 'ideal', __('iDEAL (beta)', 'mp'), false, true);
Example #12
0
<?php

/*
MarketPress PayPal Chained Payments Gateway Plugin
Author: Aaron Edwards (Incsub)
*/
class MP_Gateway_Paypal_Chained_Payments extends MP_Gateway_API
{
}
mp_register_gateway_plugin('MP_Gateway_Paypal_Chained_Payments', 'paypal-chained', __('PayPal Chained Payments', 'mp'), false, true);
Example #13
0
                        $shipping_info['name'] = $response['buyer-shipping-address_contact-name'];
                        $shipping_info['address1'] = $response['buyer-shipping-address_address1'];
                        $shipping_info['address2'] = $response['buyer-shipping-address_address2'];
                        $shipping_info['city'] = $response['buyer-shipping-address_city'];
                        $shipping_info['state'] = $response['buyer-shipping-address_region'];
                        $shipping_info['zip'] = $response['buyer-shipping-address_postal-code'];
                        $shipping_info['country'] = $response['buyer-shipping-address_country-code'];
                        $shipping_info['phone'] = $response['buyer-shipping-address_phone'];
                        */
                        $success = $mp->create_order($order_id, $cart, $shipping_info, $payment_info, $paid, $user_id);
                        //if successful delete transients
                        if ($success) {
                            delete_transient('mp_order_' . $temp_id . '_cart');
                            delete_transient('mp_order_' . $temp_id . '_shipping');
                            delete_transient('mp_order_' . $temp_id . '_userid');
                        }
                    }
                }
            }
            //if we get this far return success so ipns don't get resent
            header('HTTP/1.0 200 OK');
            die('<notification-acknowledgment xmlns="http://checkout.google.com/schema/2" serial-number="' . $_POST['serial-number'] . '" />');
        } else {
            header('HTTP/1.0 403 Forbidden');
            exit('Invalid request');
        }
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_GoogleCheckout', 'google-checkout', __('Google Checkout', 'mp'));
Example #14
0
            if ($charge->paymentStatus == 'APPROVED') {
                $payment_info = array();
                $payment_info['gateway_public_name'] = $this->public_name;
                $payment_info['gateway_private_name'] = $this->admin_name;
                $payment_info['method'] = sprintf(__('%1$s Card ending in %2$s - Expires %3$s', 'mp'), $charge->card->type, $charge->card->last4, $charge->card->expMonth . '/' . $charge->card->expYear);
                $payment_info['transaction_id'] = $charge->id;
                $timestamp = time();
                $payment_info['status'][$timestamp] = __('Paid', 'mp');
                $payment_info['total'] = $total;
                $payment_info['currency'] = $this->currency;
                $order = $mp->create_order($order_id, $cart, $_SESSION['mp_shipping_info'], $payment_info, true);
                unset($_SESSION['simplifyToken']);
                $mp->set_cart_cookie(array());
            }
        } catch (Exception $e) {
            unset($_SESSION['simplifyToken']);
            $mp->cart_checkout_error(sprintf(__('There was an error processing your card: "%s". Please <a href="%s">go back and try again</a>.', 'mp'), $e->getMessage(), mp_checkout_step_url('checkout')));
            return false;
        }
    }
    /**
     * INS and payment return
     */
    function process_ipn_return()
    {
        global $mp;
        $settings = get_option('mp_settings');
    }
}
mp_register_gateway_plugin('MP_Gateway_Simplify', 'simplify', __('Simplify Commerce by MasterCard', 'mp'));
Example #15
0
<?php

/*
MarketPress Moneybookers Gateway Plugin
Author: Aaron Edwards
*/
class MP_Gateway_Moneybookers extends MP_Gateway_API
{
}
mp_register_gateway_plugin('MP_Gateway_Moneybookers', 'moneybookers', __('Moneybookers', 'mp'), false, true);
Example #16
0
						<input value="<?php 
        echo esc_attr($mp->get_setting('gateways->eway30->UserPasswordSandbox'));
        ?>
" size="20" name="mp[gateways][eway30][UserPasswordSandbox]" type="text" />
						</label></p>
					</td>
					</tr>
				</table>
			</div>
		</div>
		<?php 
    }
    /**
     * Filters posted data from your settings form. Do anything you need to the $settings['gateways']['plugin_name']
     *	array. Don't forget to return!
     */
    function process_gateway_settings($settings)
    {
        return $settings;
    }
    /**
     * Use to handle any payment returns from your gateway to the ipn_url. Do not echo anything here. If you encounter errors
     *	return the proper headers to your ipn sender. Exits after.
     */
    function process_ipn_return()
    {
        global $mp;
    }
}
mp_register_gateway_plugin('MP_Gateway_eWay30', 'eway30', __('eWay Rapid 3.0 Payments (beta)', 'mp'));
Example #17
0
                $payment_info = array();
                $payment_info['gateway_public_name'] = $this->public_name;
                $payment_info['gateway_private_name'] = $this->admin_name;
                $payment_info['method'] = sprintf(__('%1$s', 'mp'), $credit_card_response->credit_card_name);
                $payment_info['transaction_id'] = $order_id;
                $timestamp = time();
                $payment_info['status'][$timestamp] = __('Paid', 'mp');
                $payment_info['total'] = $total;
                $payment_info['currency'] = $this->currency;
                $order = $mp->create_order($order_id, $cart, $_SESSION['mp_shipping_info'], $payment_info, true);
                unset($_SESSION['payment_method_id']);
                $mp->set_cart_cookie(array());
            }
        } catch (Exception $e) {
            unset($_SESSION['payment_method_id']);
            $mp->cart_checkout_error(sprintf(__('There was an error processing your card: "%s". Please <a href="%s">go back and try again</a>.', 'mp'), $e->getMessage(), mp_checkout_step_url('checkout')));
            return false;
        }
    }
    /**
     * INS and payment return
     */
    function process_ipn_return()
    {
        global $mp;
        $settings = get_option('mp_settings');
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_Wepay', 'wepay', __('WePay', 'mp'));
Example #18
0
<?php

/*
MarketPress CubePoints Plugin
Requires the CubePoints plugin: http://wordpress.org/extend/plugins/cubepoints/
Author: David Mallonee (Incsub)
*/
class MP_Gateway_CubePoints extends MP_Gateway_API
{
}
mp_register_gateway_plugin('MP_Gateway_CubePoints', 'cubepoints', __('CubePoints', 'mp'), false, true);
Example #19
0
                    $settings['gateways']['mycred']['exchange'] = str_replace(',', '.', $settings['gateways']['mycred']['exchange']);
                } else {
                    $settings['gateways']['mycred']['exchange'] = 1;
                }
                $settings['gateways']['mycred']['profit_share_percent'] = stripslashes(trim($settings['gateways']['mycred']['profit_share_percent']));
                $settings['gateways']['mycred']['profit_share_log'] = stripslashes(wp_filter_nohtml_kses($settings['gateways']['mycred']['profit_share_log']));
                $settings['gateways']['mycred']['lowfunds'] = stripslashes(wp_filter_post_kses($settings['gateways']['mycred']['lowfunds']));
                $settings['gateways']['mycred']['visitors'] = stripslashes(wp_filter_post_kses($settings['gateways']['mycred']['visitors']));
                $settings['gateways']['mycred']['instructions'] = stripslashes(wp_filter_post_kses($settings['gateways']['mycred']['instructions']));
                $settings['gateways']['mycred']['confirmation'] = stripslashes(wp_filter_post_kses($settings['gateways']['mycred']['confirmation']));
                // Email (no html)
                $settings['gateways']['mycred']['email'] = stripslashes(wp_filter_nohtml_kses($settings['gateways']['mycred']['email']));
                return $settings;
            }
        }
        mp_register_gateway_plugin('MP_Gateway_myCRED', 'mycred', 'myCRED');
    }
}
/**
 * Filter the myCRED Log
 * Parses the %order_id% and %order_link% template tags.
 * @since 1.1
 * @version 1.1
 */
if (!function_exists('mycred_marketpress_parse_log')) {
    add_filter('mycred_parse_log_entry_marketpress_payment', 'mycred_marketpress_parse_log', 90, 2);
    function mycred_marketpress_parse_log($content, $log_entry)
    {
        // Prep
        global $mp;
        $mycred = mycred($log_entry->ctype);
Example #20
0
                $payment_info = array();
                $payment_info['gateway_public_name'] = $this->public_name;
                $payment_info['gateway_private_name'] = $this->admin_name;
                $payment_info['method'] = sprintf(__('%1$s Card ending in %2$s - Expires %3$s', 'mp'), $charge->card->type, $charge->card->last4, $charge->card->exp_month . '/' . $charge->card->exp_year);
                $payment_info['transaction_id'] = $charge->id;
                $timestamp = time();
                $payment_info['status'][$timestamp] = __('Paid', 'mp');
                $payment_info['total'] = $total;
                $payment_info['currency'] = $this->currency;
                $order = $mp->create_order($order_id, $cart, $_SESSION['mp_shipping_info'], $payment_info, true);
                unset($_SESSION['stripeToken']);
                $mp->set_cart_cookie(array());
            }
        } catch (Exception $e) {
            unset($_SESSION['stripeToken']);
            $mp->cart_checkout_error(sprintf(__('There was an error processing your card: "%s". Please <a href="%s">go back and try again</a>.', 'mp'), $e->getMessage(), mp_checkout_step_url('checkout')));
            return false;
        }
    }
    /**
     * INS and payment return
     */
    function process_ipn_return()
    {
        global $mp;
        $settings = get_option('mp_settings');
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_Stripe', 'stripe', __('Stripe', 'mp'));
    function deformatNVP($nvpstr)
    {
        parse_str($nvpstr, $nvpArray);
        return $nvpArray;
    }
}
//only load on multisite
if (is_multisite()) {
    //set names here to be able to translate
    if (is_super_admin()) {
        $admin_name = __('PayPal Chained Payments', 'mp');
    } else {
        $admin_name = __('PayPal', 'mp');
    }
    //register gateway plugin
    mp_register_gateway_plugin('MP_Gateway_Paypal_Chained_Payments', 'paypal-chained', $admin_name);
    //tie into network settings form
    add_action('mp_network_gateway_settings', 'pc_network_gateway_settings_box');
    function pc_network_gateway_settings_box($settings)
    {
        global $mp;
        ?>
    <script type="text/javascript">
  	  jQuery(document).ready(function($) {
        $("#gbl_gw_paypal-chained, #gw_full_paypal-chained, #gw_supporter_paypal-chained, #gw_none_paypal-chained").change(function() {
          $("#mp-main-form").submit();
    		});
      });
  	</script>
		<?php 
        //skip if not enabled
Example #22
0
            return $this->approved;
        }
        function isDeclined()
        {
            return $this->declined;
        }
        function isError()
        {
            return $this->error;
        }
        function getResponseText()
        {
            return $this->results["RESPMSG"];
        }
        function getAuthCode()
        {
            return $this->results["AUTHCODE"];
        }
        function getAVSResponse()
        {
            return true;
        }
        function getTransactionID()
        {
            return $this->results["PNREF"];
        }
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_Payflow', 'payflow', __('PayPal Payflow Pro', 'mp'));
Example #23
0
<?php

/*
MarketPress 2Checkout Gateway Plugin
Author: S H Mohanjith (Incsub)
*/
class MP_Gateway_2Checkout extends MP_Gateway_API
{
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_2Checkout', '2checkout', __('2Checkout', 'mp'), false, true);
Example #24
0
    <?php 
    }
    /**
     * Filters posted data from your settings form. Do anything you need to the $settings['gateways']['plugin_name']
     *  array. Don't forget to return!
     */
    function process_gateway_settings($settings)
    {
        //strip slashes
        $settings['gateways']['manual-payments'] = array_map('stripslashes', $settings['gateways']['manual-payments']);
        //no html in public name
        $settings['gateways']['manual-payments']['name'] = wp_filter_nohtml_kses($settings['gateways']['manual-payments']['name']);
        //filter html if needed
        if (!current_user_can('unfiltered_html')) {
            $settings['gateways']['manual-payments']['instructions'] = filter_post_kses($settings['gateways']['manual-payments']['instructions']);
            $settings['gateways']['manual-payments']['confirmation'] = filter_post_kses($settings['gateways']['manual-payments']['confirmation']);
        }
        //no html in email
        $settings['gateways']['manual-payments']['email'] = wp_filter_nohtml_kses($settings['gateways']['manual-payments']['email']);
        return $settings;
    }
    /**
     * Use to handle any payment returns to the ipn_url. Do not display anything here. If you encounter errors
     *  return the proper headers. Exits after.
     */
    function process_ipn_return()
    {
    }
}
mp_register_gateway_plugin('MP_Gateway_ManualPayments', 'manual-payments', __('Manual Payments', 'mp'));
Example #25
0
                    $timestamp = time();
                    $payment_info['status'][$timestamp] = __('Paid', 'mp');
                    $payment_info['total'] = $total;
                    $payment_info['currency'] = $this->currency;
                    $order = $mp->create_order($order_id, $cart, $_SESSION['mp_shipping_info'], $payment_info, true);
                    unset($_SESSION['card_token']);
                    $mp->set_cart_cookie(array());
                } else {
                    unset($_SESSION['card_token']);
                    $mp->cart_checkout_error(sprintf(__('There was an error processing your card. Please <a href="%s">go back and try again</a>.', 'mp'), mp_checkout_step_url('checkout')));
                    return false;
                }
            } catch (Exception $e) {
                unset($_SESSION['card_token']);
                $mp->cart_checkout_error(sprintf(__('There was an error processing your card: "%s". Please <a href="%s">go back and try again</a>.', 'mp'), $e->getMessage(), mp_checkout_step_url('checkout')));
                return false;
            }
        }
    }
    /**
     * INS and payment return
     */
    function process_ipn_return()
    {
        global $mp;
        $settings = get_option('mp_settings');
    }
}
//register payment gateway plugin
mp_register_gateway_plugin('MP_Gateway_PIN', 'pin', __('PIN (beta)', 'mp'));