# Payment Selector

> PaymentMethodSelector modes, simple gateway data, and checkout form integration.

<!-- Sources: src/Components/Woo/PaymentMethodSelector/PaymentMethodSelector.php; src/Woo/WooSelectorDynamicSource.php; client/src/domains/woo/components/payment-method-selector.ts; client/src/domains/woo/components/ui-choice-mode.ts; src/Woo/Woo.php; src/Testing/E2E/Woo/WooScenarioProvider.php; tests/e2e/components/woo/behavior.spec.ts; tests/e2e/components/woo/lifecycle.spec.ts -->

# Payment Selector

`PaymentMethodSelector` renders simple enabled Woo payment gateways and syncs the selected method into checkout form submission.

## Component

| Component key | Role |
| --- | --- |
| `OmeWooPaymentMethodSelector` | Renders payment method choices with UIChoice and checkout form radio inputs. |

## Props

| Prop | Meaning |
| --- | --- |
| `ui.mode` | `radio`, `button-radio`, or `select`. |
| `ui.aria_label` | Accessible selector label. |
| `ui.default_label` | Select trigger text before selection. |
| `content.show_description` | Shows or removes payment method descriptions. |

## Payment Method Source

Payment methods come from `WooSelectorDynamicSource::get_simple_payment_methods()` and are also localized in `OME_WOO.paymentMethods`.

The source includes only enabled gateways with no custom fields. Each row has:

| Field | Meaning |
| --- | --- |
| `id` | Woo payment gateway ID. |
| `label` | Cleaned gateway title. |
| `description` | Cleaned gateway description. |
| `selected` | Whether Woo reports it as the current chosen method. |

## Checkout Form Integration

Runtime ensures the radio group belongs to the nearest checkout form. If the form has no ID, the runtime assigns one and uses form-scoped radio names.

Select mode still uses hidden radio inputs. The visible trigger/listbox is UIChoice; the submitted checkout payload reads the transport input.

## Scenario Coverage

| Scenario | Covered behavior |
| --- | --- |
| `payment_selector_button_radio` | Button-radio mode has radiogroup semantics and radio items. |
| `payment_selector_select` | Select mode uses trigger/listbox structure and updates selected label. |
| `checkout_success` | Selected `bacs` payment method is submitted in checkout. |
| `lifecycle_checkout` | Store API order summary confirms payment method `bacs`. |
