locked
Continued difficulty with in-app purchases RRS feed

  • Question

  • Everything I can find seems to suggest that if an in-app purchase works in CurrentAppSimulator, if the application is published, and if the published release contains the advanced features, then the in-app purchase should work in store after CurrentAppSimulator is changed to CurrentApp.

    Unfortunately, Microsoft has only produced one example for this central core feature of the platform; the example is festooned with unnecessary complexity, making it difficult to tell what's actually required; the documentation for this feature has been pulled offline less than two weeks before launch, and there appears to be no way to debug this whatsoever; and nobody has made any effort to just write out a simple English list of the steps, to let you check your work, instead sending you to dig through literally 15 source files and wait until you notice whatever's wrong.

    Under what circumstances will a CurrentAppSimulator purchase succeed, but a CurrentApp purchase fail, given that the features do exist in the current published to store release, and are spelled correctly?

    Monday, October 8, 2012 3:14 AM

Answers

  • John,

    I apologize for the time it has taken to track down this problem -- but we have identified an issue with the ProductID's being used.  Unfortunately, the live system doesn't support the ":" in the FeatureID and we've discovered that we are not appropriately trapping for that in the CurrentAppSimulator or the Advanced Featured page while uploading your app.  We are looking at rolling out a fix shortly -- but in the meantime, if you provide an update where the ProductID is made solely of alphanumeric characters and spaces, it should work.

    Again, I apologize for the amount of time it has taken us to track down the issue.

    Arik Cohen

    Principal Program Manager

    Windows Store

    Tuesday, October 9, 2012 3:20 AM

All replies

  • Removed documentation: http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.store.currentapp.requestproductpurchaseasync.aspx

    Tried a million variations on the code; they all fail the same bizarre way, which suggests to me that the problem isn't the code.

    1) Code loads data from store over the network correctly (label, price, etc.)

    2) Attempt purchase.  Rejects bad passwords, so it's got my real account.

    3) Password good?  Store says "Your purchase could not be completed.  Try again later."

    4) After failing, the success handler for RequestProductPurchaseAsync gets called

    I'm not alone in this.

    http://answers.microsoft.com/en-us/windows/forum/windows_8-windows_store/on-windows-8-get-error-when-trying-to-buy-an-app/d69b531f-61a3-456e-8033-cc81cfb045e8

    Monday, October 8, 2012 3:20 AM
  • If your code worked with CurrentAppSimulator and you set up the in-app purchase correctly when submitting to the store then it should work; however, there are some known server side issues which are being investigated. It is likely you are running into this. If you can provide a more detailed description of your code and repro steps we may be able to confirm it. Also, how long has your app been available in the store? Have there been any updates? Has this always been a problem for your app or has it ever worked? Does it fail for all features or just some? Etc.

    The documentation hasn't been removed. See http://msdn.microsoft.com/en-us/library/windows/apps/Hh967814.aspx (You may have the URL from the Release Preview rather than RTM). There is a short and sweet overview of how to use it at How to support in-app purchases .

    --Rob

    Monday, October 8, 2012 4:38 AM
    Moderator
  • If your code worked with CurrentAppSimulator and you set up the in-app purchase correctly when submitting to the store then it should work; however, there are some known server side issues which are being investigated. It is likely you are running into this. If you can provide a more detailed description of your code and repro steps we may be able to confirm it. Also, how long has your app been available in the store? Have there been any updates? Has this always been a problem for your app or has it ever worked? Does it fail for all features or just some? Etc.

    The documentation hasn't been removed. See http://msdn.microsoft.com/en-us/library/windows/apps/Hh967814.aspx (You may have the URL from the Release Preview rather than RTM). There is a short and sweet overview of how to use it at How to support in-app purchases .

    --Rob

    Sigh.

    .

    1) "If your code worked with CurrentAppSimulator and you set up the in-app purchase correctly"

    We have no way to tell if our code is set up correctly, sir.  We have exactly one example, and the part that's broken cannot be tested by the example.  So, we use your code verbatim, because there is no attempt to write documentation about these, the most critical APIs in the entire platform.

    And it doesn't work.  And we have no idea whether the problem is our code or yours, because there's also literally no way to debug it.  At all.

    .

    "however, there are some known server side issues which are being investigated."

    Note that the link I posted of the last guy who asked for help with this is almost a month ago, as are the various people hitting the "me too!" button.

    .

    "It is likely you are running into this."

    I really very much doubt it; I've been having the same problem for a month now.

    .

    "If you can provide a more detailed description of your code and repro steps"

    Kay, adding code below.  Repro steps are simple: try to purchase.

    Thankfully, it takes Microsoft a week to validate a binary change, so I get no more than two more attempts before I miss launch.

    .

    "Also, how long has your app been available in the store?"

    Five weeks.  I've been asking for help the entire time.  I've submitted my code to Microsoft staff for review and sat here for five weeks waiting for help, because you guys won't document the most critical APIs in your entire system.

    .

    "Have there been any updates?"

    Yes.  I had the same problem both before and after my first update.  The items are in both in-store revisions.

    .

    "Has this always been a problem for your app or has it ever worked?"

    It has never worked. 

    .

    "Does it fail for all features or just some?"

    All, identically.

    .

    (You may have the URL from the Release Preview rather than RTM)

    Oh, well good thing you guys just erased that and didn't, you know, tell anyone there was other content available. 

    It's not like your developers rely on you to provide high quality documentation, or anything.

    Of course, the page you provided doesn't actually give any answers, making me wonder if you just googled something up and pasted it at me.

    .

    "There is a short and sweet overview of how to use it at How to support in-app purchases ."

    Yes, I've actually been telling you this entire time what happened when I used that code, how that code does not actually address this problem, and how there is no way to distinguish, from that code, whether the correct thing is happening.

    Of course, one of the links I gave you is a criticism of that sample code.

    So.

    At the end of this, I still don't actually have any answers.  So I'll ask the same question again, because you seem to think I just didn't bother to do any reading in the documentation.

    .

    Under what circumstances will a CurrentAppSimulator purchase succeed, but a CurrentApp purchase fail, given that the features do exist in the current published to store release, and are spelled correctly?

    Please don't tell me "if you got it right, it won't."  Because it is failing, so obviously I didn't get it right.

    It is not helpful for you to tell me when I won't have the problem I'm asking for help with.  >:(

    Monday, October 8, 2012 7:01 AM
  • Maybe next time, when someone tells you "I got the example from the docs, it works in the simulator, it doesn't work in the store, please help," you'll have a more helpful response than "if you get it right it'll work, here's the code you already have."

    Monday, October 8, 2012 7:02 AM
  • It's really very difficult for me to explain how angry it makes me when I get an answer that goes so far out of its way to not actually be an answer.

    I asked you under what circumstances X will happen, because the example code doesn't work and there's only one batch.  You told me "get it right and X won't happen, here's the example code."

    We need better help than this.  We need better documentation than this.  We need actual debugging tools.

    Monday, October 8, 2012 7:04 AM
  • Germane code:

        function UpdateLicenseView() {
     
            byId('donationtoggle').className                 = hasGiven ? 'donated' : 'freever';
            document.getElementById('donationbox').className = '';
     
        }
     
     
     
     
     
    //    var licensor = Windows.ApplicationModel.Store.CurrentAppSimulator;
        var licensor = Windows.ApplicationModel.Store.CurrentApp;
     
        function UpdateLicense() {
     
            gave149  = (licensor.licenseInformation.productLicenses.lookup('In-App Tip Jar: 1.49'));
            gave299  = (licensor.licenseInformation.productLicenses.lookup('In-App Tip Jar: 2.99'));
            gave499  = (licensor.licenseInformation.productLicenses.lookup('In-App Tip Jar: 4.99'));
     
            hasGiven = (gave149.isActive || gave299.isActive || gave499.isActive);
     
            UpdateLicenseView();
     
        }
     
     
     
     
     
        function donateAt(Value) {
     
            var Label = 'In-App Tip Jar: ' + Value;
     
            if (!( licensor.licenseInformation.productLicenses.lookup(Label).isActive )) {
     
                var result = licensor.requestProductPurchaseAsync(Label, true).done(
     
                    function(Success) { 
                      UpdateLicense(); 
                    },
                    function(Error) { 
                      byId('PurchaseErrorBox').innerText = Error;
                      UpdateLicense(); 
                    }
     
                );
     
            } else {
     
                UpdateLicense();
     
            }
     
        }
     
     
     
     
     
        function donate149() {
            donateAt('1.49');
        }
     
     
     
     
     
        function donate299() {
            donateAt('2.99');
        }
     
     
     
     
     
        function donate499() {
            donateAt('4.99');
        }

    Works fine in the simulator with this in appData:

    <?xml version="1.0" encoding="utf-16" ?>
    <CurrentApp>
      <ListingInformation>
        <App>
          <AppId>f3dd4392-3463-4816-b406-1750cd2aa806</AppId>
          <LinkUri>http://apps.microsoft.com/webpdp/app/f3dd4392-3463-4816-b406-1750cd2aa806</LinkUri>
          <CurrentMarket>en-us</CurrentMarket>
          <AgeRating>3</AgeRating>
          <MarketData xml:lang="en-us">
            <Name>AppName</Name>
            <Description>AppDescription</Description>
            <Price>0.00</Price>
            <CurrencySymbol>$</CurrencySymbol>
            <CurrencyCode>USD</CurrencyCode>
          </MarketData>
        </App>
        <Product ProductId="In-App Tip Jar: 1.49">
          <MarketData xml:lang="en-us">
            <Name>Donate 1.49</Name>
            <Price>1.49</Price>
            <CurrencySymbol>$</CurrencySymbol>
            <CurrencyCode>USD</CurrencyCode>
          </MarketData>
        </Product>
        <Product ProductId="In-App Tip Jar: 2.99">
          <MarketData xml:lang="en-us">
            <Name>Donate 2.99</Name>
            <Price>2.99</Price>
            <CurrencySymbol>$</CurrencySymbol>
            <CurrencyCode>USD</CurrencyCode>
          </MarketData>
        </Product>
        <Product ProductId="In-App Tip Jar: 4.99">
          <MarketData xml:lang="en-us">
            <Name>Donate 4.99</Name>
            <Price>4.99</Price>
            <CurrencySymbol>$</CurrencySymbol>
            <CurrencyCode>USD</CurrencyCode>
          </MarketData>
        </Product>
      </ListingInformation>
      <LicenseInformation>
        <App>
          <IsActive>true</IsActive>
          <IsTrial>false</IsTrial>
        </App>
        <Product ProductId="In-App Tip Jar: 1.49">
          <IsActive>false</IsActive>
        </Product>
        <Product ProductId="In-App Tip Jar: 2.99">
          <IsActive>false</IsActive>
        </Product>
        <Product ProductId="In-App Tip Jar: 4.99">
          <IsActive>false</IsActive>
        </Product>
      </LicenseInformation>
    <!--
      <Simulation>
        <DefaultResponse MethodName="LoadListingInformationAsync_GetResult" HResult="S_OK" />
      </Simulation>
    -->
    </CurrentApp>

    Try it in Store, though, even though those items have been ready to go for more than a month?

    First it fails, with an error that says "undefined error" in its description (I mean, come on, guys, how do you expect us to work with that), then it calls the requestAsync success handler (I can't tell from the docs if that success just means "I made the request," or if it's actually telling me it failed the purchase then telling the app it succeeded the purchase.)

    Been asking for support for five weeks.  Ten days to go, and I'm still getting "if you do it right, it won't fail" when I ask what causes failures.

    Please just tell me what causes failures now.

    Monday, October 8, 2012 7:23 AM
  • And, for the record:

    "If you can provide a more detailed description of your code and repro steps we may be able to confirm it."

    I sent the entire codebase in August 10.  I had to send it in again on September 19, because the first person just never responded.  The problem was confirmed September 20.  Microsoft fixed the first half four days ago.

    At this time, I am escalating this in public because I have waited two months on the private paths, and with 11 days to go until the verification window cuts launch day, I don't have answers.

    Monday, October 8, 2012 9:02 AM
  • Hi John,

    Thank you for the further details, and it was good to talk to you offline earlier today.

    As we discussed, the major difference between the CurrentAppSimulator is the source of the data: CurrentAppSimulator gets the data locally from the proxy, while CurrentApp has to be able to connect over the network to get the data from the store.

    If code works under CurrentAppSimulator but not in the actual store then the problem is likely one of the following:

      • The store account wasn't set up identically to the CurrentAppSimulator proxy: the product ID is different, etc.
      • There is a network issue between the app and the store: this could be transient, but make sure app has appropriate networking capabilities and that the app has appropriate exception handling.
      • There is a problem on the store server

    From the symptoms you describe the third seems likely. I am looking into this to confirm.

    I can't tell from the docs if that success just means "I made the request," or if it's actually telling me it failed the purchase then telling the app it succeeded the purchase

    Success means the request was made. You need to check the LicenseInformation afterwards to see if the purchase succeeded. The documentation on this will be updated to be more clear.

    --Rob

    Tuesday, October 9, 2012 2:58 AM
    Moderator
  • John,

    I apologize for the time it has taken to track down this problem -- but we have identified an issue with the ProductID's being used.  Unfortunately, the live system doesn't support the ":" in the FeatureID and we've discovered that we are not appropriately trapping for that in the CurrentAppSimulator or the Advanced Featured page while uploading your app.  We are looking at rolling out a fix shortly -- but in the meantime, if you provide an update where the ProductID is made solely of alphanumeric characters and spaces, it should work.

    Again, I apologize for the amount of time it has taken us to track down the issue.

    Arik Cohen

    Principal Program Manager

    Windows Store

    Tuesday, October 9, 2012 3:20 AM
  • Seriously?

    I asked about this more than a month ago and was told resolutely it was fine >:|

    Tuesday, October 9, 2012 3:14 PM
  • I apologize for the time it has taken to track down this problem

    I told your supervisors on Store team about this more than a month ago.

    I even told them how to test it.  They refused, because they thought I was wrong.

    Yesterday, an escalation manager was brought in, because two months after one of your developers started reporting bugs in store, nobody had actually looked into it.  Now you've looked into it, and they're real.

    Unfortunately, the person who was brought in to handle it is making literally the exact same error that caused the prior staff to refuse to test this for five weeks: she thinks I'm wrong, so she won't even test.

    All that needs to be done is to submit two blank projects to store, each with a button that makes an in-app purchase, one with a colon, the other not.

    Staff have been refusing to do this for six weeks.  As a result, a serious defect was discovered two weeks until launch, because Microsoft staff refuse to perform tests that they don't understand the value of.

    This test was recommended to you quite some time ago.  Your staff are still refusing.

    Please correct Dawn's error, and perform the test from the outside.  Even if you're really certain, from the inside.  You were certain this wasn't a problem two days ago, and you were wrong.

    Certainty is not a substitute for validation.

    Getting the store working before launch is critically important.  Do not engage in the level of hubris that has left Microsoft refusing to perform the simple tests that would have exposed this six weeks ago.

    Go sign up for a personal developer account.  It takes ten minutes.  Make the actual two projects.  Put in the reviewer's notes "Hi, I'm Arik Cohen, this is an external test of the internal purchase mechanisms, I know this doesn't pass the significance criterion, pass it anyway.  This is my company email address, contact me if there are problems."

    You could get it done before your coffee got cold, but because everyone's so certain I'm wrong, they won't even check.

    And look how late you found out, as a result.

    Humble men are good men.  Be a humble man, and TRY IT TO BE SURE, because the staff you've hired to find out about these things refuse to even document that your developers are requesting tests, if they disagree with them.

    Thank you for your time.



    Tuesday, October 9, 2012 4:03 PM
  • John,

    I apologize for the time it has taken to track down this problem -- but we have identified an issue with the ProductID's being used.  Unfortunately, the live system doesn't support the ":" in the FeatureID and we've discovered that we are not appropriately trapping for that in the CurrentAppSimulator or the Advanced Featured page while uploading your app.  We are looking at rolling out a fix shortly -- but in the meantime, if you provide an update where the ProductID is made solely of alphanumeric characters and spaces, it should work.

    Again, I apologize for the amount of time it has taken us to track down the issue.

    Arik Cohen

    Principal Program Manager

    Windows Store

    The reason it took this long is that your staff believe that it is appropriate to refuse to run tests that they fail to understand, and get caught up in emotional drama when they should be getting the work done.

    Thank John and Dawn for how long it took you to find out there was a problem.  This was reported, including a clear explanation of what was wrong, in August.  Your people "investigated" and "had a developer check" and they "determined certainly that it wasn't the problem."

    It's hard to tell whether I would be more disappointed in that they were skeptical and pretended they checked it, or if they actually had something this easy to test checked, and got the wrong answer.

    Please raise your standards for interacting with external developers.  If someone spends this much time telling you there's a bug, and is proven right, then you shouldn't respond by refusing their requests for specific form follow-up testing.

    It's just abominable.

    Tuesday, October 9, 2012 4:06 PM
  • Again, I apologize for the set of issues that you have encountered getting your app into the Windows Store. Unfortunately, until you posted the snippet of your code yesterday, I didn't have the data to provide you around the particular issue you were running into.

    I feel extremely confident that issue is around the ":" that you are using in your Product Id's. I have personally submitted multiple applications for in-app purchase that work with Product ID's that are alphanumeric and spaces. 

    We have validated that the ":" is the item causing the issue -- and that you have two applications that have exposed this problem to date.  Remember -- when you update your app -- to change the Product Id's on the Advanced Features page AND in your app code to make sure that after the update everything will work smoothly.

    I hope to see updated versions of your app in the Store shortly!

    Arik Cohen

    Principal Program Manager

    Windows Store

    Tuesday, October 9, 2012 4:59 PM
  • Again, I apologize for the set of issues that you have encountered getting your app into the Windows Store. Unfortunately, until you posted the snippet of your code yesterday, I didn't have the data to provide you around the particular issue you were running into.

    I feel extremely confident that issue is around the ":" that you are using in your Product Id's. I have personally submitted multiple applications for in-app purchase that work with Product ID's that are alphanumeric and spaces. 

    We have validated that the ":" is the item causing the issue -- and that you have two applications that have exposed this problem to date.  Remember -- when you update your app -- to change the Product Id's on the Advanced Features page AND in your app code to make sure that after the update everything will work smoothly.

    I hope to see updated versions of your app in the Store shortly!

    Arik Cohen

    Principal Program Manager

    Windows Store

    Yes, that's nearly verbatim what John said when he was very confident that that wasn't the problem.

    Please just humor me and run the test anyway.  What's the harm?

    Tuesday, October 9, 2012 5:06 PM
  • Again, I apologize for the set of issues that you have encountered getting your app into the Windows Store. Unfortunately, until you posted the snippet of your code yesterday, I didn't have the data to provide you around the particular issue you were running into.

    I feel extremely confident that issue is around the ":" that you are using in your Product Id's. I have personally submitted multiple applications for in-app purchase that work with Product ID's that are alphanumeric and spaces. 

    We have validated that the ":" is the item causing the issue -- and that you have two applications that have exposed this problem to date.  Remember -- when you update your app -- to change the Product Id's on the Advanced Features page AND in your app code to make sure that after the update everything will work smoothly.

    I hope to see updated versions of your app in the Store shortly!

    Arik Cohen

    Principal Program Manager

    Windows Store

    Unfortunately, this has been referred to a Dawn Smith, an escalation manager in Microsoft, who permanently gave up in less than 18 hours.

    Despite that this is a time sensitive problem, she has elected to ignore me all day, hung up, and has now turned off her phone in order to avoid contact.

    However, she has also concretely instructed her subordinates to refer all contact to her, and make her the primary contact point, meaning that the only person I am permitted to speak to is someone who declines to speak to me.

    I am also denied my two CTR incidents.

    Please help me deal with your abusive staff.  Her subordinates Mark, John, Joe and Jesse are aware of what she is doing, and participating in refusing to permit me to speak to her, but also decline to ger her on the phone for me.

    I apologize for shaming you in public this way, but they have left me literally no other options.

    Tuesday, October 9, 2012 10:35 PM
  • John,

    My name is Dan Reagan, I am the manager of the Windows Store Developer Solutions team at Microsoft. First, we understand how frustrating it is when you are encountering problems and do not feel that you are getting the response you require. There is a lot going on in your attempt to publish your app, and not everything has an easy answer while we investigate issues.

    More than one person has attempted to assist you and provide answers you are asking for. Unfortunately I am seeing your frustration being vented as abuse towards those individuals; this is against the terms of use for the MSDN Forums.

    • As Rob's manager, I have instructed him to cease external communication with you regarding your issue. If you wish to have dedicated assisted support, you are welcome to open a support case with us by visiting our Support Portal and I will ensure you are handled with the priority and dedication that is standard with a paid case.
    • I am locking this thread as it has too much abusive content to be useful to others. If you have additional questions you would like addressed, you are welcome to start new threads and remain courteous and professional.

    Thank you for your understanding, we look forward to assisting you further in a professional and non-abusive environment.

    Dan Reagan
    Team Manager
    Windows Store Developer Solutions


    Dan Reagan | Microsoft | Windows Store Developer Solutions

    Tuesday, October 9, 2012 11:28 PM