2014-09-17 7 views
1

Titanium Appcelerator를 사용하여 Android 애플리케이션을 개발했습니다. 개발자 콘솔에 비 관리 제품 (비 소모품)의 제품이 있습니다. 액세스 및 구매하려고 할 때 ...티타늄 Android : 인앱 결제 제품을 찾을 수 없음

"구입하려는 항목을 찾을 수 없습니다."

MYCODE

InAppBilling.queryInventory();

var InAppBilling = require('ti.inappbilling'); 
    var PUBLIC_KEY = 'xxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxx'; 
    var DEVELOPER_PAYLOAD = '[email protected]'; 
    var toConsume = null; 

    //////////////////////////////////////////////////////// 
    // Utils 
    //////////////////////////////////////////////////////// 

    try 
    { 
     function runSetup() { 
      log('Running startSetup...'); 
      InAppBilling.startSetup({ 
       publicKey : PUBLIC_KEY 
      }); 
      log('Wait for setup to complete successfully'); 
     } 

     function responseString(responseCode) { 
      switch (responseCode) { 
      case InAppBilling.RESULT_OK: 
       return 'OK'; 
      case InAppBilling.RESULT_USER_CANCELED: 
       return 'USER CANCELED'; 
      case InAppBilling.RESULT_BILLING_UNAVAILABLE: 
       return 'BILLING UNAVAILABLE'; 
      case InAppBilling.RESULT_ITEM_UNAVAILABLE: 
       return 'ITEM UNAVAILABLE'; 
      case InAppBilling.RESULT_DEVELOPER_ERROR: 
       return 'DEVELOPER ERROR'; 
      case InAppBilling.RESULT_ERROR: 
       return 'RESULT ERROR'; 
      case InAppBilling.RESULT_ITEM_ALREADY_OWNED: 
       return 'RESULT ITEM ALREADY OWNED'; 
      case InAppBilling.RESULT_ITEM_NOT_OWNED: 
       return 'RESULT ITEM NOT OWNED'; 

      case InAppBilling.IAB_RESULT_REMOTE_EXCEPTION: 
       return 'IAB RESULT REMOTE EXCEPTION'; 
      case InAppBilling.IAB_RESULT_BAD_RESPONSE: 
       return 'IAB RESULT BAD RESPONSE'; 
      case InAppBilling.IAB_RESULT_VERIFICATION_FAILED: 
       return 'IAB RESULT VERIFICATION FAILED'; 
      case InAppBilling.IAB_RESULT_SEND_INTENT_FAILED: 
       return 'IAB RESULT SEND INTENT FAILED'; 
      case InAppBilling.IAB_RESULT_UNKNOWN_PURCHASE_RESPONSE: 
       return 'IAB RESULT UNKNOWN PURCHASE RESPONSE'; 
      case InAppBilling.IAB_RESULT_MISSING_TOKEN: 
       return 'IAB RESULT MISSING TOKEN'; 
      case InAppBilling.IAB_RESULT_UNKNOWN_ERROR: 
       return 'IAB RESULT UNKNOWN ERROR'; 
      case InAppBilling.IAB_RESULT_SUBSCRIPTIONS_NOT_AVAILABLE: 
       return 'IAB RESULT SUBSCRIPTIONS NOT AVAILABLE'; 
      case InAppBilling.IAB_RESULT_INVALID_CONSUMPTION: 
       return 'IAB RESULT INVALID CONSUMPTION'; 
      } 
      return ''; 
     } 

     function purchaseStateString(state) { 
      switch (state) { 
      case InAppBilling.PURCHASE_STATE_PURCHASED: 
       return 'PURCHASE STATE PURCHASED'; 
      case InAppBilling.PURCHASE_STATE_CANCELED: 
       return 'PURCHASE STATE CANCELED'; 
      case InAppBilling.PURCHASE_STATE_REFUNDED: 
       return 'PURCHASE STATE REFUNDED'; 
      } 
      return ''; 
     } 

     function purchaseTypeString(state) { 
      switch (state) { 
      case InAppBilling.ITEM_TYPE_INAPP: 
       return 'ITEM TYPE INAPP'; 
      case InAppBilling.ITEM_TYPE_SUBSCRIPTION: 
       return 'ITEM TYPE SUBSCRIPTION'; 
      } 
      return ''; 
     } 

     function purchaseProperties(p) { 
      var str = 'type: ' + purchaseTypeString(p.type) + '\norderId: ' + p.orderId + '\npackageName: ' + p.packageName + '\nproductId: ' + p.productId + '\npurchaseTime: ' + new Date(p.purchaseTime) + '\npurchaseState: ' + purchaseStateString(p.purchaseState) + '\ndeveloperPayload: ' + p.developerPayload + '\ntoken: ' + p.token; 
      p_txid = p.token; 
      return str; 
     } 

     //////////////////////////////////////////////////////// 
     // setup            // 
     //////////////////////////////////////////////////////// 

     InAppBilling.addEventListener('setupcomplete', function(e) { 
      log('Setup response: ' + responseString(e.responseCode)); 
      if (e.success) { 
       log('Setup completed successfully!'); 
      } else { 
       alert('InAppBilling Setup FAILED.'); 
      } 
     }); 

     InAppBilling.addEventListener('queryinventorycomplete', function(e) { 
      alert('Query Inventory response: ' + responseString(e.responseCode) + '\n -- ' + 'queryinventorycomplete-- ' + e.success); 

      var inventory = e.inventory; 
      var purchaseIds = ['com.app.et']; 
      var purchase, details; 
      if (e.success) { 
       for (var i = 0, j = purchaseIds.length; i < j; i++) { 
        // Check for details 
        if (inventory.hasDetails(purchaseIds[i])) { 
         log('Check log for Purchase ' + i + ' details'); 
         Ti.API.info('Details: ' + JSON.stringify(inventory.getDetails(purchaseIds[i]))); 
        } 
        // Check for purchase 
        alert(purchaseIds[i] + '--hasPurchase--' + inventory.hasPurchase(purchaseIds[i])); 
        if (inventory.hasPurchase(purchaseIds[i])) { 
         purchase = inventory.getPurchase(purchaseIds[i]); 
         // Print details for each purchase 
         log('Check log for Purchase ' + i + ' properties'); 
         Ti.API.info(purchaseProperties(purchase)); 

        } 
       } 
      } 

     }); 

     InAppBilling.addEventListener('purchasecomplete', function(e) { 
      alert('Purchase response: ' + responseString(e.responseCode)); 
      if (e.success && e.purchase) { 
       log(purchaseProperties(e.purchase)); 
       // Prepare the purchase to be consumed 
       if (e.purchase.productId === 'gas') { 
        toConsume = e.purchase; 
        log('gas is queued to be consumed'); 
       } 
       alert('Purchase completed successfully'); 

      } 
     }); 

     InAppBilling.addEventListener('consumecomplete', function(e) { 
      log('Consume response: ' + responseString(e.responseCode)); 
      if (e.success) { 
       alert('Consume completed successfully'); 
      } 
     }); 

     function make_purchase() { 
      InAppBilling.queryInventory(); 
      // alert('purchase android com.app.et '); 
      InAppBilling.purchase({ 
       productId : 'com.app.et', 
       type : InAppBilling.ITEM_TYPE_INAPP, 
       developerPayload : DEVELOPER_PAYLOAD 
      }); 

     } 

오류 :

ERROR :

+0

앱을 게시 했습니까? (알파 또는 베타). – mbmc

+0

@ user2713030 : 베타 버전으로 apk를 업로드했지만 아직 게시되지 않았습니다 – GaneshKumar

+0

apk를 베타 버전으로 업로드하거나 게시해야합니다. ?? – GaneshKumar

답변

0

앱을 게시해야합니다 (알파 또는 베타) 구입에 사용할 수있는 항목이하기 위하여한다.