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

การพัฒนาแอป

คู่มือนี้สรุปขั้นตอนในการพัฒนาแอปโดยใช้ SDK ของ Hive SDK. SDK ของ Hive มีฟีเจอร์หลากหลาย เช่น การตรวจสอบสิทธิ์, การชำระเงิน, การแจ้งเตือนแบบพุช, แบนเนอร์โฆษณา, และการวิเคราะห์ข้อมูลลูกค้า. ในคู่มือนี้เราจะมุ่งเน้นไปที่การใช้งานฟีเจอร์พื้นฐานที่สุด: การตรวจสอบสิทธิ์ และ การชำระเงิน.

Note

SDK ของ Hive รองรับเอนจินการพัฒนาต่างๆ (Android Native, iOS Native, Unity, Unreal Engine, ฯลฯ) คู่มือนี้สมมติว่าคุณมีความคุ้นเคยในการพัฒนา สร้าง และปล่อยแอปด้วยเอนจินการพัฒนาทุกตัวแล้ว และจะมุ่งเน้นไปที่วิธีการใช้ SDK ของ Hive สำหรับรายละเอียดเกี่ยวกับการพัฒนา สร้าง และปล่อยแอปสำหรับเอนจินการพัฒนาทุกตัว โปรดดูที่ศูนย์นักพัฒนาและเอกสารของแต่ละตัว


กระบวนการโดยรวมในการใช้ SDK ของ Hive ในการพัฒนาแอปสามารถสรุปได้ดังนี้:

  1. ดำเนินการ Hive SDK initialization\n2. ดำเนินการตรวจสอบสิทธิ์\n3. ดำเนินการชำระเงิน


การดำเนินการรับรองความถูกต้องรวมถึง:

  • การดำเนินการเข้าสู่ระบบ
  • การดำเนินการตรวจสอบโทเค็นการเข้าสู่ระบบ


การดำเนินการชำระเงินรวมถึง:

  • การเริ่มต้นการชำระเงิน
  • การดึงข้อมูลรายการสินค้า
  • การซื้อสินค้า
  • การตรวจสอบใบเสร็จการซื้อ


Hive การดำเนินการ SDK

ภาพรวมของกระบวนการดำเนินการทั่วไปของ Hive SDK เพื่อพัฒนาฟีเจอร์แอปของคุณมีดังนี้

การติดตั้ง Hive SDK

ในการใช้งาน SDK ของแบรนด์ Hive คุณต้องเริ่มต้นใช้งานก่อน การเริ่มต้นใช้งาน SDK ของ Hive เกี่ยวข้องกับการกำหนดค่าที่ป้อนล่วงหน้าและการทำงานเตรียมการต่างๆ เพื่อเริ่มต้น SDK ของ Hive ให้เรียกใช้ AuthV4.setup หากการเรียกใช้งานสำเร็จ คุณจะได้รับข้อมูลดังต่อไปนี้ ซึ่งสามารถเก็บไว้และใช้งานในเวลาที่เหมาะสมในแอปของคุณ

Hive ข้อมูลผลลัพธ์การเริ่มต้น

ชื่อฟิลด์ คำอธิบาย ตัวอย่าง
isAutoSignIn การลงชื่อเข้าใช้อัตโนมัติเป็นไปได้หรือไม่ true
did ตัวระบุที่สร้างขึ้นเมื่อแอปถูกติดตั้ง 123456789
providerTypeList รายการการรับรองความถูกต้องของ IdP ที่มีอยู่ในแอปปัจจุบัน ProviderType.HIVEProviderType.GOOGLE


ต่อไปนี้คือตัวอย่างการใช้งานของวิธีการ setup

API Reference: hive.AuthV4.setup

// Request to initialize Hive SDK
AuthV4.setup ((ResultAPI result, Boolean isAutoSignIn, String did, List providerTypeList) => {
    if (result.isSuccess()) {
        // Initialization succeeded. Handle login based on the auto-login availability.
    } else if (result.needExit()) {
        // TODO: Implement app exit functionality
        // e.g., Application.Quit();
    } else {
        // Initialization failed
    }
});

API Reference: AuthV4::setup

// Request to initialize Hive SDK
AuthV4::setup([=](ResultAPI const & result, bool isAutoSignIn, std::string did, std::vector<ProviderType> const & providerTypeList) {

    if (result.isSuccess()) {
        // การเริ่มต้นสำเร็จแล้ว จัดการการเข้าสู่ระบบตามความพร้อมใช้งานของการเข้าสู่ระบบอัตโนมัติ
    } else if (result.needExit()) {
        // TODO: นำฟังก์ชันการออกจากแอปไปใช้
        // ผู้ใช้เครื่องยนต์ Cocos2d-x
        // e.g., exit(0);
        // ผู้ใช้เครื่องยนต์ Unreal
        // e.g., UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);    
    } else {
        // การเริ่มต้นล้มเหลว
    }

});

API Reference: com.hive.AuthV4.setup

// คำขอเพื่อเริ่มต้น Hive SDK    
    AuthV4.setup(object: AuthV4.AuthV4SetupListener{    
        override fun onAuthV4Setup(result: ResultAPI, isAutoSignIn: Boolean, did: String?, providerTypeList: ArrayList<AuthV4.ProviderType>?) {    
            if (result.isSuccess) {    
                // การเริ่มต้นสำเร็จ จัดการการเข้าสู่ระบบตามความพร้อมใช้งานของการเข้าสู่ระบบอัตโนมัติ    
            } else if (result.needExit()) {    
                // TODO: นำไปใช้ฟังก์ชันการออกจากแอป    
                // e.g., exitProcess(0)    
            } else {    
                // การเริ่มต้นล้มเหลว    
            }    
        }    
})

API Reference: com.hive.AuthV4.setup

// Request to initialize Hive SDK    
    AuthV4.setup(new AuthV4.AuthV4SetupListener() {    
        @Override    
        public void onAuthV4Setup(ResultAPI result, boolean isAutoSignIn, String did, ArrayList<AuthV4.ProviderType> providerTypeList) {    

                if (result.isSuccess()) {    
                // การเริ่มต้นสำเร็จแล้ว จัดการการเข้าสู่ระบบตามความพร้อมใช้งานของการเข้าสู่ระบบอัตโนมัติ    
            } else if (result.needExit()) {    
                // TODO: Implement app exit functionality    
                // e.g., System.exit(0);    
            } else {    
                // การเริ่มต้นล้มเหลว    
            }    
        }        
});

API Reference: HIVEAuthV4:setup

AuthV4Interface.setup { (result, isAutoSignIn, did, providerTypeList) in    
        if result.isSuccess() {    
            // Initialization succeeded. Handle login based on the auto-login availability.    
        } else if result.needExit() {    
            // TODO: Implement app exit functionality    
            // e.g., exit(0)    
        } else {    
            // Initialization failed    
        }    
}

API Reference: HIVEAuthV4:setup

// Request to initialize Hive SDK    
    [HIVEAuthV4 setup:^(HIVEResultAPI *result, BOOL isAutoSignIn, NSString *did, NSArray<NSNumber *> *providerTypeList) {    
        if (result.isSuccess) {    
            // Initialization succeeded. Handle login based on the auto-login availability.    
        } else if (result.needExit) {    
            // TODO: Implement app exit functionality    
            // e.g., exit(0);    
        } else {    
            // Initialization failed    
        }    
}];
Info

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Hive Initialization Guide.

การทำงานของการตรวจสอบสิทธิ์

ผู้ใช้แอปสามารถเข้าสู่ระบบในแอปได้ไม่เพียงแต่ด้วยบัญชีสมาชิก Hive ของตนเท่านั้น แต่ยังสามารถใช้บัญชีผู้ให้บริการ ID (IdP) ต่างๆ เช่น Google และ Facebook ได้อีกด้วย เมื่อดำเนินการเข้าสู่ระบบ ผู้ใช้สามารถเลือกบัญชี IdP ที่ต้องการเพื่อเข้าสู่ระบบในแอปและเชื่อมโยงบัญชีแอปของตนกับบัญชี IdP ประเภทของ IdP ที่เสนอสามารถกำหนดค่าแตกต่างกันไปขึ้นอยู่กับแอป และแพลตฟอร์ม Hive จะเปิดเผย IdP ที่เหมาะสมให้กับผู้ใช้ตามข้อมูลประเทศของพวกเขา。

ก่อนอื่น ให้กำหนดค่าการตั้งค่า IdP ในคอนโซล Hive

  1. บันทึกค่าคีย์ที่ให้โดย IdP\n2. เปิดใช้งานการใช้ IdP ใน App Center > Manage AppID > Search and click the app > Click the AppID tab > Click the app AppID > Login<
Info

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Hive คู่มือการรับรองความถูกต้องของคอนโซล.

การนำไปใช้ในการเข้าสู่ระบบ

เมื่อการตั้งค่าคอนโซลเสร็จสิ้น ให้ดำเนินการสร้าง UI การเข้าสู่ระบบโดยใช้ SDK ของ Hive ด้านล่างนี้คือตัวอย่างที่ใช้ UI ที่จัดเตรียมโดย SDK

API Reference: hive.AuthV4.showSignIn

// Hive SDK AuthV4 authentication UI request
    AuthV4.showSignIn((ResultAPI result, AuthV4.PlayerInfo playerInfo)=>{    
    if (result.isSuccess()) {    
        // การตรวจสอบสิทธิ์สำเร็จ
        // playerInfo: ข้อมูลผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว
        // ตัวอย่างการดึงข้อมูลอีเมล
        foreach (KeyValuePair<AuthV4.ProviderType, AuthV4.ProviderInfo> entry in playerInfo.providerInfoData) {    

            AuthV4.ProviderInfo providerInfo = entry.Value;    
            if(providerInfo.providerEmail != null && providerInfo.providerEmail != "") {    
                string email = providerInfo.providerEmail;    
                break;    
            }    
        }    
    }    
    else if (result.needExit()) {    
        // TODO: Implement the app exit function
        // e.g., Application.Quit();    
    }    
});

API Reference: AuthV4::showSignIn

// Hive SDK AuthV4 authentication UI request
    AuthV4::showSignIn([=](ResultAPI const & result, PlayerInfo const & playerInfo) {    
    if (result.isSuccess()) {    
        // Authentication successful
        // playerInfo: authenticated user information

        // ตัวอย่างการดึงข้อมูลอีเมล
        for(auto it = playerInfo.providerInfoData.begin(); it != playerInfo.providerInfoData.end(); ++it) {    
            hive::ProviderInfo providerInfo = it->second;    
            if(!providerInfo.providerEmail.empty()) {    
                std::string email = providerInfo.providerEmail;    
                break;    
            }    
        }    
    }    
    else if (result.needExit()) {    
        // TODO: Implement the app exit function
        // Cocos2d-x engine users
        // e.g., exit(0);
        // Unreal engine users
        // e.g., UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);    
    }    
});

API Reference: com.hive.AuthV4.showSignIn

// Hive SDK AuthV4 authentication UI request
    AuthV4.showSignIn(object : AuthV4.AuthV4SignInListener {    
    override fun onAuthV4SignIn(result: ResultAPI, playerInfo: AuthV4.PlayerInfo?) {    
        if (result.isSuccess) {    
            // การตรวจสอบสิทธิ์สำเร็จ
            // playerInfo: ข้อมูลผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว
            // ตัวอย่างการดึงข้อมูลอีเมล
            playerInfo?.let {    
                for ((key, value) in it.providerInfoData) {    
                    var providerInfo: AuthV4.ProviderInfo = value    
                    if(providerInfo.providerEmail.isNotEmpty()) {    
                        val email = providerInfo.providerEmail    
                        break    
                    }    
                }    
            }    
        } else if (result.needExit()) {    
            // TODO: Implement the app exit function
            // e.g., exitProcess(0)    
        }    
    }    
})

API Reference: com.hive.AuthV4.showSignIn

// Hive SDK AuthV4 authentication UI request
    AuthV4.showSignIn(new AuthV4.AuthV4SignInListener() {    
    @Override    
    public void onAuthV4SignIn(ResultAPI result, AuthV4.PlayerInfo playerInfo) {    

        if (result.isSuccess()) {    
            // Authentication successful
            // playerInfo: authenticated user information
            // Example of retrieving email information
            if(playerInfo != null) {    
                for (Map.Entry<AuthV4.ProviderType, AuthV4.ProviderInfo> entry : playerInfo.getProviderInfoData().entrySet()) {    
                    AuthV4.ProviderInfo providerInfo = entry.getValue();    
                    if (providerInfo.getProviderEmail() != "") {    
                        String email = providerInfo.getProviderEmail();    
                        break;    
                    }    
                }    
            }    
        }    
        else if (result.needExit()) {    
            // TODO: Implement the app exit function
            // e.g., System.exit(0);    
        }    
    }    
});

API Reference: HIVEAuthV4:showSignIn

var email = String()    
    // Request Hive SDK AuthV4 authentication UI    
    AuthV4Interface.showSignIn { (result, playerInfo) in    

    if result.isSuccess() {    
        // การตรวจสอบสิทธิ์สำเร็จ    
        // playerInfo: ข้อมูลผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว    
        // ตัวอย่างการดึงข้อมูลอีเมล    
        if let playerInfo = playerInfo {    
            // ค้นหาข้อมูล providerInfo ด้วย providerEmail (ผู้ให้บริการที่เข้าสู่ระบบในปัจจุบัน)    
            for key in playerInfo.providerInfoData.keys {    
                if let providerInfo = playerInfo.providerInfoData[key],    
                    providerInfo.providerEmail.count > 0 {    
                    // providerEmail != ""    
                    email = providerInfo.providerEmail    
                    break    
                }    
            }    
        }    
    } else if result.needExit() {    
        // TODO: Implement app exit functionality    
        // e.g., exit(0)    
    }    
}

API Reference: HIVEAuthV4:showSignIn

__block NSString* email = @"";    
    // ขอ Hive SDK AuthV4 การตรวจสอบสิทธิ์ UI    
    [HIVEAuthV4 showSignIn:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {    
    if([result isSuccess]){    
        // การตรวจสอบสิทธิ์สำเร็จ    
        // playerInfo: ข้อมูลผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว    
        // ตัวอย่างการดึงข้อมูลอีเมล    
        if(playerInfo != nil) {    
            // ค้นหาข้อมูล providerInfo ด้วย providerEmail (ผู้ให้บริการที่เข้าสู่ระบบในปัจจุบัน)    
            for (NSString* key in playerInfo.providerInfoData.allKeys) {    
                HIVEProviderInfo* providerInfo = playerInfo.providerInfoData[key];    
                if (providerInfo != nil && providerInfo.providerEmail.length > 0) {    
                    // providerEmail != ""    
                    email = providerInfo.providerEmail;    
                    break;    
                }    
            }    
        }    
    } else if ([result needExit]) {    
        // TODO: Implement app exit functionality    
        // e.g., exit(0);    
    }    
}];


หากมีคีย์โทเค็นการตรวจสอบสิทธิ์ที่มีอยู่ ผู้ใช้สามารถเข้าสู่ระบบแอปได้โดยอัตโนมัติ หาก isAutoSignIn ที่ได้รับจากการตอบสนองการเริ่มต้น SDK ของ Hive เป็น true ผู้ใช้สามารถเข้าสู่ระบบโดยอัตโนมัติโดยไม่ต้องใช้ UI การเข้าสู่ระบบตามที่แสดงข้างต้น ด้านล่างนี้เป็นตัวอย่างของการเรียกเข้าสู่ระบบอัตโนมัติ

API Reference: hive.AuthV4.Helper.signIn

// Attempting Hive SDK signIn    
    AuthV4.Helper.signIn (delegate (ResultAPI result, AuthV4.PlayerInfo playerInfo) {    

    if (result.isSuccess()) {    
        // การเข้าสู่ระบบสำเร็จ    
    } else if (result.needExit()) {    
        // TODO: Implement app exit functionality    
        // e.g., Application.Quit();    
    } else {    
        switch (result.code) {    
            case ResultAPI.Code.AuthV4ConflictPlayer:    
                // ข้อขัดแย้งของบัญชี    
                break;    
            case ResultAPI.Code.AuthV4HelperImplifiedLoginFail:    
                // การเข้าสู่ระบบโดยนัยล้มเหลว                   
                // ex) AuthV4.showSignIn(...);    
                break;    
            default:    
                // สถานการณ์พิเศษอื่น ๆ    
                break;    
        }    
    }    
});

API Reference: Auth4::signIn

// Attempting Hive SDK signIn    
    AuthV4::Helper::signIn([=](ResultAPI const & result, std::shared_ptr playerInfo) {    

    if (result.isSuccess()) {    
        // Login successful    
    } else if (result.needExit()) {    
        // TODO: Implement app exit functionality              
        // Cocos2d-x engine users    
        // e.g., exit(0);    
        // Unreal engine users    
        // e.g., UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);    
    } else {    
        switch (result.code) {    
            case ResultAPI::AuthV4ConflictPlayer:    
                // Account conflict    
                break;    
            case ResultAPI::AuthV4HelperImplifiedLoginFail:    
                // Implicit login failed    
                // ex) AuthV4.showSignIn(...);    
                break;    
            default:    
                break;    
        }    
    }    
});

API Reference: com.hive.Auth4.Helper.signIn

// พยายาม Hive SDK signIn
AuthV4.Helper.signIn(object : AuthV4.Helper.AuthV4HelperListener {
override fun onAuthV4Helper(result: ResultAPI, playerInfo: AuthV4.PlayerInfo?) {
    if (result.isSuccess) {
        // เข้าสู่ระบบสำเร็จ
    } else if (result.needExit()) {
        // TODO: Implement app exit functionality
        // e.g., exitProcess(0)
    } else {
        when (result.code) {
            ResultAPI.Code.AuthV4ConflictPlayer -> {
                // ข้อขัดแย้งของบัญชี
            }
            ResultAPI.Code.AuthV4HelperImplifiedLoginFail -> {
                // การเข้าสู่ระบบโดยนัยล้มเหลว
                // ex) AuthV4.showSignIn(...);
            }
            else -> {
                // สถานการณ์พิเศษอื่น ๆ
            }
        }
    }
}
})

API Reference: Auth4::signIn

// พยายามเข้าสู่ระบบด้วย Hive SDK
AuthV4.Helper.signIn(new AuthV4.Helper.AuthV4HelperListener() {
@Override
public void onAuthV4Helper(ResultAPI result, AuthV4.PlayerInfo playerInfo) {

    if (result.isSuccess()) {
        // การเข้าสู่ระบบสำเร็จ
    } else if (result.needExit()) {
        // TODO: Implement app exit functionality
        // e.g., System.exit(0);
    } else {
            switch (result.code) {
            case AuthV4ConflictPlayer:
                // ข้อขัดแย้งบัญชี
                break;
            case AuthV4HelperImplifiedLoginFail:
                // การเข้าสู่ระบบโดยนัยล้มเหลว               
                // e.g., AuthV4.showSignIn(...);
                break;
            default:
                // สถานการณ์พิเศษอื่น ๆ
                break;
        }
    }
}  

API Reference: HIVEAuth4:signIn

    // Attempt to sign in with Hive SDK
AuthV4Interface.helper().signIn() { (result, playerInfo) in

if result.isSuccess() {
    // การเข้าสู่ระบบสำเร็จ 
}
else if result.needExit() {
    // TODO: Implement app exit functionality
    // e.g., exit(0)
}
else {
    switch result.getCode() {
    case .authV4ConflictPlayer:
        // ข้อขัดแย้งของบัญชี   
    case .authV4HelperImplifiedLoginFail:
        // การเข้าสู่ระบบโดยนัยล้มเหลว
        // e.g., AuthV4Interface.showSignIn() { (result, playerInfo)
        // // do something...
        // }
    default:
        // สถานการณ์พิเศษอื่นๆ
        break   
    }
}
}

API Reference: HIVEAuth4:signIn

    // Attempt to sign in with Hive SDK
[[HIVEAuthV4 helper] signIn:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {

if (result.isSuccess) {
    // การเข้าสู่ระบบสำเร็จ 
}
else if (result.needExit) {
    // TODO: Implement app exit functionality
    // e.g., exit(0);
}
else {
    switch (result.code) {
        case kAuthV4ConflictPlayer:
            // ข้อขัดแย้งของบัญชี
            break;    
        case kAuthV4HelperImplifiedLoginFail:
            // การเข้าสู่ระบบโดยนัยล้มเหลว
            // e.g., [HIVEAuthV4 showSignIn:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) {
            // // do something...
            // }];
            break;
        default:
            // สถานการณ์ที่ผิดปกติอื่น ๆ
            break;   
    }
}
}];


นอกจากนี้ เรายังสนับสนุนฟีเจอร์การปรับแต่งที่อนุญาตให้ผู้ใช้สามารถสร้าง UI สำหรับการเข้าสู่ระบบของตนเองในแอปโดยไม่ต้องใช้ UI ของ Hive และฟีเจอร์การเข้าสู่ระบบในฐานะแแขกที่อนุญาตให้ผู้ใช้ใช้แอปในฐานะแขกโดยไม่ต้องเลือก IdP.

Info

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Login/Logout.

ตรวจสอบโทเค็นการเข้าสู่ระบบ

เพื่อป้องกันเหตุการณ์ด้านความปลอดภัย เช่น การขโมยบัญชีหรือการแฮ็ก คุณต้องทำการตรวจสอบโทเค็นการเข้าสู่ระบบหลังจากที่ผู้ใช้เข้าสู่ระบบ โดยใช้โทเค็น, PlayerID, และ DID ที่ส่งคืนหลังจากการเข้าสู่ระบบที่สำเร็จ เซิร์ฟเวอร์แอปของคุณสามารถตรวจสอบได้ว่าโทเค็นคีย์ของผู้ใช้ที่เข้าสู่ระบบนั้นถูกต้องหรือไม่ ตรวจสอบโทเค็นการเข้าสู่ระบบ จะดำเนินการโดยการเรียกใช้ Hive Server API > Auth v4 Verify Token API.

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

Info

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Verify Sign-In Token Key.

การดำเนินการชำระเงิน

ฟีเจอร์การขายสินค้าในแอปและการชำระเงินใน Hive SDK ถูกดำเนินการโดยใช้โมดูลการเรียกเก็บเงินของ Hive SDK, Hive IAP v4. Hive IAP v4 มีฟีเจอร์การชำระเงินที่ช่วยลดเวลาในการพัฒนาและตอบสนองต่อการเปลี่ยนแปลงในตลาดได้อย่างรวดเร็ว เช่น การตรวจสอบใบเสร็จการซื้อสินค้า, การตรวจสอบการชำระเงินสินค้าที่ซ้ำกัน, และการส่งบันทึกการชำระเงิน.

Info

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ นี่.


ในการใช้ฟีเจอร์การชำระเงินของ SDK Hive คุณต้องลงทะเบียนข้อมูลผลิตภัณฑ์ที่ขายในคอนโซลแอปมาร์เก็ต (Google Play) และคอนโซล Hive ก่อน

Info

สำหรับข้อมูลที่ละเอียดเพิ่มเติม โปรดดูที่ เอกสารแอปมาร์เก็ต และ คู่มือการเรียกเก็บเงินคอนโซล Hive.

เริ่มต้นการเรียกเก็บเงิน

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

API Reference: hive.IAPV4.marketConnect

using hive;

IAPV4.marketConnect((ResultAPI result, List marketIdList) => {
    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: 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
    } 
}];
Info

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ IAP Initialization.

การนำเสนอรายการผลิตภัณฑ์

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

API Reference: hive.IAPV4.getProductInfo

using hive;

IAPV4.getProductInfo((ResultAPI result, List<IAPV4Product> productInfoList, int balance) => {    
    if (result.isSuccess()) {    
        // Call successful    
    }    
});

API Reference: IAPV4::getProductInfo

#include <HIVE_SDK_Plugin/HIVE_CPP.h> 

using namespace std;    
using namespace hive;

IAPV4::getProductInfo([=](ResultAPI const & result, vector<IAPV4Product> const & productInfoList, unsigned int balance) {    
    if (result.isSuccess()) {    
        // Call successful    
    }    
});

API Reference: IAPV4.getProductInfo

```kotlin import com.hive.IAPV4
import com.hive.ResultAPI

IAPV4.getProductInfo(object : IAPV4.IAPV4ProductInfoListener {
override fun onIAPV4ProductInfo(result: ResultAPI, iapV4ProductList: ArrayList?, balance: Int) {
if (result.isSuccess) {
// เรียกใช้สำเร็จ
}
}
})

API Reference: com.hive.IAPV4.getProductInfo

import com.hive.IAPV4    
import com.hive.ResultAPI

IAPV4.INSTANCE.getProductInfo((result, iapV4ProductList, balance) -> {    
    if (result.isSuccess()) {    
        // Call successful    
    }    
});

API Reference: IAPV4Interface.getProductInfo

import HIVEService

IAPV4Interface.getProductInfo() { result, productInfoList, balance in     
    if result.isSuccess() {    
        // Call successful    
    }    
}

API Reference: HIVEIAPV4::getProductInfo

#import <HIVEService/HIVEService-Swift.h> 

[HIVEIAPV4 getProductInfo: ^(HIVEResultAPI *result, NSArray<HIVEIAPV4Product *> *productInfoList, NSUInteger balance) {    
    if ([result isSuccess]) {    
        // Call successful    
    }    
}];


เมื่อทำการสอบถามรายการผลิตภัณฑ์ ผลลัพธ์จะส่งคืนข้อมูลรายการผลิตภัณฑ์ในคลาส IAPV4Product ข้อมูลผลิตภัณฑ์ประกอบด้วย marketPid ซึ่งใช้สำหรับคำขอซื้อสินค้า และ displayPrice ซึ่งเป็นการรวมกันของสัญลักษณ์สกุลเงินและราคา (เช่น $0.99).

Info

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Get Product List.

การดำเนินการซื้อผลิตภัณฑ์

เมื่อผู้ใช้เข้าสู่ร้านค้าแอปและตรวจสอบรายการสินค้าที่ขายอยู่ พวกเขาสามารถเลือกสินค้าที่เฉพาะเจาะจงเพื่อทำการซื้อได้ เพื่อทำเช่นนี้ คุณต้องเรียกใช้เมธอด purchase ของคลาส IAPV4 โดยใช้ marketPid ที่ตรงกับรหัสผลิตภัณฑ์เป็นพารามิเตอร์ เพื่อขอให้ตลาดแอปทำการซื้อสินค้าสำเร็จ ด้านล่างนี้คือตัวอย่างโค้ดเพื่อขอซื้อผลิตภัณฑ์

API Reference: hive.IAPV4.purchase

using hive;

String marketPid = "{YOUR_PRODUCT_MARKET_PID}";    
String iapPayload = "{YOUR_CUSTOM_PAYLOAD}"    

IAPV4.purchase(marketPid, iapPayload, (ResultAPI result, IAPV4Receipt receipt) => {    
    if (result.isSuccess()) {    
        // TODO: Request receipt verification with the received receipt    
    }    
});

API Reference: IAPV4::purchase

#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;    
using namespace hive;

string marketPid = "{YOUR_PRODUCT_MARKET_PID}";    
string iapPayload = "{YOUR_CUSTOM_PAYLOAD}";

IAPV4::purchase(marketPid, iapPayload, [=](ResultAPI const & result, IAPV4Receipt const & receipt) {    
    if (result.isSuccess()) {    
        // TODO: Request receipt verification with the received receipt    
    }    
});

API Reference: com.hive.IAPV4.purchase

import com.hive.IAPV4    
import com.hive.ResultAPI

val marketPid = "{YOUR_PRODUCT_MARKET_PID}"    
val iapPayload = "{YOUR_CUSTOM_PAYLOAD}"

IAPV4.purchase(marketPid, iapPayload, object : IAPV4.IAPV4PurchaseListener {    
    override fun onIAPV4Purchase(result: ResultAPI, iapV4Receipt: IAPV4.IAPV4Receipt?) {    
        if (result.isSuccess) {    
            // Call successful    
        }    
    }    
})

API Reference: com.hive.IAPV4.purchase

import com.hive.IAPV4;    
import com.hive.ResultAPI;

String marketPid = "{YOUR_PRODUCT_MARKET_PID}";    
String iapPayload = "{YOUR_CUSTOM_PAYLOAD}";

IAPV4.INSTANCE.purchase(marketPid, iapPayload, (result, iapV4Receipt) -> {    
    if (result.isSuccess()) {    
        // Call successful    
    }    
});

API Reference: HIVEIAPV4::purchase:additionalInfo:handler:

import HIVEService

let marketPid = "{YOUR_PRODUCT_MARKET_PID}"    
let iapPayload = "{YOUR_CUSTOM_PAYLOAD}"    

HIVEIAPV4.purchase(marketPid, iapPayload: iapPayload) { result, receipt in    
    if result.isSuccess() {    
        // TODO: Request receipt verification with the received receipt    
    }    
}

API Reference: HIVEIAPV4::purchase:additionalInfo:handler:

#import <HIVEService/HIVEService-Swift.h>

NSString *marketPid = @"{YOUR_PRODUCT_MARKET_PID}";    
NSString *iapPayload = @"{YOUR_CUSTOM_PAYLOAD}";    

[HIVEIAPV4 purchase: marketPid iapPayload: iapPayload handler: ^(HIVEResultAPI *result, HIVEIAPV4Receipt *receipt) {    
    if ([result isSuccess]) {    
        // TODO: Request receipt verification with the received receipt    
    }    
}];


ก่อนที่จะดำเนินการฟีเจอร์การซื้อผลิตภัณฑ์ คุณสามารถกำหนดข้อมูลเมตาของการซื้อล่วงหน้า (iapPayload). iapPayload คือข้อมูลที่กำหนดในรูปแบบที่นักพัฒนาแอปต้องการ. การใช้สิ่งนี้ คุณสามารถวิเคราะห์ข้อมูลผู้ใช้ที่ใช้ระบบการชำระเงินหรือแก้ไขสถานการณ์ที่การชำระเงินเกิดขึ้นแต่สินค้าไม่ได้รับการส่งมอบเนื่องจากข้อผิดพลาดระหว่างการซื้อ.

Info

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการซื้อผลิตภัณฑ์ โปรดตรวจสอบ ที่นี่. สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการซื้อรายการสมาชิก โปรดดู ที่นี่.

ตรวจสอบการดำเนินการใบเสร็จ

หลังจากที่ดำเนินการโค้ดที่ขอซื้อผลิตภัณฑ์ เมื่อผู้ใช้ทำการชำระเงินในตลาดแอปแล้ว SDK ของ Hive จะส่งใบเสร็จการซื้อไปยังไคลเอนต์แอปของคุณ เซิร์ฟเวอร์แอปของคุณควรได้รับใบเสร็จนี้จากไคลเอนต์แอปและตรวจสอบความถูกต้องโดยใช้ Hive server API เพื่อตรวจสอบใบเสร็จ หลังจากตรวจสอบใบเสร็จแล้ว เซิร์ฟเวอร์แอปควรจัดหาสินค้าให้กับผู้ใช้โดยตรง

API การตรวจสอบใบเสร็จ จะตรวจสอบใบเสร็จของผลิตภัณฑ์ที่ซื้อในแอปและส่งคืนผลลัพธ์ของความถูกต้องของใบเสร็จ hiveiap_transaction_id ในการตอบกลับเป็น ID ที่ไม่ซ้ำกันซึ่งออกให้สำหรับแต่ละใบเสร็จ ดังนั้นคุณควรเก็บค่าดังกล่าวในเซิร์ฟเวอร์แอปของคุณและตรวจสอบใบเสร็จที่ซ้ำกันก่อนที่จะจัดหาสินค้า

Info

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Verify Receipt.