2017-05-21 15 views
9

ठीक है, मैं विंडोज़ सैंडबॉक्स मोड में काम करने के लिए लगभग कॉर्डोवा इन-एप क्रय के साथ किया गया हूं। मैं this थ्रेड से गुजर चुका हूं और इसे बनाने के सभी संभव तरीके से प्रयास किया लेकिन मैं नहीं कर सका। मैंने निर्देश के अनुसार www फ़ोल्डर में in-app-purchase.xml रखा है। कोड निम्नानुसार है। त्रुटि -जे 3 के 0 कॉर्डोवा-प्लगइन-खरीद सैंडबॉक्स मोड काम नहीं कर रहा है?

store.verbosity = store.QUIET; 
store.sandbox=true; 

       store.register({ 
        id: productId, 
        type: store.PAID_SUBSCRIPTION 
       }); 

       // Listen to the 'updated' event for individual product 
       store.when(productId).updated(function (p) { 
        $ionicLoading.hide(); 
       }); 

       // Initiate a purchase 
       store.order(productId); 

       // When the purchase is approved, show an alert 
       store.when(productId).approved(function (order) { 
        Store.subscribeWindows(month, order); 
        order.finish(); 
       }); 

       // When the purchase is approved, show an alert 
       store.when(productId).cancelled(function (order) { 
        $ionicPopup.alert({ 
         title: 'Subscribe was cancelled!', 
         template: 'Try again!' 
        }); 
        order.finish(); 
       }); 

       // When the store is ready all products are loaded and in their "final" state. 
       store.ready(function() { 
        console.log("The store is ready"); 
       }); 

       // Deal with errors: 
       store.error(function (err) { 
        $ionicLoading.hide(); 
        $ionicPopup.alert({ 
         title: 'Something went wrong', 
         template: err.message 
        }); 
       }) 


       // This will contact the server to check all registered products validity and ownership status. 
       // It's mostly fine to do this only at application startup but you can refresh it more often. 
       store.refresh(); 

      } 

एप्लिकेशन के अंतर्गत purchase.xml

<?xml version="1.0" encoding="utf-8" ?> 
<CurrentApp> 
    <ListingInformation> 
    <App> 
     <AppId>CN=CB5BB00C-6A35-44A7-B46E-013721E959BD</AppId> 
     <LinkUri>https://www.microsoft.com/store/apps/9nblggh3tvsk</LinkUri> 
     <CurrentMarket>en-us</CurrentMarket> 
     <AgeRating>12</AgeRating> 
     <MarketData xml:lang="en-us"> 
     <Name>App Name</Name> 
     <Description>App Description</Description> 
     <Price>0</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     </MarketData> 
    </App> 
    <Product ProductId="com.product.premium365" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>com.product.premium365</Name> 
     <Price>59.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     </MarketData> 
    </Product> 
    <Product ProductId="Product03" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>Product03</Name> 
     <Price>14.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     xmlfile.xml 
     </MarketData> 
    </Product> 
    <Product ProductId="com.product.premium6" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>com.product.premium6</Name> 
     <Price>29.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     </MarketData> 
    </Product> 
    <Product ProductId="com.product.premium" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>com.product.premium</Name> 
     <Price>4.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     </MarketData> 
    </Product> 
    </ListingInformation> 
    <LicenseInformation> 
    <App> 
     <IsActive>true</IsActive> 
     <IsTrial>false</IsTrial> 
    </App> 
    <!-- Setting a prepurchased durable --> 
    <Product ProductId="com.product.premium365"> 
     <IsActive>true</IsActive> 
    </Product> 
    </LicenseInformation> 
</CurrentApp> 

और नीचे स्क्रीन शॉट मेरी बुरा सपना है।

enter image description here

मैं store.inappbilling.setTestMode(); की कोशिश की थी, लेकिन यह त्रुटि

Object doesn't support property or method 'setTestMode' 

संसाधन इस्तेमाल किया प्रवेश करने है

मैंने dkarzon कांटे की कोशिश की जो कि मेरे लिए भी काम नहीं करता है।

मैं कार्यों के मृत अंत तक पहुंचने वाला हूं। Pl। कोई मुझे बाहर मदद करता है। यह महत्वपूर्ण है।

अद्यतन -> 1

प्रति dkarzon के अनुदेश के रूप में मैं मुख्य रेपो से पुस्तकालय का इस्तेमाल किया और पंजीकृत कॉलबैक साथ store.inappbilling.setTestMode() और यह विफलता कॉल बैक से चलाता है। यह missing command error त्रुटि दे रहा है जब मैंने तर्क के साथ error call back फ़ंक्शन घोषित किया था। Pl। ध्यान दें कि मैं सीधे स्टोर से नहीं, ऐप का परीक्षण कर रहा हूं। यहां code snippet है जो मैं करता था। अब, यह सैंडबॉक्स मोड को छोड़ देता है और चयनित रूप से चयनित add-ons के साथ विंडोज़ खरीद संवाद दिखाता है।

अपडेट -> 2

मैं डिबग और पता लगा कि folder.getFileAsync("in-app-purchase.xml") कार्यान्वित करने में नाकाम रहने और रिटर्न एक त्रुटि शुरू में Input data not in expected format तो मैं फ़ाइल WindowsStoreProxy.xml की संरचना का पालन करके संपादित किया है, अब यह एक त्रुटि The parameter is incorrect दे रहा है ।

enter image description here

यहाँ मेरी अद्यतन एक्सएमएल है

<?xml version="1.0" encoding="utf-16" ?> 
<CurrentApp> 
    <ListingInformation> 
    <App> 
     <AppId>CN=CB5BB00C-6A35-44A7-B46E-013721E959BD</AppId> 
     <LinkUri>https://www.microsoft.com/store/apps/9nblggh3tvsk</LinkUri> 
     <CurrentMarket>en-us</CurrentMarket> 
     <AgeRating>12</AgeRating> 
     <MarketData xml:lang="en-us"> 
     <Name>App Name</Name> 
     <Description>App Decription</Description> 
     <Price>0.00</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     </MarketData> 
    </App> 
    <Product ProductId="com.product.premium" LicenseDuration="10" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>com.product.premium</Name> 
     <Price>4.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     </MarketData> 
    </Product> 
    <Product ProductId="Product03" LicenseDuration="0" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>Product03</Name> 
     <Price>14.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     </MarketData> 
    </Product> 
    </ListingInformation> 
    <LicenseInformation> 
    <App> 
     <IsActive>true</IsActive> 
     <IsTrial>false</IsTrial> 
    </App> 
    <Product ProductId="com.product.premium"> 
     <IsActive>true</IsActive> 
     <ExpirationDate>2018-01-19T00:00:00.00Z</ExpirationDate> 
    </Product> 
    </LicenseInformation> 
</CurrentApp> 

अद्यतन -> 3

मेरे बुरा, एक गहरी डिबग करने के बाद मैंने पाया कि मैं दे दिया है पैकेज एक्सएमएल में AppId की बजाय पहचान और इस कारण के कारण और this मुझे भी मदद की। Windows.ApplicationModel.Store.CurrentApp.AppId का उपयोग करके जनरेटेड ऐप आईडी और इसलिए मैं खरीदारी को पॉप अप अनुकरण करने में सक्षम हूं। सभी त्रुटि कोड कॉलबैक ट्रिगर कर रहे हैं लेकिन जब मैं S_OK चुनता हूं तो यह कुछ भी नहीं देता है। मैं इस SO post से गुजर चुका हूं लेकिन दुर्भाग्य से यह काम नहीं करता है।

enter image description here

अपडेट किया गया एक्सएमएल

<?xml version="1.0" encoding="utf-16" ?> 
<CurrentApp> 
    <ListingInformation> 
    <App> 
     <AppId>fb9ec87b-54b-46f-b1e6-87d857dfa730</AppId> 
     <LinkUri>http://apps.windows.microsoft.com/app/988b90e4-5d4d-4dea-99d0-e423e414fbc</LinkUri> 
     <CurrentMarket>en-us</CurrentMarket> 
     <AgeRating>12</AgeRating> 
     <MarketData xml:lang="en-us"> 
     <Name>App Name</Name> 
     <Description>App Description</Description> 
     <Price>0.00</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     </MarketData> 
    </App> 
    <Product ProductId="com.product.premium" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>com.product.premium</Name> 
     <Price>4.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     </MarketData> 
    </Product> 
    <Product ProductId="Product03" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>Product03</Name> 
     <Price>14.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     </MarketData> 
    </Product> 
    <Product ProductId="com.product.premium6" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>com.product.premium6</Name> 
     <Price>29.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     </MarketData> 
    </Product> 
    <Product ProductId="com.product.premium365" ProductType="Durable"> 
     <MarketData xml:lang="en-us"> 
     <Name>com.product.premium365</Name> 
     <Price>59.99</Price> 
     <CurrencySymbol>$</CurrencySymbol> 
     <CurrencyCode>USD</CurrencyCode> 
     </MarketData> 
    </Product> 

    </ListingInformation> 
    <LicenseInformation> 
    <App> 
     <IsActive>true</IsActive> 
     <IsTrial>false</IsTrial> 
    </App> 
    </LicenseInformation> 

</CurrentApp> 
+2

आप मुख्य रेपो के बजाय एक कांटा से प्लगइन उपयोग करने की कोशिश की है? आखिरी बार चेक किए गए विंडोज़ फिक्स्ड मास्टर में विलय कर दिया गया है। 'setTestMode' उस शाखा पर मौजूद नहीं है जिसे आप देख रहे हैं। – dkarzon

+0

आपके तरह के विचार ** @ dkarzon ** के लिए धन्यवाद। हां, मैंने 'j3k0' के मुख्य रेपो से नवीनतम [संस्करण (6.1.2)] (https://github.com/j3k0/cordova-plugin-purchase) और' store.inappbilling का उपयोग करके सक्षम सैंडबॉक्स मोड की कोशिश की है। setTestMode() 'कॉलबैक के साथ और यह विफलता कॉल वापस ट्रिगर करता है। pl। ध्यान दें कि मैं सीधे स्टोर से नहीं, ऐप का परीक्षण कर रहा हूं। यहां [कोड स्निपेट] (https://pastebin.com/UuRigSfN) है जो मैं करता था। – Stella

+0

यह सैंडबॉक्स मोड को छोड़ देता है और चयनित रूप से चयनित 'ऐड-ऑन' के साथ विंडोज़ खरीद संवाद दिखाता है। – Stella

उत्तर

1

अंत में, सब कुछ ठीक काम कर रहे हैं अब मैं approved कॉलबैक मिला है। विशेष रूप से @dkarzon के समर्थन के लिए सभी को धन्यवाद, जो बी/डब्ल्यू व्यस्त जीवन में समय पाते हैं।

मैंने LicenseInformation टैग के तहत सक्रिय रूप से सक्रिय उत्पाद में से एक जोड़ा। अपडेट -> 3 में इस तरह के मुद्दे से छुटकारा पाने के लिए दूसरा कदम है, यह देखें कि संदर्भ में अगर किसी को भी विंडोज सैंडबॉक्स मोड को भविष्य में काम करने में कठिनाई होती है।

<LicenseInformation> 
    <App> 
     <IsActive>true</IsActive> 
     <IsTrial>false</IsTrial> 
    </App> 
    <Product ProductId="com.animecrave.premium"> 
     <IsActive>true</IsActive> 
    </Product> 
    </LicenseInformation> 

संदर्भ

संबंधित मुद्दे