Initial commit
diff --git a/includes/class-wc-stripe-sepa-payment-token.php b/includes/class-wc-stripe-sepa-payment-token.php
new file mode 100644
index 0000000..2eec713
--- /dev/null
+++ b/includes/class-wc-stripe-sepa-payment-token.php
@@ -0,0 +1,128 @@
+<?php
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly
+}
+
+// phpcs:disable WordPress.Files.FileName
+
+/**
+ * WooCommerce Stripe SEPA Direct Debit Payment Token.
+ *
+ * Representation of a payment token for SEPA.
+ *
+ * @class WC_Payment_Token_SEPA
+ * @version 4.0.0
+ * @since 4.0.0
+ */
+class WC_Payment_Token_SEPA extends WC_Payment_Token {
+
+ /**
+ * Stores payment type.
+ *
+ * @var string
+ */
+ protected $type = 'sepa';
+
+ /**
+ * Stores SEPA payment token data.
+ *
+ * @var array
+ */
+ protected $extra_data = [
+ 'last4' => '',
+ 'payment_method_type' => 'sepa_debit',
+ ];
+
+ /**
+ * Get type to display to user.
+ *
+ * @since 4.0.0
+ * @version 4.0.0
+ * @param string $deprecated Deprecated since WooCommerce 3.0
+ * @return string
+ */
+ public function get_display_name( $deprecated = '' ) {
+ $display = sprintf(
+ /* translators: last 4 digits of IBAN account */
+ __( 'SEPA IBAN ending in %s', 'woocommerce-gateway-stripe' ),
+ $this->get_last4()
+ );
+
+ return $display;
+ }
+
+ /**
+ * Hook prefix
+ *
+ * @since 4.0.0
+ * @version 4.0.0
+ */
+ protected function get_hook_prefix() {
+ return 'woocommerce_payment_token_sepa_get_';
+ }
+
+ /**
+ * Validate SEPA payment tokens.
+ *
+ * These fields are required by all SEPA payment tokens:
+ * last4 - string Last 4 digits of the iBAN
+ *
+ * @since 4.0.0
+ * @version 4.0.0
+ * @return boolean True if the passed data is valid
+ */
+ public function validate() {
+ if ( false === parent::validate() ) {
+ return false;
+ }
+
+ if ( ! $this->get_last4( 'edit' ) ) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns the last four digits.
+ *
+ * @since 4.0.0
+ * @version 4.0.0
+ * @param string $context What the value is for. Valid values are view and edit.
+ * @return string Last 4 digits
+ */
+ public function get_last4( $context = 'view' ) {
+ return $this->get_prop( 'last4', $context );
+ }
+
+ /**
+ * Set the last four digits.
+ *
+ * @since 4.0.0
+ * @version 4.0.0
+ * @param string $last4
+ */
+ public function set_last4( $last4 ) {
+ $this->set_prop( 'last4', $last4 );
+ }
+
+ /**
+ * Set Stripe payment method type.
+ *
+ * @param string $type Payment method type.
+ */
+ public function set_payment_method_type( $type ) {
+ $this->set_prop( 'payment_method_type', $type );
+ }
+
+ /**
+ * Returns Stripe payment method type.
+ *
+ * @param string $context What the value is for. Valid values are view and edit.
+ * @return string $payment_method_type
+ */
+ public function get_payment_method_type( $context = 'view' ) {
+ return $this->get_prop( 'payment_method_type', $context );
+ }
+}