
連携サービス
設定ファイル
API一覧
© 2025 KT Partners CO.,LTD.
アプリ内での課金情報を取り扱いたい場合、こちらの機能をご利用ください。
(for applican api ver.2.0)









getProducts(Array productIds, String In-App, Function successCallback, Function errorCallback)
現在の課金アイテムの情報を取得をします。
| productIds : Array | iTuens Connectや、Google Play Developer Consoleで設定したIDを配列形式で指定して、複数のアイテム情報を一括して取得できます。 (1件だけ取得する場合も配列形式で指定してください) |
|---|---|
| In-App : String | Androidの場合に定期購読の場合は"subs"、それ以外の場合は"inapp"を指定してください。 iOSの場合にはこの値は無視します。 |
| successCallback : Function | 成功時のコールバック |
| errorCallback : Function | 失敗時のコールバック |
| void |
|---|
| productId : String | プロダクトID |
|---|---|
| name : String | コンテンツ名 |
| price : String | 価格(ローカライズされた文字列) |
| description : String | コンテンツの説明文 |
| os : String | プラットフォームのOS。"ios"又は"android"。 |
var productIds = ['jp_co_xxx_yyy_coin100', 'jp_co_xxx_yyy_coin200'];
applican.purchase.getProducts(productIds, 'inapp', purchaseGetProductsSuccess, purchaseGetProductsError);
function purchaseGetProductsSuccess(products){
var dump = "purchaseGetProductsSuccess\n";
var cnt = products.length;
if(cnt>0){
for(var i=0; i<cnt; i++){
var product = products[i];
dump += "========================\n";
dump += "productId:"+product.productId+"\n";
dump += "name:"+product.name+"\n";
dump += "price:"+product.price+"\n";
dump += "description:"+product.description+"\n";
}
}
alert(dump);
}
function purchaseGetProductsError(error){
var dump = "purchaseGetProductsError\n";
dump += "code:"+error.code+"\n";
dump += "message:"+error.message+"\n";
alert(dump);
}
makePurchase(String productId, String In-App, Function successCallback, Function errorCallback, PurchaseOptions options)
課金を開始します。ネイティブの課金ダイアログが表示されます。
iOSの場合、プロビジョニングファイルがAppStore以外の場合は自動的にサンドボックスに接続しますが、明示的にサンドボックスに接続したい場合には、optionsで指定することができます。 アプリ申請の際は必ずサンドボックスモードをfalseにしてください。※optionsはランタイム2.3.1以上、applican.js-2.3.1以上で有効です。
iOSの自動更新課金では、共有シークレットをレシート検証に使用します。
共有シークレットは、AppStoreConnectで取得したものを、ビルド設定>追加オプション設定画面>AppStoreConnect共有シークレットで指定してください。
| productId : String | iTuens Connectや、Google Play Developer Consoleで設定したIDを指定してください。 |
|---|---|
| In-App : String | Androidの場合に定期購読の場合は"subs"、それ以外の場合は"inapp"を指定してください。 iOSの場合にはこの値は無視します。 |
| successCallback : Function | 成功時のコールバック |
| errorCallback : Function | 失敗時のコールバック |
| options : <PurchaseOptions> | 課金オプション。サンドボックス環境を指定したい場合に使用します。 |
| void |
|---|
finishPurchase(String In-App, Function successCallback, Function errorCallback)
makePurchaseメソッドの成功時のコールバックを受け取った際に、決済を完了させるために呼び出す必要があります。
| In-App : String | Androidの場合に定期購読の場合は"subs"、それ以外の場合は"inapp"を指定してください。 iOSの場合にはこの値は無視します。 |
|---|---|
| successCallback : Function | 成功時のコールバック |
| errorCallback : Function | 失敗時のコールバック |
| void |
|---|
| productId : String | プロダクトID |
|---|---|
| purchaseId : String | 課金ID |
| receipt : String | 課金認証用のレシート |
| os : String | プラットフォームのOS。"ios"又は"android"。 |
※iOSとAndroidで、決済を完了させる処理の呼び出しに違いがあるため注意してください。
var options = { sandbox: true };
applican.purchase.makePurchase('jp_co_xxx_yyy_coin100', 'inapp', makePurchaseSuccess, makePurchaseError, options);
function makePurchaseSuccess(result){
if(result.productId=='jp_co_xxx_yyy_coin100'){
//※課金アイテムの付与などの処理を実装する
}else if(result.productId=='jp_co_xxx_yyy_coin200'){
//※課金アイテムの付与などの処理を実装する
}
//決済完了にする処理。
//iOSの場合は必ず送信。Androidは消費アイテムの場合のみ送信する。
if(result.os=="ios" ||
(result.os=="android" && (result.productId=="jp_co_xxx_yyy_coin100" || purchase.productId=="jp_co_xxx_yyy_coin200"))){
applican.purchase.finishPurchase(result.purchaseId, finishPurchaseSuccess, finishPurchaseError);
}else{
alert('決済完了しました:'+result.purchaseId);
}
}
function makePurchaseError(error){
var dump = "makePurchaseError\n";
dump += "code:"+error.code+"\n";
dump += "message:"+error.message+"\n";
alert(dump);
}
function finishPurchaseSuccess(purchaseId){
alert('決済完了しました:'+purchaseId);
}
function finishPurchaseError(error){
alert('決済完了できませんでした。'+"code:"+error.code+"\n"+"message:"+error.message);
}
restorePurchase(String In-App, Function successCallback, Function errorCallback, PurchaseOptions options)
課金済み情報を再取得することができます。
Androidの場合は課金種別毎に呼び出す必要があります。
iOSの場合は課金種別のパラメータを使わないため、1回の呼び出しですべての課金情報を取得できます。
iOSの場合、プロビジョニングファイルがAppStore以外の場合は自動的にサンドボックスに接続しますが、明示的にサンドボックスに接続したい場合には、optionsで指定することができます。 アプリ申請の際は必ずサンドボックスモードをfalseにしてください。※optionsはランタイム2.3.1以上、applican.js-2.3.1以上で有効です。
レストア機能は以下の目的で使用します。
| In-App : String | Androidの場合に定期購読の場合は"subs"、それ以外の場合は"inapp"を指定してください。 iOSの場合にはこの値は無視します。 |
|---|---|
| successCallback : Function | 成功時のコールバック |
| errorCallback : Function | 失敗時のコールバック |
| options : <PurchaseOptions> | 課金オプション。サンドボックス環境を指定したい場合に使用します。 |
| void |
|---|
| productId : String | プロダクトID |
|---|---|
| purchaseId : String | 課金ID |
| receipt : String | 課金認証用のレシート |
| os : String | プラットフォームのOS。"ios"又は"android"。 |
| isRestore : Boolean | 購入済みアイテムのレストアかどうか(iOSのみ。Androidはfalse固定) |
※購入が未完了かどうかを判定する方法がiOSとAndroidで異なるので注意してください。
購入未完了の決済についてはアイテム等の付与を行った後、finishPurchaseを実行して決済を完了させるようにしてください。
var _incomplete_purchase; //未完了決済を格納する変数
applican.purchase.restorePurchase('inapp', restorePurchaseSuccess, restorePurchaseError);
function restorePurchaseSuccess(result){
_incomplete_purchase = new Array();
var cnt = result.length;
if(cnt>0){
for(var i=0; i<cnt; i++){
var purchase = result[i];
//購入が未完了のものをストック
if((purchase.os=="ios" && !purchase.isRestore)
|| (purchase.os=="android" &&
(purchase.productId=="jp_co_xxx_yyy_coin100" ||
purchase.productId=="jp_co_xxx_yyy_coin200"))){
_incomplete_purchase.push(purchase);
}else{
//※購入済みアイテムをレストアする処理
}
}
}
if(_incomplete_purchase.length>0){
//購入が未完了のものを完了させる処理を呼ぶ
repairPurchase();
}else{
alert('レストア完了');
}
}
function restorePurchaseError(error){
var dump = "restorePurchaseError\n";
dump += "code:"+error.code+"\n";
dump += "message:"+error.message+"\n";
alert(dump);
}
//購入が未完了のものを完了させる処理
function repairPurchase(){
if(_incomplete_purchase.length<1){
alert('未完了決済の処理完了');
return;
}
var purchase = _incomplete_purchase.shift();
if(purchase.productId=='jp_co_xxx_yyy_coin100'){
//※課金アイテムの付与などの処理を実装する
}else if(purchase.productId=='jp_co_xxx_yyy_coin200'){
//※課金アイテムの付与などの処理を実装する
}
//決済完了にする処理
applican.purchase.finishPurchase(purchase.purchaseId, repairPurchase, repairPurchaseError);
}
function repairPurchaseError(error){
alert('決済完了できませんでした。'+"code:"+error.code+"\n"+"message:"+error.message);
}
上記のサンプルコードではrepairPurchaseを再帰的に呼び出し、未完了決済が全て無くなるまで繰り返し処理をするように実装しています。
PurchaseError.UNKNOWN_ERROR = 0; //不明なエラー PurchaseError.INVALID_ARGUMENT = 1; //パラメータ異常 PurchaseError.BUSY = 2; //処理中 PurchaseError.NOT_SUPPORTED = 3; //課金非対応 PurchaseError.CANCELED = 4; //ユーザキャンセル PurchaseError.ALREADY_OWNED = 5; //既に購入済み PurchaseError.NOT_OWNED = 6; //購入していない