# İadeyi Simüle Et

> Bir sandbox fatura iadesini completed, failed veya cancelled durumuna geçirin ve imzalı webhook'u tetikleyin.

`POST /v1/sandbox/refunds/:withdrawal_id/simulate`

:::endpoint
POST /v1/sandbox/refunds/:withdrawal_id/simulate
:::

**API anahtarı:** `Payment` (sandbox)

Yalnızca sandbox. Mevcut bir sandbox iadesini (`is_test: true`) istenen uç duruma (`completed`, `failed` veya `cancelled`) geçirir, sandbox bakiyesini günceller ve tam iade yüküyle ilgili `withdrawal.completed`, `withdrawal.failed` veya `withdrawal.cancelled` webhook'unu yayar.

## İstek gövdesi

| Parametre | Tür | Zorunlu | Açıklama |
|-----------|-----|---------|----------|
| `status` | string | Evet | Hedef uç durum: `"completed"`, `"failed"` veya `"cancelled"` |

```json
{
  "status": "completed"
}
```

## Yanıt (200 OK)

```json
{
  "withdrawal_id": "wdr_6Qm2fK8xR4vN7cT1bY9dL5",
  "invoice_id": "inv_7K2M9P4Q8R1X5Z3A0bC2dE",
  "mode": "full",
  "external_order_id": "refund-1042-full",
  "status": "completed",
  "is_final": true,
  "is_test": false,
  "amount": "100.00",
  "fee": "1.00",
  "currency": "USDT",
  "network": "TRC20",
  "destination_address": "TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9",
  "first_sender": "TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9",
  "tx_hash": "9f3b8c2a1d0e4f6789abc123def4567890abc123def4567890abc123def45678",
  "explorer_url": "https://tronscan.org/#/transaction/9f3b8c2a1d0e4f6789abc123def4567890abc123def4567890abc123def45678",
  "created_at": 1767225600,
  "completed_at": 1767225932,
  "type": "refund",
  "project_id": "prj_3F9xL2mN8pQ4rT6vW1yZ5b"
}
```

## Kurallar

:::dash-list
- Önce bir sandbox Payment anahtarı (`pk_test_`) kullanarak [`POST /v1/refunds`](/tr/docs/refunds/create.md) ile sandbox iadesini oluşturun, ardından `withdrawal_id` değerini bu uç noktaya iletin.
- Zaten istenen uç durumda olan bir iade üzerinde `simulate` çağırmak idempotenttir ve yinelenen bir webhook yaymadan `200 OK` döndürür.
- İade uç duruma ulaştıktan sonra farklı bir uç durumla `simulate` çağırmak `409 invalid_withdrawal_state` döndürür.
- `"completed"` simülasyonu ayrılan bakiye düşüşünü kesinleştirir ve sentetik bir `tx_hash` atar. `"failed"` veya `"cancelled"` simülasyonu ayrılan `amount + fee` tutarını sandbox bakiyenize geri bırakır ve fatura için yeni bir iade oluşturmanıza olanak tanır.
:::

## Hatalar

| Kod | HTTP | Ne zaman |
|-----|------|----------|
| `payment_key_required` | 403 | İstek bir Payout (`rk_`) anahtarıyla imzalandı |
| `refunds_not_enabled` | 503 | Fatura iadeleri bu ortamda etkin değil |
| `withdrawal_not_found` | 404 | Kimlik mevcut değil, bir sandbox iadesi değil veya anahtarın proje kapsamı dışında |
| `invalid_withdrawal_state` | 409 | İade zaten farklı bir uç durumda |
| `field_invalid_enum` | 400 | `status` değeri `"completed"`, `"failed"` veya `"cancelled"` değil |

Tam sandbox iş akışı için bkz. [Test](/tr/docs/testing.md) ve tüm hata kodları için bkz. [Hata Kodları](/tr/docs/errors/codes.md).
