# Asynchronous Capture

Verwenden Sie Asynchronous Capture, um PaymentIntents schneller zu bestätigen.

Die asynchrone Erfassung reduziert die Latenz von PaymentIntent-Bestätigungen, da der Erfassungsvorgang im Hintergrund ausgeführt wird. Wenn die Erfassungsanfrage gestellt wurde, erhält Ihre Integration eine erfolgreiche Antwort und Stripe schließt die Zahlungserfassung im Backend ab.

Das bedeutet:

- Das Feld `balance_transaction` im Charge-Objekt könnte unmittelbar nach der Bestätigung `null` sein.
- Wenn Sie `balance_transaction` oder `latest_charge.balance_transaction` erweitern, könnte es in der Antwort noch nicht verfügbar sein.
- Sie können auf das Ereignis `charge.updated` warten, um zu wissen, wann die Saldo-Transaktion verfügbar wird.

Ihre Integration muss die Möglichkeit berücksichtigen, dass die Saldo-Transaktion nicht sofort verfügbar ist.

## Für die asynchrone Erfassung anmelden

Um Ihre bestehende Integration zu aktualisieren und Unterstützung für die asynchrone Erfassung hinzuzufügen, verwenden Sie beim Erstellen eines PaymentIntent `automatic_async` als Erfassungsmethode.

Das Angeben des Parameters `capture_method=automatic_async` ist optional, da Stripe diese Funktionalität in der neuesten Version der API standardmäßig aktiviert.

#### curl

```bash
curl https://api.stripe.com/v1/payment_intents \
  -u <<YOUR_SECRET_KEY>>: \
  -d amount=2000 \
  -d currency=usd \
  -d payment_method=pm_card_visa \
  --data-urlencode "return_url=https://example.com/return" \
  -d capture_method=automatic_async \
  -d confirm=true
```

Möglicherweise müssen Sie weitere Änderungen vornehmen, wenn Sie sich für die asynchrone Erfassung entscheiden, da sich die API-Antwort und einige Webhooks anders verhalten als bei anderen Erfassungsmethoden.

Für alle Zahlungen ist die [balance_transaction](https://docs.stripe.com/api/balance_transactions.md) bei den folgenden Objekten `null`. Bei Connect-Zahlungen sind [transfer](https://docs.stripe.com/api/charges/object.md#charge_object-transfer) und [application_fee](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-application_fee_amount) bei den folgenden Objekten ebenfalls `null`:

- angehängtes [Charge](https://docs.stripe.com/api/charges/object.md)-Objekt der API-Antwort
- [charge.succeeded](https://docs.stripe.com/api/events/types.md#event_types-charge.succeeded)-Webhook
- [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded)-Webhook

Geändertes Charge-Objekt für den Webhook [charge.succeeded](https://docs.stripe.com/api/events/types.md#event_types-charge.succeeded):

```json
# Charge Object
{
    "id": "ch_123",
    "object": "charge",
    "amount_captured": 1000, # the capture has happened
    "application_fee_amount": 100,
    "captured": true,
    "balance_transaction": null,  # object might not be created yet, might be shown as nil.
    "transfer": null,             # object might not be created yet, might be shown as nil.
    "application_fee": null,      # object might not be created yet, might be shown as nil.
    ...
}
```

API-Antwort und Webhook [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) geändert: (je nach [API-Version](https://docs.stripe.com/upgrades.md) unterschiedlich)

#### API-Version 2022-11-15 oder später

```json
# PaymentIntent Object
{
  "id": "pi_123",
  "object": "payment_intent",
  "capture_method": "automatic_async",
  "status": "succeeded",
  "latest_charge": "ch_**" # if expanded, this is the Modified Charge object above
}
```

## Überwachen Sie Webhooks, um benachrichtigt zu werden, wenn zusätzliche Daten verfügbar sind

> Unsere SLA für den charge.updated Webhook gilt 1 Stunde nach der erfolgreichen Bestätigung der PaymentIntent.

Wenn Sie die asynchrone Erfassung nutzen, können Sie Webhooks überwachen, um den Status von Objekten zu überprüfen, die zu anfangs `null` sind.

- Um die [balance_transaction](https://docs.stripe.com/api/balance_transactions.md) zu erhalten, abonnieren Sie das Webhook-Ereignis [charge.updated](https://docs.stripe.com/api/events/types.md#event_types-charge.updated).
- Um die [application_fee](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-application_fee_amount) zu erhalten, abonnieren Sie das Webhook-Ereignis [application_fee.created](https://docs.stripe.com/api/events/types.md#event_types-application_fee.created).
- Um die [Übertragung](https://docs.stripe.com/api/charges/object.md#charge_object-transfer) zu erhalten, abonnieren Sie die Webhook-Ereignisse [transfer.created](https://docs.stripe.com/api/events/types.md#event_types-transfer.created).

Webhooks für Asynchronous Capture

```json

# charge.updated events
{
  "data": {
    "id": "ch_123",
    "object": "charge",
    "amount": 100,
    "balance_transaction": "txn_123", # applicable to all charges.
    "transfer": "tr_123",         # applicable to destination charge only.
    "application_fee": "fee_123", # applicable to destination charge only.
    ...
  },
  previous_attributes: {
   "balance_transaction": null, # applicable to all charges.
   "transfer": null,          # applicable to destination charge only.
   "application_fee": null,   # applicable to destination charge only.
  }
}
```

```json

# transfer.created events
{
  "data": {
    "id": "tr_123",
    "object": "transfer",
    "amount": 1000,
    ...
  }
}
```

```json

# application_fee.created events
{
  "data": {
    "id": "fee_123",
    "object": "application_fee",
    "amount": 100,
    ...
  }
}
```
