In questa breve guida vedremo come creare un nuovo Gateway di pagamento e come renderlo disponibile all’utente finale.
Creazione della classe per il nuovo gateway
In questa porzione di codice è possibile trovare un esempio di gateway:
namespace MPHB\Payments\Gateways;
if ( !defined( 'ABSPATH' ) ) {
exit;
}
class BankTransferGateway extends Gateway {
protected function setupProperties(){
parent::setupProperties();
$this->showOptions = true;
$this->adminTitle = __( 'Bank Transfer', 'motopress-hotel-booking' );
}
protected function initDefaultOptions(){
$defaults = array(
'title' => __( 'Bank Transfer', 'motopress-hotel-booking' ),
'description' => '',
'enabled' => true,
);
return array_merge( parent::initDefaultOptions(), $defaults );
}
protected function initId(){
return 'banktransfer';
}
public function processPayment(\MPHB\Entities\Booking $booking, \MPHB\Entities\Payment $payment) {
// setting booking status pending
$payment->setStatus('mphb-p-pending');
$terms_and_conditions_id = MPHB()->settings()->pages()->getTermsAndConditionsPageId();
$terms_and_conditions_url = MPHB()->settings()->pages()->getUrl($terms_and_conditions_id);
$redirectUrl = MPHB()->settings()->pages()->getBookingConfirmPageUrl();
// sending emails to customer and admin
MPHB()->emails()->getEmail('customer-bank-transfer')->trigger($booking, array('payment' => $payment));
MPHB()->emails()->getEmail('admin-bank-transfer')->trigger($booking, array('payment' => $payment));
wp_redirect( $redirectUrl );
return false;
}
}
$bank_transfer_gateway = new BankTransferGateway();
//MPHB()->gatewayManager()->addGateway($bank_transfer_gateway);
add_action('mphb_init_gateways', array($bank_transfer_gateway, 'register'));