![見出し画像](https://assets.st-note.com/production/uploads/images/71583825/rectangle_large_type_2_414c443ade50a6c4be60bcdedbcf9799.png?width=800)
MMORTBS開発記-033 課金アイテム管理その4
いつもありがとうございます。
スキマ時間開発のお時間です。よろしくお願いします。
前回までのあらすじ
課金アイテム実装中。UnityIAPの設定まで作成しました。
まずは、Unityで画面を作成します。
![](https://assets.st-note.com/img/1643702358337-lOeQpdNyeq.png)
![](https://assets.st-note.com/img/1643784932913-QnOzhkKYQY.png)
次は、ボタン押下時の処理を作成します。
とりあえず100円のボタンを作成してみましょう。
// 画面をロックする
Lov_Seal.SetActive(true);
// 購入個数を確認する(金額はそのままで、個数増量はするかもしれない)
int p_buy_val = 0;
SqliteDatabase sqlDB = new SqliteDatabase("接続文字列");
String p_sql = "SELECT * FROM テーブル名";
DataTable dataTable;
Dictionary<string, string> p_placedtl_list = new Dictionary<string, string>();
dataTable = sqlDB.ExecuteQuery(p_sql);
foreach (DataRow dr in dataTable.Rows)
{
p_buy_val = Subgv_DRtoInt(dr, "項目名", 0);
}
// 購入処理を作成する
MyInAppPurchase p_MyInAppPurchase = new MyInAppPurchase();
p_MyInAppPurchase.Initialize();
// サーバー登録成功時処理
Action action2 = () =>
{
// 処理完了
p_MyInAppPurchase.ConfirmPendingPurchase();
// 画面ロックを解除する
Lov_Seal.SetActive(false);
};
// 購入成功時処理
Action<string> action1 = s =>
{
// サーバーに登録する
StartCoroutine(CommunicationManager.ConnectServer("サーバー登録処理"
, action2));
};
// 購入処理
p_MyInAppPurchase.InitiatePurchase("プロダクトID", action1);
![](https://assets.st-note.com/production/uploads/images/71646173/picture_pc_46b1d21a15a141ac69b62dfb091b2e61.gif)
ちゃんとGooglePlayからダミーのレシートIDも発行されている
![](https://assets.st-note.com/img/1644160440041-Wh1sWCbW67.png)
じゃあ改めて、引数に商品マスタのコードを設定するよう、C#を変更して、Unity側もボタンに引数固定値で設定。
キャンペーン期間で増量とかをする場合は、マスタの値を変更すればOK。
といいつつ、ボタンのテキストは固定で埋めちゃってるので結局バージョンアップは必要な感じ。うむむ。
で、全ボタンに処理を設定したらこんな感じ。
![](https://assets.st-note.com/production/uploads/images/71646776/picture_pc_38e4aa3e26da79cf3b47469b9976f7b0.gif)
データはサーバーに登録されているので、ローカルを改ざんしても無意味。
![](https://assets.st-note.com/img/1644161027384-Z5YPl7WPHG.png?width=800)
あと、サーバー側でレシートの検証が必要なはず。
ベータテストまでは性善説でよいはずなので、とりあえず後回しでいいかな。
次はリワードガチャの実装いってみましょうか。
ここも大変そうなイメージ。。。
最後まで読んでいただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?