ข้ามไปที่เนื้อหา

การเริ่มต้น IAP v4

หากต้องการใช้ IAP v4 ต้องขอเริ่มต้น IAP หนึ่งครั้งก่อนการซื้อ เมื่อขอเริ่มต้น IAP แอปไคลเอนต์จะส่งคืนข้อมูลร้านค้าที่ใช้งานได้เป็นค่าผลลัพธ์

ข้อมูลร้านค้า

ข้อมูลร้านค้าถูกกำหนดเป็นอีเนัม IAPV4Type และรายละเอียดของฟิลด์มีดังนี้

ชื่อฟิลด์ คำอธิบาย
APPLE_APPSTORE Apple App Store
GOOGLE_PLAYSTORE Google Play Store
HIVE_LEBI Lebi Store
ONESTORE ONE Store
AMAZON_APPSTORE Amazon App Store (ใช้ได้กับ SDK v4 เท่านั้น)
SAMSUNG_GALAXYSTORE Samsung Galaxy Store
HUAWEI_APPGALLERY Huawei App Gallery
HIVESTORE PG (รองรับ Unity สำหรับ Windows, iOS, Android)
ANIMATE_GO animate Games Online (เฉพาะ Android)
DMM ร้านค้าแต้ม DMM ใช้เมื่อรันผ่าน DMM GAME PLAYER บน Windows
  • HIVESTORE PG รองรับเพียง การค้นหาและซื้อสินค้า เท่านั้น และการตรวจสอบใบเสร็จที่ใช้บนไคลเอนต์ไม่รองรับ
  • การชำระเงิน DMM ใช้ได้เฉพาะเมื่อรันผ่าน DMM GAME PLAYER บน Windows และใช้แต้ม DMM ในการชำระเงิน

แม้บริการแอปในร้านค้าจะสิ้นสุดลง ผู้ใช้เดิมยังต้องสามารถเข้าถึงร้านค้าสกุลเงินในเกมเพื่อเล่นเกมต่อได้ ดังนั้นแอปต้อง ออกแบบร้านค้าชำระเงินด้วยเงินจริงและร้านค้าสกุลเงินในเกมแยกจากกันเสมอ ค่าผลลัพธ์ที่ส่งกลับจากการเริ่มต้น IAP v4 ไม่ได้มีไว้เพื่อเข้าถึงร้านค้าในเกม ดังนั้นอย่านำไปใช้ผิดวัตถุประสงค์

สิ่งที่ต้องตรวจสอบก่อนใช้งานการชำระเงิน DMM

การชำระเงิน DMM ใช้เมื่อรันผ่าน DMM GAME PLAYER บน Windows เนื้อหาเกี่ยวกับ DMM ในเอกสารนี้อ้างอิงตามสภาพแวดล้อม Windows สำหรับข้อจำกัดเรื่องการเข้าสู่ระบบ DMM และโทเค็นจัดการ โปรดดูที่ เข้าสู่ระบบด้วย DMM ก่อน

การชำระเงิน DMM เป็นวิธีชำระเงินที่ใช้แต้ม DMM ที่ผู้ใช้เติมไว้ในการซื้อสินค้า ขั้นตอนการขอชำระเงินและการกู้คืนเป็นไปตามขั้นตอนการซื้อทั่วไปของ IAP v4 แต่จะทำงานร่วมกับเงื่อนไขเฉพาะของ DMM เช่น การตรวจสอบยอดแต้ม DMM คงเหลือและการแนะนำให้เติมแต้ม ดังนั้นในสภาพแวดล้อม DMM บน Windows ระบบจะยังคงขั้นตอน IAP v4 เดิมไว้ พร้อมทั้งประมวลผลเงื่อนไขการชำระเงินที่อิงตามแต้ม DMM ไปพร้อมกัน

เตรียมความพร้อม: การลงทะเบียนในคอนโซล

หากต้องการใช้การยืนยันตัวตน DMM โปรดดูที่ เข้าสู่ระบบด้วย DMM ก่อน

คุณสมบัติของการชำระเงิน DMM

การชำระเงินจะได้รับการยืนยันทันทีหลังเรียก purchase() โดยไม่มี UI หน้าต่างชำระเงินแยกต่างหาก อย่างไรก็ตาม ขึ้นอยู่กับสถานการณ์การประมวลผลของเซิร์ฟเวอร์ ใบเสร็จอาจไม่ถูกส่งคืนทันทีหลังการซื้อ ในกรณีนี้ให้เรียก restore() เพื่อขอรับใบเสร็จอีกครั้ง

การเรียกใช้ API การชำระเงิน DMM ต้องใช้โทเค็นจัดการ onetime_token ที่ยังไม่หมดอายุ สำหรับอายุของโทเค็น การต่ออายุอัตโนมัติ และการจัดการเมื่อหมดอายุ โปรดดูที่ เข้าสู่ระบบด้วย DMM

เริ่มต้น IAPv4

หากต้องการเริ่มต้น IAP v4 ต้องเรียกเมธอด marketConnect() ของคลาส IAPV4

ต่อไปนี้คือตัวอย่างโค้ดเพื่อเริ่มต้น IAP v4.

เอกสาร API: hive.IAPV4.marketConnect

using hive;    
    IAPV4.marketConnect((ResultAPI result, List marketIdList) => {    
         if (result.isSuccess()) {    
            // call successful    
        }    
});
#include "HiveIAPV4.h"

FHiveIAPV4::MarketConnect(FHiveIAPV4OnMarketConnectDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<EHiveIAPV4Type>& MarketIds) {
        if (Result.IsSuccess()) {
                // call successful 
        }
}));

API Reference: IAPV4::marketConnect

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    IAPV4::marketConnect([=](ResultAPI const & result, vector const & marketIdList) {    
         if (result.isSuccess()) {    
            // call successful    
         }    
});

API Reference: IAPV4.marketConnect

import com.hive.IAPV4    
    import com.hive.ResultAPI    
    IAPV4.marketConnect(object : IAPV4.IAPV4MarketInfoListener {    
         override fun onIAPV4MarketInfo(result: ResultAPI, iapV4TypeList: ArrayList<IAPV4.IAPV4Type>?) {    
             if (result.isSuccess) {    
                 // call successful    
             }    
         }    
})

API Reference: com.hive.IAPV4.marketConnect

import com.hive.IAPV4;    
    import com.hive.ResultAPI;    
    IAPV4.INSTANCE.marketConnect((result, iapV4TypeList) -> {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});

API Reference: IAPV4Interface .marketConnect

import HIVEService    
    IAPV4Interface.marketConnect() { result, marketIdList in    
        if result.isSuccess() {    
        // call successful    
        }    
}

API Reference: HIVEIAPV4::marketConnect

#import <HIVEService/HIVEService-Swift.h>    
    [HIVEIAPV4 marketConnect: ^(HIVEResultAPI *result, NSArray<NSNumber *> *marketIdList) {    
         if ([result isSuccess]) {    
            // call successful    
         }    
}];

ตรวจสอบผลการเริ่มต้น

หากใช้หลายร้านค้า marketList ที่ส่งผ่าน callback จะรวมร้านค้าที่ตั้งค่าไว้ใน Hive Console และ callback จะแตกต่างกันตามผลสำเร็จของการเริ่มต้นร้านค้าดังนี้

  • หากร้านค้าทั้งหมดหรือเฉพาะบางร้านค้าเชื่อมต่อสำเร็จ: ResultAPI จะส่งคืนความสำเร็จ และ marketList จะส่งเฉพาะร้านค้าที่เชื่อมต่อสำเร็จ
  • หากการเชื่อมต่อร้านค้าทั้งหมดล้มเหลว: ResultAPI จะส่งคืนรหัสข้อผิดพลาด และ marketList จะส่งคืนค่าไม่มี (null)

ตัวอย่างเช่น ในแอปที่ตั้งค่าทั้ง App Store และ PG (Hive Store) ใน Hive Console หากล้มเหลวเฉพาะการเชื่อมต่อ PG (Hive Store):

  • ResultAPI: ส่งคืนความสำเร็จ
  • marketList: [APPLE_APPSTORE] (ส่งเฉพาะร้านค้าที่สำเร็จ)
Warning

หากการเรียกเมธอด marketConnect() ล้มเหลว คุณจะไม่สามารถดำเนินการดูรายการสินค้าและการซื้อได้ตามปกติ สาเหตุของความล้มเหลวมีดังนี้

  • การล็อกอินบัญชีบนอุปกรณ์ไม่สมบูรณ์
  • การล็อกอินแอปแพลตฟอร์มร้านค้า เช่น Google Play Store หรือ Apple App Store ไม่สมบูรณ์
  • การตั้งค่าร้านค้าตาม App ID ใน Hive Console ไม่สมบูรณ์

แม้ ResultAPI จะส่งคืนความสำเร็จ ก็ไม่ได้หมายความว่าร้านค้าทั้งหมดที่ตั้งค่าไว้ในคอนโซลเชื่อมต่อแล้ว หากจำนวนร้านค้าที่ตั้งค่าไว้ในคอนโซลแตกต่างจากจำนวนร้านค้าใน marketList แสดงว่าการเชื่อมต่อบางร้านค้าล้มเหลว ดังนั้นให้ดำเนินการขั้นตอนการชำระเงินถัดไปด้วยร้านค้าที่อยู่ใน marketList ที่ส่งคืนเท่านั้น

หาก ResultAPI ส่งคืนความล้มเหลว (ล้มเหลวทั้งหมด) แอปไคลเอนต์ต้องจัดการเอง เช่น retry จนกว่าจะได้รับ success callback หรือแสดงสถานะข้อผิดพลาด (ใช้งานร้านค้าไม่ได้) ให้ผู้ใช้ทราบผ่าน popup

ตรวจสอบรหัสที่เกี่ยวข้องได้ที่ IAP v4 Result API Guide

หมายเหตุสำหรับการเริ่มต้น

จาก Hive SDK v4 Unity Windows 25.8.0 รองรับแอป Windows สำหรับ Google Play และสามารถใช้ร้านค้า GOOGLE_PLAYSTORE ได้ ในกรณีนี้ โปรดทราบสิ่งต่อไปนี้ระหว่างการพัฒนา:

  • ผู้ใช้ต้องเข้าสู่ระบบด้วยบัญชี Google ในแอป PC Google Play Games ให้เสร็จสิ้นก่อนเรียกใช้ IAPV4.marketConnect
  • ต้องเตรียมไฟล์ manifest.xml ให้พร้อม

สามารถใช้ PG (HIVESTORE) ได้ตั้งแต่ Hive SDK v4 iOS เวอร์ชัน 26.3.2 เป็นต้นไป

การจัดการความล้มเหลวในการเริ่มต้น Google Play for native PC (Hive SDK v4 Unity Windows 26.4.2 ขึ้นไป)

หากจำเป็นต้องปิดแอปเนื่องจากการเริ่มต้น Play Games PC SDK ล้มเหลว ระบบจะส่งผลลัพธ์ผ่าน callback ของ IAPV4.marketConnect แทนการบังคับปิดแอป ทั้งนี้เพื่อให้แอปสามารถควบคุมจังหวะเวลาและวิธีการปิดแอปได้ด้วยตนเอง

เมื่อการเริ่มต้น Play Games PC SDK ล้มเหลว (kActionRequiredShutdownClientProcess) callback ของ IAPV4.marketConnect จะส่งรหัสผลลัพธ์ IAPV4PlayStoreActionRequiredShutdown(-6100706) กลับมา

เมื่อได้รับรหัสผลลัพธ์นี้ ขอแนะนำให้ปิดโปรเซสของแอปโดยเร็วที่สุด เนื่องจาก ResultAPI.needExit() จะคืนค่า true คุณจึงสามารถใช้ needExit() เพื่อตรวจสอบว่าจำเป็นต้องปิดแอปหรือไม่ เมื่อปิดโปรเซสแล้ว ฝั่ง Play Games PC SDK จะพยายามดำเนินการขั้นตอนต่อไปเพื่อสนับสนุนผู้ใช้