blob: 1c8bc2b19da4e06edff016350bdabd205faa02fc [file] [log] [blame]
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Class that handles OXXO payment method.
*
* @extends WC_Gateway_Stripe
*
* @since 5.8.0
*/
class WC_Gateway_Stripe_Oxxo extends WC_Stripe_Payment_Gateway_Voucher {
/**
* ID used by UPE
*
* @var string
*/
const ID = 'stripe_boleto';
/**
* ID used by WooCommerce to identify the payment method
*
* @var string
*/
public $id = 'stripe_oxxo';
/**
* ID used by stripe
*/
protected $stripe_id = 'oxxo';
/**
* List of accepted currencies
*
* @var array
*/
protected $supported_currencies = [ 'MXN' ];
/**
* List of accepted countries
*/
protected $supported_countries = [ 'MX' ];
/**
* Constructor
*
* @since 5.8.0
*/
public function __construct() {
$this->method_title = __( 'Stripe OXXO', 'woocommerce-gateway-stripe' );
parent::__construct();
add_filter( 'wc_stripe_allowed_payment_processing_statuses', [ $this, 'add_allowed_payment_processing_statuses' ], 10, 2 );
}
/**
* Adds on-hold as accepted status during webhook handling on orders paid with voucher
*
* @param $allowed_statuses
* @param $order
*
* @return mixed
*/
public function add_allowed_payment_processing_statuses( $allowed_statuses, $order ) {
if ( $this->stripe_id === $order->get_meta( '_stripe_upe_payment_type' ) && ! in_array( 'on-hold', $allowed_statuses ) ) {
$allowed_statuses[] = 'on-hold';
}
return $allowed_statuses;
}
/**
* Payment form on checkout page
*
* @since 5.8.0
*/
public function payment_fields() {
$description = $this->get_description();
apply_filters( 'wc_stripe_description', wpautop( wp_kses_post( $description ) ), $this->id )
?>
<div class="stripe-source-errors" role="alert"></div>
<div id="stripe-boleto-payment-data"><?php echo $description; ?></div>
<?php
}
/**
* Validates the minimum and maximum amount. Throws exception when out of range value is added
*
* @since 5.8.0
*
* @param $amount
*
* @throws WC_Stripe_Exception
*/
protected function validate_amount_limits( $amount ) {
if ( $amount < 10.00 ) {
/* translators: 1) amount (including currency symbol) */
throw new WC_Stripe_Exception( sprintf( __( 'Sorry, the minimum allowed order total is %1$s to use this payment method.', 'woocommerce-gateway-stripe' ), wc_price( 10.0 ) ) );
} elseif ( $amount > 10000.00 ) {
/* translators: 1) amount (including currency symbol) */
throw new WC_Stripe_Exception( sprintf( __( 'Sorry, the maximum allowed order total is %1$s to use this payment method.', 'woocommerce-gateway-stripe' ), wc_price( 10000.00 ) ) );
}
}
/**
* Gather the data necessary to confirm the payment via javascript
* Override this when extending the class
*
* @param WC_Order $order
*
* @return array
*/
protected function get_confirm_payment_data( $order ) {
return [
'payment_method' => [
'billing_details' => [
'name' => $order->get_formatted_billing_full_name(),
'email' => $order->get_billing_email(),
],
],
];
}
}