---
title: ZEPETO.Product
slug: world-sdk-guide-id/zepetoproduct
docTags: 
createdAt: 2026-09-04T06:29:17.454Z
---

| Tipe                                                                | Deskripsi                                                                                                                                                               |
| ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [BaseResponse](./#baseresponse)                                     | Class dasar untuk class respons.                                                                                                                                        |
| [BaseRequest](./#baserequest)                                       | Class `BaseRequest` yang menerima tipe generik `TResponse` sebagai data respons.                                                                                        |
| [ProductListResponse](./#productlistresponse)                       | Class `ProductListResponse` menyediakan hasil pemanggilan API dan daftar informasi produk yang diambil.                                                                 |
| [ProductBaseResponse](./#productbaseresponse)                       | Class dasar untuk class respons yang terkait dengan produk.                                                                                                             |
| [ProductResponse](./#productresponse)                               | Class `ProductResponse` menyediakan hasil pemanggilan API dan informasi produk yang diambil.                                                                            |
| [PurchaseResponse](./#purchaseresponse)                             | Class `ProductResponse` menyediakan hasil pemanggilan API dan informasi pembelian.                                                                                      |
| [CurrencyListResponse](./#currencylistresponse)                     | Class `CurrencyListResponse` menyediakan hasil pemanggilan API dan daftar informasi mata uang.                                                                          |
| [CurrencyResponse](./#currencyresponse)                             | Class `CurrencyResponse` menyediakan hasil pemanggilan API dan informasi mata uang.                                                                                     |
| [ProductRecord](./#productrecord)                                   | Informasi produk.                                                                                                                                                       |
| [CurrencyRecord](./#currencyrecord)                                 | Informasi mata uang.                                                                                                                                                    |
| [ItemPackageUnitRecord](./#itempackageunitrecord)                   | Detail masing-masing produk yang termasuk dalam paket produk item.                                                                                                      |
| [CurrencyPackageUnitRecord](./#currencypackageunitrecord)           | Detail masing-masing mata uang yang termasuk dalam paket produk mata uang.                                                                                              |
| [ProductType](./#producttype)                                       | Enum yang merepresentasikan tipe produk.                                                                                                                                |
| [PurchaseType](./#purchasetype)                                     | Enum yang merepresentasikan tipe pembelian produk.                                                                                                                      |
| [ProductStatus](./#productstatus)                                   | Enum yang merepresentasikan status produk.                                                                                                                              |
| [CurrencyType](./#currencytype)                                     | Enum yang merepresentasikan tipe mata uang.                                                                                                                             |
| [ProductService](./#productservice)                                 | `ProductService` mengelola operasi yang berkaitan dengan produk in-World. Pemain dapat mengakses informasi produk in-World dan melakukan pembelian melalui layanan ini. |
| [ProductPurchaseButton](./#productpurchasebutton)                   | Class yang mengelola fungsionalitas tombol pembelian produk in-World.                                                                                                   |
| [ProductError](./#producterror)                                     | Kode error yang menunjukkan penyebab kegagalan permintaan terkait produk.                                                                                               |
| [OfficialCurrencyBalanceRequest](./#officialcurrencybalancerequest) | Merepresentasikan permintaan asinkron untuk mengambil saldo mata uang resmi ZEPETO (ZEM).                                                                               |

## BaseResponse

`class`

Class dasar untuk class respons.

### Properti

| Nama      | Tipe      | Deskripsi                                                                             |
| --------- | --------- | ------------------------------------------------------------------------------------- |
| isSuccess | `boolean` | Menunjukkan status keberhasilan permintaan. Bernilai true jika berhasil diselesaikan. |
| message   | `string`  | Menjelaskan hasil dari permintaan.                                                    |

## BaseRequest

`class` · extends `BaseAPIRequest`

Class `BaseRequest` yang menerima tipe generik `TResponse` sebagai data respons.

### Properti

| Nama         | Tipe        | Deskripsi                                     |
| ------------ | ----------- | --------------------------------------------- |
| responseData | `TResponse` | Data respons dengan tipe generik `TResponse`. |

## ProductListResponse

`class` · extends [ProductBaseResponse](./#productbaseresponse)

Class `ProductListResponse` menyediakan hasil pemanggilan API dan daftar informasi produk yang diambil.

### Properti

| Nama     | Tipe                                  | Deskripsi                |
| -------- | ------------------------------------- | ------------------------ |
| products | [ProductRecord\[\]](./#productrecord) | Daftar informasi produk. |

## ProductBaseResponse

`class` · extends [BaseResponse](./#baseresponse)

Class dasar untuk class respons yang terkait dengan produk.

### Properti

| Nama      | Tipe                            | Deskripsi                                                |
| --------- | ------------------------------- | -------------------------------------------------------- |
| ErrorCode | [ProductError](./#producterror) | Mengambil kode error untuk permintaan produk yang gagal. |

## ProductResponse

`class` · extends [ProductBaseResponse](./#productbaseresponse)

Class `ProductResponse` menyediakan hasil pemanggilan API dan informasi produk yang diambil.

### Properti

| Nama    | Tipe                              | Deskripsi         |
| ------- | --------------------------------- | ----------------- |
| product | [ProductRecord](./#productrecord) | Informasi produk. |

## PurchaseResponse

`class` · extends [ProductBaseResponse](./#productbaseresponse)

Class `ProductResponse` menyediakan hasil pemanggilan API dan informasi pembelian.

### Properti

| Nama        | Tipe     | Deskripsi                                         |
| ----------- | -------- | ------------------------------------------------- |
| userId      | `string` | ID pengguna dari pemain yang melakukan pembelian. |
| productId   | `string` | ID produk in-World yang dibeli.                   |
| price       | `number` | Harga produk in-World yang dibeli.                |
| receiptId   | `string` | ID struk untuk pembelian tersebut.                |
| purchasedAt | `Date`   | Tanggal dan waktu saat produk in-World dibeli.    |

## CurrencyListResponse

`class` · extends [ProductBaseResponse](./#productbaseresponse)

Class `CurrencyListResponse` menyediakan hasil pemanggilan API dan daftar informasi mata uang.

### Properti

| Nama       | Tipe                                    | Deskripsi                   |
| ---------- | --------------------------------------- | --------------------------- |
| currencies | [CurrencyRecord\[\]](./#currencyrecord) | Daftar informasi mata uang. |

## CurrencyResponse

`class` · extends [ProductBaseResponse](./#productbaseresponse)

Class `CurrencyResponse` menyediakan hasil pemanggilan API dan informasi mata uang.

### Properti

| Nama     | Tipe                                | Deskripsi            |
| -------- | ----------------------------------- | -------------------- |
| currency | [CurrencyRecord](./#currencyrecord) | Informasi mata uang. |

## ProductRecord

`class`

Informasi produk.

### Properti

| Nama                 | Tipe                                                          | Deskripsi                                                                                                     |
| -------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| productId            | `string`                                                      | ID produk.                                                                                                    |
| name                 | `string`                                                      | Nama produk.                                                                                                  |
| price                | `number`                                                      | Harga produk.                                                                                                 |
| isPurchased          | `boolean`                                                     | Menunjukkan apakah pengguna telah membeli produk tersebut. Hanya berlaku untuk produk yang tidak habis pakai. |
| itemPackageUnits     | [ItemPackageUnitRecord\[\]](./#itempackageunitrecord)         | Item yang termasuk dalam produk jika `ProductType` adalah `ItemPackage`.                                      |
| currencyPackageUnits | [CurrencyPackageUnitRecord\[\]](./#currencypackageunitrecord) | Mata uang yang termasuk dalam produk jika `ProductType` adalah `CurrencyPackage`.                             |
| ProductType          | [ProductType](./#producttype)                                 | Mengembalikan `ProductType` dari produk.                                                                      |
| PurchaseType         | [PurchaseType](./#purchasetype)                               | Mengembalikan `PurchaseType` dari produk.                                                                     |
| ProductStatus        | [ProductStatus](./#productstatus)                             | Mengembalikan `ProductStatus` dari produk.                                                                    |
| CurrencyType         | [CurrencyType](./#currencytype)                               | Mengembalikan tipe mata uang yang digunakan untuk membeli produk.                                             |
| currencyId           | `string`                                                      | Mengembalikan ID mata uang yang digunakan untuk membeli produk.                                               |
| currencyName         | `string`                                                      | Mengembalikan nama mata uang yang digunakan untuk membeli produk.                                             |

### Metode

### GetCurrencySprite

`GetCurrencySprite() → Sprite`

Mengembalikan gambar mata uang yang digunakan untuk membeli produk.

**Mengembalikan:** `Sprite`

## CurrencyRecord

`class`

Informasi mata uang.

### Properti

| Nama               | Tipe      | Deskripsi                                                                                          |
| ------------------ | --------- | -------------------------------------------------------------------------------------------------- |
| currencyId         | `string`  | ID mata uang.                                                                                      |
| name               | `string`  | Nama mata uang.                                                                                    |
| isOfficialCurrency | `boolean` | Menunjukkan apakah mata uang tersebut adalah mata uang resmi ZEPETO (ZEM) atau mata uang in-World. |

## ItemPackageUnitRecord

`class`

Detail masing-masing produk yang termasuk dalam paket produk item.

### Properti

| Nama      | Tipe     | Deskripsi    |
| --------- | -------- | ------------ |
| productId | `string` | ID produk.   |
| itemName  | `string` | Nama item.   |
| quantity  | `bigint` | Jumlah item. |

## CurrencyPackageUnitRecord

`class`

Detail masing-masing mata uang yang termasuk dalam paket produk mata uang.

### Properti

| Nama         | Tipe     | Deskripsi         |
| ------------ | -------- | ----------------- |
| currencyId   | `string` | ID mata uang.     |
| currencyName | `string` | Nama mata uang.   |
| quantity     | `bigint` | Jumlah mata uang. |

## ProductType

`enum`

Enum yang merepresentasikan tipe produk.

| Nama            | Nilai | Deskripsi                                              |
| --------------- | ----- | ------------------------------------------------------ |
| Item            | 0     | Produk berupa item tunggal.                            |
| ItemPackage     | 1     | Paket produk item yang berisi beberapa item.           |
| CurrencyPackage | 2     | Paket produk mata uang yang berisi beberapa mata uang. |

## PurchaseType

`enum`

Enum yang merepresentasikan tipe pembelian produk.

| Nama          | Nilai | Deskripsi                 |
| ------------- | ----- | ------------------------- |
| Consumable    | 0     | Produk habis pakai.       |
| NonConsumable | 1     | Produk tidak habis pakai. |

## ProductStatus

`enum`

Enum yang merepresentasikan status produk.

| Nama      | Nilai | Deskripsi                                         |
| --------- | ----- | ------------------------------------------------- |
| Active    | 0     | Status aktif.                                     |
| InActive  | 1     | Status tidak aktif.                               |
| Forbidden | 2     | Status terlarang karena masa penggunaan berakhir. |

## CurrencyType

`enum`

Enum yang merepresentasikan tipe mata uang.

| Nama             | Nilai | Deskripsi                    |
| ---------------- | ----- | ---------------------------- |
| OfficialCurrency | 0     | Mata uang resmi ZEPETO (ZEM) |
| UserCurrency     | 1     | Mata uang in-World.          |

## ProductService

`class`

`ProductService` mengelola operasi yang berkaitan dengan produk in-World.
Pemain dapat mengakses informasi produk in-World dan melakukan pembelian melalui layanan ini.

### Event

| Nama                         | Tipe                                             | Deskripsi                                                                                                                                                                                                                                                 |
| ---------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| OnPurchaseCompleted (static) | `UnityEvent<ProductRecord, PurchaseResponse>`    | Event yang terpicu saat pembelian produk in-World berhasil. Listener dapat ditambahkan dan akan menerima instance `ProductRecord` (informasi produk yang dibeli) dan `PurchaseResponse` (informasi hasil pembelian) sebagai argumen.                      |
| OnPurchaseFailed (static)    | `UnityEvent<ProductRecord, ProductBaseResponse>` | Event yang terpicu saat pembelian produk in-World gagal. Listener dapat ditambahkan dan akan menerima instance `ProductRecord` (informasi produk pada percobaan pembelian) dan `PurchaseResponse` (informasi hasil pembelian yang gagal) sebagai argumen. |

### Metode

### GetProductsAsync

`static GetProductsAsync(productIds: string[]) → BaseRequest<ProductListResponse>`

Metode asinkron ini mengambil daftar produk in-World berdasarkan ID produk yang diberikan.

| Parameter  | Tipe       | Deskripsi                             |
| ---------- | ---------- | ------------------------------------- |
| productIds | `string[]` | ID beberapa produk yang akan diambil. |

**Mengembalikan:** [BaseRequest\<ProductListResponse>](./#baserequest) — Objek `BaseRequest`. Setelah proses asinkron selesai, Anda dapat mengakses objek `ProductListResponse` melalui properti `responseData`.

### GetProductAsync

`static GetProductAsync(productId: string) → BaseRequest<ProductResponse>`

Metode asinkron ini mengambil informasi produk in-World berdasarkan ID produk yang diberikan.

| Parameter | Tipe     | Deskripsi                    |
| --------- | -------- | ---------------------------- |
| productId | `string` | ID produk yang akan diambil. |

**Mengembalikan:** [BaseRequest\<ProductResponse>](./#baserequest) — Objek `BaseRequest`. Setelah proses asinkron selesai, Anda dapat mengakses objek `ProductResponse` melalui properti `responseData`.

### PurchaseProductAsync

`static PurchaseProductAsync(product: ProductRecord, reason?: string) → BaseRequest<PurchaseResponse>`

Metode asinkron ini melakukan pembelian produk in-World berdasarkan informasi produk yang diberikan.

| Parameter         | Tipe                              | Deskripsi                                              |
| ----------------- | --------------------------------- | ------------------------------------------------------ |
| product           | [ProductRecord](./#productrecord) | Instance `ProductRecord` dari produk yang akan dibeli. |
| reason (opsional) | `string`                          | Penjelasan untuk pembelian tersebut.                   |

**Mengembalikan:** [BaseRequest\<PurchaseResponse>](./#baserequest) — Objek `BaseRequest`. Setelah proses asinkron selesai, Anda dapat mengakses objek `PurchaseResponse` melalui properti `responseData`.

### PurchaseProductAsync

`static PurchaseProductAsync(productId: string, reason?: string) → BaseRequest<PurchaseResponse>`

Metode asinkron ini melakukan pembelian produk in-World berdasarkan ID produk yang diberikan.

| Parameter         | Tipe     | Deskripsi                            |
| ----------------- | -------- | ------------------------------------ |
| productId         | `string` | ID produk yang akan dibeli.          |
| reason (opsional) | `string` | Penjelasan untuk pembelian tersebut. |

**Mengembalikan:** [BaseRequest\<PurchaseResponse>](./#baserequest) — Objek `BaseRequest`. Setelah proses asinkron selesai, Anda dapat mengakses objek `PurchaseResponse` melalui properti `responseData`.

### GetCurrenciesAsync

`static GetCurrenciesAsync() → BaseRequest<CurrencyListResponse>`

Metode asinkron untuk mendapatkan daftar mata uang.
Setelah selesai, daftar mata uang akan diperoleh, dan Anda dapat mengakses objek `CurrencyListResponse` melalui properti `responseData`.

**Mengembalikan:** [BaseRequest\<CurrencyListResponse>](./#baserequest)

### GetCurrencyAsync

`static GetCurrencyAsync(currencyId: string) → BaseRequest<CurrencyResponse>`

Metode asinkron ini mengambil informasi mata uang in-World berdasarkan ID produk yang diberikan.

| Parameter  | Tipe     | Deskripsi                       |
| ---------- | -------- | ------------------------------- |
| currencyId | `string` | ID mata uang yang akan diambil. |

**Mengembalikan:** [BaseRequest\<CurrencyResponse>](./#baserequest) — Objek `BaseRequest`. Setelah proses asinkron selesai, Anda dapat mengakses objek `CurrencyResponse` melalui properti `responseData`.

### OpenPurchaseUI

`static OpenPurchaseUI(product: ProductRecord) → void`

Metode ini membuka UI pembelian produk in-World.

| Parameter | Tipe                              | Deskripsi                                              |
| --------- | --------------------------------- | ------------------------------------------------------ |
| product   | [ProductRecord](./#productrecord) | Instance `ProductRecord` dari produk yang akan dibeli. |

## ProductPurchaseButton

`class`

Class yang mengelola fungsionalitas tombol pembelian produk in-World.

### Properti

| Nama      | Tipe                              | Deskripsi                                                            |
| --------- | --------------------------------- | -------------------------------------------------------------------- |
| productId | `string`                          | Mendapatkan ID produk in-World yang tersedia untuk dibeli.           |
| product   | [ProductRecord](./#productrecord) | Mengambil informasi produk in-World yang terkait dengan `productId`. |

### Metode

### SetProductId

`SetProductId(productId: string) → void`

Mengatur ID produk in-World yang tersedia untuk dibeli melalui tombol ini.

| Parameter | Tipe     | Deskripsi  |
| --------- | -------- | ---------- |
| productId | `string` | ID produk. |

## ProductError

`enum`

Kode error yang menunjukkan penyebab kegagalan permintaan terkait produk.

| Nama                             | Nilai | Deskripsi                                                                                                                                             |
| -------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Unknown                          | -1    | Error: Kesalahan tidak dikenal.                                                                                                                       |
| NetworkError                     | 0     | Error: Kesalahan terkait masalah jaringan, termasuk koneksi terputus atau koneksi tidak stabil.                                                       |
| UserCanceled                     | 1     | Error: Permintaan dibatalkan oleh pengguna.                                                                                                           |
| ProductRefreshResponseError      | 2     | Error: Metadata produk pada permintaan tidak valid.                                                                                                   |
| ItemPackageProductsResponseError | 3     | Error: Gagal mengambil informasi satu atau beberapa item dalam paket produk item.                                                                     |
| IAPCardError                     | 4     | Error: Gagal mengambil informasi satu atau beberapa mata uang dalam paket produk mata uang.                                                           |
| ProductPriceChanged              | 4001  | Error: Harga produk tidak sesuai.                                                                                                                     |
| ProductAlreadyPurchased          | 4002  | Error: Produk sudah dibeli.                                                                                                                           |
| BalanceOfficialCurrencyNotEnough | 4003  | Error: Saldo mata uang resmi ZEPETO (ZEM) tidak mencukupi untuk pembelian.                                                                            |
| BalanceUserCurrencyNotEnough     | 4004  | Error: Saldo mata uang in-World tidak mencukupi untuk pembelian.                                                                                      |
| ProductNotActive                 | 4005  | Error: Produk tidak aktif.                                                                                                                            |
| InvalidCreator                   | 4006  | Error: ID pengguna pemain berbeda dengan ID pengguna kreator World. Error ini hanya terjadi di lingkungan pengembangan yang menggunakan Unity editor. |

## OfficialCurrencyBalanceRequest

`class` · extends [BaseRequest\<BalanceResponse>](./#baserequest)

Merepresentasikan permintaan asinkron untuk mengambil saldo mata uang resmi ZEPETO (ZEM).
