即使购买有效,应用购买中的Chrome扩展程序也会返回PURCHASE_CANCELED

cod*_*key 5 javascript google-chrome google-chrome-extension chrome-web-store google-chrome-app

此问题与Chrome Webstore Extension In App Purchase INTERNAL_SERVER_ERROR中的问题有关.我首先以评论的形式在那里发布我的问题,但收到的反馈是,这更适合作为一个单独的问题.

与OP一样,我使用buy.js并遵循推荐的Chrome扩展程序中的应用内购买工作流程.但是我的结果有些不同:当我完成IAP购买对话框时,即使我买了IAP,我还是回到了PURCHASE_CANCELED.如果我然后通过api列出购买的SKU,则显示已购买并激活.我还从Chrome商店收到了收据.

有谁知道如何进行IAP购买并获得准确的状态消息?

我整理了一个测试扩展,并通过应用内购买"sku1"将其标记为免费.这是相关的代码.整个扩展程序位于https://github.com/so-codemonkey/testIAP/tree/master.

var testiap = (function() {
  return {
    onload: function () {

        var logResults = function( results ) {
                var str = 'Result: ' + JSON.stringify(results);
                console.log(str);
                $('<p>' + str + '</p>').appendTo('#log');
        };

        $(document).on("click","#getskus", function() {
                var str = "getting skus";
                console.log(str);
                $('<p>' + str + '</p>').appendTo('#log');
                google.payments.inapp.getSkuDetails({
                                'parameters': {'env': 'prod'},
                                'success': logResults,
                                'failure': logResults
                                });
        });

        $(document).on("click","#buysku1", function() {
                var str = "buying sku1";
                console.log(str);
                $('<p>' + str + '</p>').appendTo('#log');
                google.payments.inapp.buy({
                                'parameters': {'env': 'prod'},
                                'sku': 'sku1',
                                'success': logResults,
                                'failure': logResults
                                });
        });             

        $(document).on("click","#getpurchases", function() {
                var str = "getting purchased skus";
                console.log(str);
                $('<p>' + str + '</p>').appendTo('#log');
                google.payments.inapp.getPurchases({
                                'parameters': {'env': 'prod'},
                                'success': logResults,
                                'failure': logResults
                                });
        });

        $(document).on("click","#consumesku1", function() {
                var str = "consuming sku1";
                console.log(str);
                $('<p>' + str + '</p>').appendTo('#log');
                google.payments.inapp.consumePurchase({
                                'parameters': {'env': 'prod'},
                                'sku': 'sku1',
                                'success': logResults,
                                'failure': logResults
                                });
        });             

   }
  }
})();
window.onload = testiap.onload;
Run Code Online (Sandbox Code Playgroud)

TIA!