Adding New Payment Gateway
2 min read
Updated Jan 26, 2026
Introduce New Payment Gateway:
add_filter("payment_method", "\WPDMPP\Libs\PaymentMethods\wpdmpp_new_payment_method");
function wpdmpp_new_payment_method($methods) {
$methods[] = "PaymentMethodClassName"; return $methods;
}
Complete Implementation:
namespace WPDMPP\Libs\PaymentMethods;
add_filter("payment_method", "\WPDMPP\Libs\PaymentMethods\wpdmpp_new_payment_method");
function wpdmpp_new_payment_method($methods) {
$methods[] = "PaymentMethodClassName";
return $methods;
}
if (!class_exists('PaymentMethodClassName') && class_exists('\WPDMPP\Libs\CommonVars')) {
class PaymentMethodClassName extends \WPDMPP\Libs\CommonVars
{
var $TestMode;
var $GatewayUrl = "https://gatewat.url";
var $GatewayUrl_TestMode = "https://sandbox.gateway.url";
var $ReturnUrl;
var $NotifyUrl;
var $CancelUrl;
var $Enabled;
var $VarName;
var $GatewayName = "Gateway Name";
function __construct()
{
$this->TestMode = $TestMode;
$this->Enabled = get_wpdmpp_option('PaymentMethodClassName/enabled');
$this->ReturnUrl = wpdmpp_orders_page();
$this->NotifyUrl = home_url('?action=wpdmpp-payment-notification&class=PaymentMethodClassName');
$this->CancelUrl = wpdmpp_cart_page();
$this->ParameterName = get_wpdmpp_option('PaymentMethodClassName/VariableName');
$this->TestMode = get_wpdmpp_option('PaymentMethodClassName/Mode');
if($this->TestMode=='1') $this->GatewayUrl = $this->GatewayUrl_TestMode;
$this->Secret_word = get_wpdmpp_option('PaymentMethodClassName/secret_word');
$this->Currency = wpdmpp_currency_code();
}
}
function configOptions()
{
$options = array(
'Mode'=> array(
'label' => __("Payment Gateway Mode:","text-domain"),
'type' => 'select',
'options' => array('1' => 'Live', '0' => 'Test'),
'selected' => $this->TestMode
),
'VarName'=> array(
'label' => __("Text Label","text-domain"),
'type' => 'text',
'placeholder' => '',
'value' => $this->VarName
)
// Add more variables as your payment gateway settings requires
);
return $options;
}
function showPaymentForm()
{
global $current_user;
$sbtn = "";
$hide = "";
if ($AutoSubmit == 1) $hide = "display:none;'";
else $sbtn = "<button type='submit'>Pay Now!</button>";
$this->Amount = number_format($this->Amount, 2);
$Form = "
Payment Form / Code to redirect to payment gateway...
";
return $Form;
}
function verifyNotification()
{
//IPN Code to verify payment and retun data true/false
$valid = true;
return $valid;
}
}
}