# getDepositAddress

> **注意！！**&#x5728;創建錢包之前，您必須在 AkashicPay.com 上註冊。否則它們將無法被識別，儘管您可能會得到一個地址作為回報。

給定一個網路和一個使用者識別碼 (user-identifier)，這個函式 (function) 會透過 AkashicChain 在指定的網路中建立一個錢包，讓使用者存入錢包。要閱讀更多關於識別碼的用途，請參閱[下一頁](https://docs.akashicpay.com/traditional-chinese/sdk/han-shi-functions/getdepositurl)。

`referenceId`在存款申請中是可選的。如果您需要對存款進行更詳細的控制，它允許您識別個別交易。更多資訊請參閱下一頁。

`requestedAmount` 和 `requestedCurrency` 在存款請求中是可選的。它允許您根據這些來識別個別交易。更多資訊請參閱。

注意：存款地址在 AkashicPay 上是永久分配的。這意味著，任何以相同參數（網路和識別碼）隨後呼叫 `getDepositAddress` 將返回相同的地址。這意味著很容易跟蹤識別碼 (identifier) 和地址之間的一對一映射，而且 - 如果識別碼 (identifier) 代表一個用戶 - 用戶不可能搞不清楚該把錢存到哪裡。

## <mark style="color:blue;">範例</mark>

為 `user123` 建立 Tron-wallet

{% tabs %}
{% tab title="TypeScript" %}

```typescript
const { address, identifier } = await akashicPay.getDepositAddress(
  NetworkSymbol.Tron, // Network
  'user123', // identifier
  'order1' // optional referenceId
);
​
// with requestedAmount, requestedCurrency and markupPercentage
const { address, identifier } = await akashicPay.getDepositAddressWithRequestedValue(
  NetworkSymbol.Tron, // Network
  'user123', // identifier
  'orderId', // referenceId
  Currency.USD, // requested currency
  "1000", // requested amount
  TokenSymbol, // optional token symbol, omit if native coin
  1, // optional mark up percentage on exchange rate
);
```

{% endtab %}

{% tab title="PHP" %}

```php
$depositAddress = $akashicPay->getDepositAddress(
  NetworkSymbol::Tron, // Network
  'user123', // identifier
  'order1' // optional referenceId
);
​
// with requestedAmount, requestedCurrency and markupPercentage
$depositAddress = $akashicPay->getDepositAddressWithRequestedValue(
  NetworkSymbol::Tron, // Network
  'user123', // identifier
  'order1', // referenceId
  Currency::USD, // requested currency
  '1000', // requested amount
  TokenSymbol::USDT, // optional token symbol, omit if native coin
  1, // optional mark up percentage on exchange rate
);
```

{% endtab %}

{% tab title="Java" %}

```java
APDepositAddressResult depositAddress = akashicPay.getDepositAddress(
  APNetworkSymbol.TRX, // Network
  'user123', // identifier
  'order1' // optional referenceId
);

// with requestedAmount, requestedCurrency and markupPercentage
APDepositAddressWithRequestedValueRequest request = APDepositAddressWithRequestedValueRequest.builder()
   .network(APNetworkSymbol.TRX) // Network
   .identifier("user123") // identifier
   .referenceId("order1") // referenceId
   .requestedCurrency(APCurrencySymbol.USD) // requested currency
   .requestedAmount(1000.0) // requested amount
   .token(APTokenSymbol.USDT) // optional token symbol, omit if native coin
   .markupPercentage(1.0) // optional mark up percentage on exchange rate
   .build();

APExtendedDepositAddressResult depositAddress = sdk.getDepositAddressWithRequestedValue(request);
```

{% endtab %}

{% tab title="C#" %}
{% code overflow="wrap" %}

```csharp
var trxDepositAddress = await akashicPay.GetDepositAddressAsync(
  TronShastaNetworkSymbol.Value, // Network
  "user123", // identifier
  "order1" // optional referenceId
);

// with requestedAmount, requestedCurrency and markupPercentage
var request = new ApDepositAddressWithRequestedValueRequest.Builder()
  .SetNetwork(TronShastaNetworkSymbol.Value)
  .SetIdentifier("user123") //identifier
  .SetReferenceId("order1") //referenceId
  .SetRequestedCurrency(ApCurrencySymbol.USD) // requested currency
  .SetRequestedAmount(1000.0) // requested amount
  .SetToken(ApTokenSymbol.Usdt) // optional token symbol, omit if native coin
  .SetMarkupPercentage(10.0) // optional mark up percentage on exchange rate
  .Build();
  
var result = await sdk.GetDepositAddressWithRequestedValueAsync(request);
```

{% endcode %}
{% endtab %}

{% tab title="Go" %}

```go
dA, err = ap.getDepositAddress(
  akashicpay.Tron,  // Network
  "user123",  // identifier
  "order1" // optional referenceId
)

// with requestedAmount, requestedCurrency and markupPercentage
dA, err = ap.GetDepositAddressWithRequestedValue(
  akashicpay.Tron, // Network 
  "user123", // identifier 
  "order1", // referenceId 
  akashicpay.CurrencyUSD, // requested currency
  "1000",  // requested amount
  "", // optional token symbol, omit if native coin 
  0 // optional mark up percentage on exchange rate
)
```

{% endtab %}
{% endtabs %}

## <mark style="color:blue;">回調範例</mark>

{% tabs %}
{% tab title="TypeScript" %}

```typescript
{
address: 'TTVkK6hGoAFhALG9NTkUDHjcFFXKmWcScU',
identifier: 'user123'
// with requestedAmount and requestedCurrency
referenceId: 'order1',
requestedAmount: '1000',
requestedCurrency: 'USD',
network: 'TRX-SHASTA',
token: undefined, // or TokenSymbol
exchangeRate: '264.23123',
amount: '3.78',
expires: '2025-07-01T00:00:00.000Z',
markupPercentage: undefined // or string
}
```

{% endtab %}

{% tab title="PHP" %}

```php
[
    "address" => "TTVkK6hGoAFhALG9NTkUDHjcFFXKmWcScU",
    "identifier" => "user123",
    // with requestedAmount and requestedCurrency
    "referenceId" => "order1",
    "requestedAmount" => "1000",
    "requestedCurrency" => "USD",
    "network" => "TRX-SHASTA",
    "exchangeRate" => "264.23123",
    "amount" => "3.78"
]
```

{% endtab %}

{% tab title="Java" %}

```java
{
address: 'TTVkK6hGoAFhALG9NTkUDHjcFFXKmWcScU',
identifier: 'user123'
// with requestedAmount and requestedCurrency
referenceId: 'order1',
requestedAmount: '1000',
requestedCurrency: 'USD',
network: 'TRX-SHASTA',
exchangeRate: '264.23123',
amount: '3.78'
}
```

{% endtab %}

{% tab title="C#" %}

```csharp
{
Address: "TTVkK6hGoAFhALG9NTkUDHjcFFXKmWcScU",
Identifier: "user123"
// with requestedAmount and requestedCurrency
referenceId: "order1",
requestedAmount: "1000",
requestedCurrency: "USD",
network: "TRX-SHASTA",
exchangeRate: "264.23123",
amount: "3.78"
}
```

{% endtab %}

{% tab title="Go" %}

```go
{
Address: "TTVkK6hGoAFhALG9NTkUDHjcFFXKmWcScU",
Identifier: "user123"
// below if with requestedAmount and requestedCurrency (otherwise zero-valued)
ReferenceId: "order1",
RequestedAmount: "1000",
RequestedCurrency: "USD",
Network: "TRX-SHASTA",
Token: "USDT",
ExchangeRate: "264.23123",
Amount: "3.78",
Expires: "2025-07-01T00:00:00.000Z"
MarkupPercentage: "0"
}
```

{% endtab %}
{% endtabs %}

## <mark style="color:blue;">錯誤訊息</mark>

| 錯誤訊息                                                 | 說明                                                 |
| ---------------------------------------------------- | -------------------------------------------------- |
| `AkashicError.KeyCreationFailure` - '產生新錢包失敗。請再試一次'。 | AkashicChain 出現問題，無法產生所要求的錢包。通常應很快解決               |
| `AkashicError.UnHealthyKey` - '新錢包未安全建立，請重新建立        | 已建立錢包，但未驗證是否 100% 健康。例如，其中一個節點可能無法正確寫入其部分資料。馬上再試一次 |
