Cordova pluginを使ったアプリ内課金の実装方法について
Cordova Pluginを使用したアプリ内課金の実装方法について教えて下さい。
Cordovaを使ったAndroidアプリケーションを作っています。
Cordova Pluginを利用したアプリ内課金実装を実現するにはいくつかのPluginの候補がありましたが、Cordova Purchase Pluginを使用することに決め、実装にとりかかりました。
In-App Purchase for PhoneGap / Cordova iOS and AndroidのREADME.mdに記載のあったSetupなどを済ませた結果、導入したPluginの呼び出し自体は出来ており、
Demo of the Purchase Plugin for Cordovaのjsを一部書き換えたもの(下記、一部抜粋)を
使うことにより、Pluginが呼び出せていないときに出力されてしまう'Store not available'が出力されることなく、
'registerProducts'から最下段の'refresh'までログが出力されていることを確認できています。
(尚、Google Play Developer Console上にてmyProductAという商品の登録も済んでいます)
app.initStore = function() {
if (!window.store) {
log('Store not available');
return;
}
// Enable maximum logging level
store.verbosity = store.DEBUG;
// Enable remote receipt validation
// store.validator = "https://api.fovea.cc:1982/check-purchase";
// Inform the store of your products
log('registerProducts');
store.register({
id: 'myProductA',
alias: 'myProductA',
type: store.CONSUMABLE
});
// When any product gets updated, refresh the HTML.
store.when("product").updated(function (p) {
console.info("app.renderIAP is called");
app.renderIAP(p);
});
// Log all errors
store.error(function(error) {
log('ERROR ' + error.code + ': ' + error.message);
});
// When purchase of an extra life is approved,
// deliver it... by displaying logs in the console.
store.when("myProductA").approved(function (order) {
log("You got a ProductA");
order.finish();
});
// When the store is ready (i.e. all products are loaded and in their "final"
// state), we hide the "loading" indicator.
//
// Note that the "ready" function will be called immediately if the store
// is already ready.
store.ready(function() {
var el = document.getElementById("loading-indicator");
console.info(el + "ready is called")
if (el)
el.style.display = 'none';
});
// When store is ready, activate the "refresh" button;
store.ready(function() {
var el = document.getElementById('refresh-button');
console.info(el + "ready is called and refresh-button show?");
if (el) {
el.style.display = 'block';
el.onclick = function(ev) {
store.refresh();
};
}
});
// Refresh the store.
//
// This will contact the server to check all registered products
// validity and ownership status.
//
// It's fine to do this only at application startup, as it could be
// pretty expensive.
log('refresh');
store.refresh();
};
しかしながら、
store.when("product").updated(function (p)
が呼ばれず、当該関数の呼び出しを前提としている後続のコードに到達できない状態にあります。
何に現状、躓いているのかわからないため、質問が曖昧になってしまっていますが、
解決の糸口などいただけると非常に助かります。
(或いは諦めてネイティブコードを書いた方が良いというアドバイスでも構いません)
尚、
store.validator = "https://api.fovea.cc:1982/check-purchase";
に入れるべき値もわかっておらず、現在コメントアウトしておりますが、
もしかするとこのコメントアウトしている箇所を適切な値にすることで
動くようになるのでは、とも思っています。
(コメントアウトを外しただけでは状況は変わりませんでした。)