Crear un nuevo método de pago similar a contra rembolso pero con campo de instrucciones
// Agregar el nuevo método de pago
function agregar_metodo_pago_personalizado($gateways) {
$gateways[] = 'WC_Pago_Personalizado';
return $gateways;
}
add_filter('woocommerce_payment_gateways', 'agregar_metodo_pago_personalizado');
// Clase del método de pago Personalizado
class WC_Pago_Personalizado extends WC_Payment_Gateway {
public function __construct() {
$this->id = 'personalizado';
$this->method_title = 'Método de pago personalizado';
$this->method_description = 'Realiza el pago en persona con el método de pago personalizado.';
$this->has_fields = false;
$this->init_form_fields();
$this->init_settings();
$this->title = $this->get_option('title');
$this->description = $this->get_option('description');
$this->instructions = $this->get_option('instructions');
add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
add_action('woocommerce_thankyou_' . $this->id, array($this, 'thankyou_page'));
}
public function init_form_fields() {
$this->form_fields = array(
'enabled' => array(
'title' => 'Habilitar/Desabilitar',
'type' => 'checkbox',
'label' => 'Habilitar Método de pago personalizado',
'default' => 'yes'
),
'title' => array(
'title' => 'Título',
'type' => 'text',
'description' => 'Título que se mostrará durante el proceso de pago.',
'default' => 'Método de pago personalizado'
),
'description' => array(
'title' => 'Descripción',
'type' => 'textarea',
'description' => 'Descripción adicional que se mostrará durante el proceso de pago.',
'default' => 'Realiza el pago en persona con el método de pago personalizado.'
),
'instructions' => array(
'title' => 'Instrucciones',
'type' => 'textarea',
'description' => 'Instrucciones que se mostrarán en la página de finalizar compra.',
'default' => 'Por favor, siga las instrucciones para realizar el pago en persona con el método de pago personalizado.'
)
);
}
public function process_payment($order_id) {
$order = wc_get_order($order_id);
// Marcar la orden como completada
$order->payment_complete();
// Vaciar el carro de compras
WC()->cart->empty_cart();
// Redireccionar a la página de gracias
return array(
'result' => 'success',
'redirect' => $this->get_return_url($order)
);
}
public function thankyou_page() {
if ($this->instructions) {
echo wpautop(wptexturize($this->instructions));
}
}
}
0 Comentarios