---
title: การให้ API
slug: world-sdk-guide-th/api
docTags: 
createdAt: 2024-09-02T08:34:13.134Z
---

คุณสามารถใช้ API การให้ของขวัญเพื่อมอบเสื้อผ้าให้กับผู้ใช้คนอื่นภายใน ZEPETO World.

อย่างไรก็ตาม เมื่อใช้ API สินค้าของผู้ส่งจะถูกหักออก.



## ติดตั้ง

Window → Package Manager → ZEPETO.World Package กรุณาติดตั้งเวอร์ชัน 1.21.14 หรือสูงกว่าก่อน.

หลังจากนั้น กรุณาติดตั้งแพ็คเกจ ‘ZEPETO.Module’ ที่มีเวอร์ชัน 1.0.7 หรือสูงกว่า.

ตรวจสอบให้แน่ใจว่าแอป ZEPETO กำลังทำงานในเวอร์ชัน 3.46.000 หรือสูงกว่า.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-SCGjvJHEAi76UkoHHXYW_-20240904-102409.png)



## API การให้ของขวัญ

ในการใช้ API การให้ของขวัญ ให้เพิ่มคำสั่งนำเข้าด้านล่าง.

```typescript
import { GiftBackgroundType, ShopService, ItemGiftResponse } from 'ZEPETO.Module.Shop';
```



หากคุณสนใจใน Gifting API โปรดดูเอกสาร:

:::hint{type="info"}
**📘&#x20;**&#xE42;ปรดดูคู่มือต่อไปนี้. \[[ZEPETO.Module.Shop API](https://developer.zepeto.me/docs/module/namespaces/ZEPETO_Module_Shop)]
:::



:::hint{type="danger"}
- ใน Unity editor คุณสามารถทดสอบทั้งกรณีที่สำเร็จและล้มเหลว แม้ว่าการให้ของขวัญจะสำเร็จ มันจะไม่หักเงินใด ๆ และของขวัญจะไม่ถูกส่งไปยังผู้รับ.
- ในระหว่างการทดสอบบนมือถือผ่าน QR codes หรือ ลิงก์ทดสอบ การทำธุรกรรมที่สำเร็จจะส่งผลให้มีการหักเงินจริงและของขวัญจะถูกส่งไปยังผู้รับ.
:::



## ตัวอย่างการใช้งาน

- กรุณาเพิ่มปุ่มส่งของขวัญไปยัง Canvas.
- กรุณาเขียนโค้ดตัวอย่างตามด้านล่างนี้.

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { GiftBackgroundType, ShopService, ItemGiftResponse } from 'ZEPETO.Module.Shop';
import { Button } from 'UnityEngine.UI';
import { ErrorCode } from 'ZEPETO.Module';
 
export default class SendGift extends ZepetoScriptBehaviour {
 
    public itemId : string;
    public targetUserId : string;
    public sendGiftButton : Button;
 
    Start() {
        this.sendGiftButton.onClick.AddListener(()=>{
            ShopService.ShowGiftPopup(
                this.itemId,
                this.targetUserId,
                GiftBackgroundType.Type01,
                "สวัสดี นี่คือสำหรับคุณ!",
                (response: ItemGiftResponse) => {  // onComplete callback
                    console.log(`ส่งของขวัญสำเร็จ! ยอดเงิน ZEPETO Coin ${response.coin}, ยอดเงิน ZEM ${response.zem}`);
                },
                (error: ErrorCode) => {  // onFailure callback
                    console.error("เกิดข้อผิดพลาดในการส่งของขวัญ:", error);
                }
            );
        });
    }
}
```



- หลังจากเขียนสคริปต์แล้ว ให้เชื่อมต่อปุ่มใน Inspector และกรอก userID และ itemID ของผู้ที่จะได้รับของขวัญ.

:::hint{type="info"}
**📘&#x20;**&#xE42;ปรดดูคู่มือต่อไปนี้เกี่ยวกับวิธีการรับ UserId ของผู้เล่น Zepeto.\[[ผู้เล่น ZEPETO](docId\:QEI1CLrlDK5LxXgpv1yQu)]
:::



- เพื่อทดสอบกรณีสำเร็จหรือไม่สำเร็จ ให้สร้าง QR code และทดสอบบนอุปกรณ์มือถือของคุณ.
- อย่างไรก็ตาม โปรดทราบว่าสินค้าของผู้ส่งจะถูกหักออก.



### เมื่อการส่งของขวัญสำเร็จ

- เมื่อคุณคลิกปุ่ม UI ป๊อปอัพสำหรับการส่งของขวัญจะปรากฏขึ้น.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-3MUIdRSuqF0IHLlTLP8s7-20240904-102409.png)



- หากของขวัญถูกส่งสำเร็จ UI Toast จะปรากฏขึ้นเพื่อแสดงความสำเร็จ และสคริปต์ตัวอย่างจะสร้างบันทึก

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-Vf1otjwZXmf93sv8CRJlA-20240904-102409.png)



![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-b1LZQ5DbQd9JpXX1av_uO-20240904-102409.png)



- นอกจากนี้ ยังมีของขวัญมาถึงสำหรับ targetUser.

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-SujWd6C1VsYM0lNIAcRDq-20240904-102409.jpg" size="60" width="865" height="1068" position="center" showCaption="false"}



### เมื่อการส่งของขวัญล้มเหลว

- หากกรณีตรงกับ ErrorCode จะมีข้อความแสดงข้อผิดพลาดใน Toast UI และสคริปต์ตัวอย่างจะส่งออกโค้ดข้อผิดพลาดที่ตรงกัน.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-zAFMZdiur9v6Cf7LN_97C-20240904-102410.png)



::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-_k8_ckg4so3bvNO6LLZBc-20240904-102409.png" size="50" width="290" height="60" position="center" showCaption="false"}

