# Collecte des données saisies à l'écran

Utilisez Terminal pour collecter les données saisies par vos clients.

**Lecteurs&nbsp;:** [Stripe Reader S700/S710](https://docs.stripe.com/terminal/readers/stripe-reader-s700-s710.md) et [BBPOS WisePOS E](https://docs.stripe.com/terminal/readers/bbpos-wisepos-e.md)

Avec les lecteurs intelligents Terminal, vous pouvez afficher les formulaires de saisie et collecter des informations auprès de vos clients. Vous pouvez choisir parmi six types d’entrée et ils peuvent être utilisés dans de nombreux cas d’utilisation.

- Recueillez votre identifiant client pour l’échange de fidélisation avec la saisie `phone` ou `email` et traitez-le sur votre back-end.
- Demandez à votre client d’accepter une renonciation ou un accord avec la saisie `signature`.
- Demandez à votre client de remplir un questionnaire avec la saisie `selection` ou `text`.

Vous pouvez afficher les formulaires de saisie à tout moment avant le paiement, après le paiement et en dehors d’un cycle de paiement.
![Types de saisie pris en charge](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-form-types.9715c2bbc0105378c9c4a5e8e1c4eb59.png)

Types de saisie pris en charge.

> N’utilisez pas `collect_inputs` pour collecter des données sensibles (y compris les informations de santé protégées et les informations de carte bancaire du client), toute information limitée par la loi, ou des dons pour une association caritative qui n’est pas le commerçant traitant le paiement.

# iOS


## Collecter les données saisies

- [collectInputs (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTerminal.html#/c:objc\(cs\)SCPTerminal\(im\)collectInputs:completion:)
- [SDK iOS](https://docs.stripe.com/terminal/payments/setup-integration.md?terminal-sdk-platform=ios) `4.4.0` et versions ultérieures

Vous pouvez collecter des informations sur les clients même lorsque le lecteur intelligent [fonctionne hors ligne](https://docs.stripe.com/terminal/features/operate-offline/overview.md?reader-type=internet).

Pour collecter des saisies à l’aide des lecteurs intelligents Terminal, appelez `collectInputs` avec le SDK Terminal, le SDK communique avec le lecteur pour afficher une interface utilisateur préconfigurée. Vous pouvez spécifier jusqu’à 5&nbsp;entrées à la fois, et le lecteur les collecte dans l’ordre. Une fois que le client a saisi ses données, le SDK renvoie les données collectées avec un rappel.

#### Swift

```swift
let signatureInput = try SignatureInputBuilder(title: "Please sign")
    .setStripeDescription("Please sign if you agree to the terms and conditions")
    .setSkipButtonText("skip form")
    .setSubmitButtonText("Submit signature")
    .build()


let firstSelectionButton = try SelectionButtonBuilder(style: .primary, text: "Yes", id: "yes_id")
    .build()

let secondSelectionButton = try SelectionButtonBuilder(style: .secondary, text: "No", id: "no_id")
    .build()

let firstToggle = try ToggleBuilder(defaultValue: .enabled)
    .setTitle("Sign up for promotional emails")
    .build()

let selectionInput = try SelectionInputBuilder(title: "Choose an option")
    .setStripeDescription("Were you happy with our customer service?")
    .setRequired(true)
    .setSelectionButtons([firstSelectionButton, secondSelectionButton])
    .setToggles([firstToggle])
    .build()

let collectInputsParams = try CollectInputsParametersBuilder(
    inputs: [signatureInput, selectionInput]
).build()

let cancelable = Terminal.shared.collectInputs(collectInputsParams) { (collectInputsResult, error) in
    if let error = error {
        // Placeholder for handling error
    } else if let result = collectInputsResult {
        // Placeholder for handling collected inputs
    }
}
```

### Personnalisation

Vous pouvez personnaliser l’apparence et le comportement de tous les types de saisie&nbsp;:

- Définissez les saisies importantes comme `required` pour vous assurer qu’elles seront collectées. Le bouton **Ignorer** est masqué lorsque la saisie est obligatoire.
- Fournissez un contexte à votre client en précisant le texte que vous souhaitez afficher sur l’écran du lecteur pour chaque saisie à l’aide des champs `title` et `description`.

| Nom du champ    | Nombre maximal de caractères                                                                                           | **Description** |
| --------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------- |
| `title`         | 40                                                                                                                     |
| `description`   | 500 lorsqu’il est utilisé avec le formulaire `selection`, 100 lorsqu’il est utilisé avec tout autre type de formulaire |
| `submit_button` | 30                                                                                                                     |
| `skip_button`   | 14                                                                                                                     |

- Utilisez des sauts de ligne `` dans votre texte pour une meilleure mise en forme.
- Ajoutez jusqu’à 4&nbsp;boutons d’activation que les clients peuvent activer ou désactiver pour les options booléennes, les contrats ou les adhésions.
![Boutons d'activation dans l'e-mail et dans le formulaire de sélection](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-toggle.3183c0c14cc916374d588ba54ad34639.png)

Formulaire d’e-mail et de sélection avec bouton d’activation

| Nom du champ  | Nombre maximal de caractères                               | **Description** |
| ------------- | ---------------------------------------------------------- | --------------- |
| `title`       | 50, 25 lorsqu’il est utilisé avec le bouton de description |
| `description` | 50, 25 lorsqu’il est utilisé avec le bouton de titre       |

- Pour les saisies de type `selection`, vous pouvez mettre l’accent ou non sur `choices` à l’aide du paramètre `style`.
![Styles des options du type de saisie « selection »](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-choice-style.dc4d2fcb98ee649a29bc43df806c114a.png)

Styles principal et secondaire des options du type de saisie «&nbsp;selection&nbsp;»

## Interaction avec le client

Lorsque le lecteur commence à collecter des données saisies, il affiche la première donnée de la liste.

Une fois que le client a terminé toutes les saisies, le lecteur passe à un état transitoire pendant 3&nbsp;secondes, en attendant une nouvelle demande. Si aucune requête n’est effectuée après 3&nbsp;secondes, le lecteur revient à l’écran d’accueil.

> Il vous incombe de connaître et de respecter toutes les lois et réglementations applicables régissant votre utilisation de cette fonctionnalité, et vous devez, dans le cadre d’une telle utilisation, obtenir, le cas échéant, l’ensemble des consentements, licences, droits et autorisations nécessaires. Si vous utilisez les données collectées par un lecteur intelligent Terminal ou les résultats affichés pour conclure des contrats avec vos clients ou leur adresser des notifications, il vous incombe de vous assurer de la validité juridique et du caractère exécutoire de ces contrats ou notifications.

## Recevoir les données saisies

Lorsque toutes les entrées ont été collectées ou ignorées, le SDK Terminal renvoie les données collectées.

- Pour les saisies de type signature, les données renvoyées sont une chaîne au format SVG.
- Pour les saisies de type sélection, les données renvoyées sont les champs `text` et `id` du bouton sélectionné.
- Pour les saisies de type numéro de téléphone, adresse e-mail, texte et chiffres, la valeur renvoyée est la chaîne de la réponse du client.
- Si une saisie facultative est ignorée par le client, la valeur booléenne `skipped` est définie sur `true`.
- Pour chaque bouton d’activation, l’option `enabled`, `disabled` ou `skipped` est renvoyée en fonction de l’index de la liste d’entrée des boutons d’activation.

Le SDK Terminal renvoie une erreur en cas d’action annulée, d’encaissement expiré ou de toute autre erreur.

## Tester votre intégration

Vous pouvez tester votre intégration en utilisant le lecteur simulé du SDK. Avant de pouvoir tester le recueil d’informations, vous devez d’abord [connecter un lecteur intelligent simulé](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=simulated&terminal-sdk-platform=ios).

Le lecteur de simulation permet de simuler les scénarios suivants&nbsp;:

- Collecte des données saisies réussie sans omettre aucune saisie
- Collecte des données saisies réussie en ignorant toutes les saisies non&nbsp;requises
- Échec de la collecte des données saisies en raison d’un délai d’attente

Lors de la simulation d’une collecte réussie des entrées, le SDK renvoie une valeur codée en dur pour chaque entrée en fonction du type.

#### Swift

```swift
// Simulated smart reader must already be connected
Terminal.shared.simulatorConfiguration.simulatedCollectInputsResult = SimulatedCollectInputsResultSucceeded(
  simulatedCollectInputsSkipBehavior: .none
)

let collectInputsParams = try CollectInputsParametersBuilder(
    inputs: // Placeholder for specifying the inputs you want to simulate collecting
).build()

let cancelable = Terminal.shared.collectInputs(collectInputsParams) { (collectInputsResult, error) in
    if let error = error {
        // Placeholder for handling error
    } else if let result = collectInputsResult {
        // Placeholder for handling collected inputs
    }
}
```

