Flow subscription IAP sử dụng SDK box IAP trên cocos 2dx

Bài viết này mình sẽ giới thiệu với các bạn luồng chạy và các khái niệm cơ bản của việc xây dựng tính năng mua sản phẩm trên google play cụ thể là subscription ( mua sử dụng sản phẩm theo thời gian tháng, năm) sử dụng thư viện SDK box cho Cocos2d-x (C++).

Trước tiên các bạn tìm hiểu subscription là việc bỏ tiền đăng kí một gói nào đó như đăng kí mạng hàng tháng trên một app nào đó.

Các bạn đọc qua docs của thư viện SDK box

Để có tính năng đăng kí hàng tháng thì phải có sản phẩm để bán đã, vậy việc có sản phẩm để bán mình sẽ tạo item trên google play, phần này trong dự án đã có người làm trước, mình chỉ thực hiện phía client nhưng mình cũng tìm hiểu qua, các bạn có thể đọc tài liệu này để tạo item trên google console https://help.gamesalad.com/gamesalad-cookbook/7-using-pro-features/7-03-adding-in-app-purchases-iap/7-03-2-setting-up-iap-for-google-play/

Khi đã setup xong các item trên google console mình sẽ đến setup phía client

Việc install cocos2d-x và việc cài thư viện sdkbox mình sẽ để link hướng dẫn chứ không viết chi tiết vì sẽ rất dài.

Sau khi install xong các bạn setup file sdkbox_config.json bao gồm key đã tạo trên google console.

Item được tạo sẽ có id là id mà các bạn tạo trên google console, type cũng là type các bạn đăng kí item trên google console ( non-consumable or subscription...).


"android":
{
    "iap":{
        "key":"",
        "items":{
            "coins":{ //this is consumable item
                "id":""
            },
            "remove_ads":{
                "id":"",
                "type":"non_consumable" //this is non-consumable item
            },
            "subscription":{
                "id":"",
                "type":"subs" //this is subscription item
            }
        }
    }
}

Sau khi setup xong thì hãy bắt đầu sử dụng nào, SDK box cung cấp hàm để call purchase:

Make purchase: To make a purchase call sdkbox::IAP::purchase(name)

với name là id item đã được setup trên file config và đăng kí trên google store

Sau khi thực hiện call mua hàng thì tùy vào kết quả purchase sẽ trả về những event sau:

onSuccess will be triggered if purchase is successful.

onFailure will be triggered if purchase fails.

onCanceled will be triggered if purchase is canceled by user.


Khi người dùng thực hiện purchase khi thành công sẽ trả về và nhảy vào onSuccess với params là product đã mua trong products mình có thể có những thông tin:


Product() : name(""), id(""), title(""), description(""),
        priceValue(0), price(""), currencyCode(""), receiptCipheredPayload(""),
        receipt(""), transactionID("") {}

Dựa vào thông tin của products trả về mình có thể thực hiện logic khi mua hàng thành công. Tương tự với onFailure và onCanceled cũng vậy khi thất bại hoặc cancel thì các bạn cũng xử lý logic trong 2 hàm trên.

Cụ thể producst.receipt sẽ cung cấp ngày đăng kí, orderId..., có ngày đăng kí, thời gian subscription của gói đã mua thì các bạn có thể thực hiện được logic subs.

Như vậy đó là các bước thực hiện một subscription cơ bản, còn việc test sẽ như sau, google play sẽ cung cấp cho bạn thời gian test nhanh hơn thời gian thực

Dựa vào thời gian sanbox test các bạn hãy thay đổi logic sao cho khớp nhé