[android-developers] Re: How do other developers handle IAP refunds on unmanaged purchases?

2012-12-03 Thread Brill Pappin
Tough one and something I'm about to get into myself.
As a rule we simply give anyone a refund who asks, but in app, unmanaged 
purchased would be much tougher to handle.

What I would do in your case is simply reuse whatever system you have for 
delivering the unmanaged purchase goods to flag as soon as the user did 
anything with what they bought, and make the policy: refund on unopened 
merchandise only. You may need to modify your app a little to make this 
clear to the users, but should be a small price to pay for smoother 
integration :)

- Brill


On Monday, 3 December 2012 15:29:48 UTC-5, Keith Wiley wrote:

 I'm trying to design a policy for processing (or refusing) refunds for 
 unmanaged in-app purchases.  Refunds for managed purchases are quite simple 
 in concept since the app can simply unflip the bit that the managed 
 purchase corresponds to.  If you granted access to higher levels, you can 
 simply take them away again.  The refund is tightly correlated with the 
 account and the device so you (the developer) don't have to keep that 
 association, you let google process the money and you let the app undo 
 the managed purchase.

 However, unmanaged purchases are kind of messy.  You can buy the same 
 thing over and over again, they cannot be easily associated with a google 
 account to verify the inventory, and unmanaged purchases are often 
 nonbinary in nature, i.e., if an unmanaged purchase is in-game-currency 
 (canonical gold coins) then you could buy 100 coins for $.99 and spend half 
 those coins in the game...and then -- rather unfairly -- want a refund of 
 your original purchase.  It is difficult from for the developer to identify 
 that this is an unfair request at the time the refund request is made, so 
 the developer cannot easily determine whether to refuse the refund.

 As described above, it is difficult to flatly refuse to grant refunds on 
 unmanaged purchases because it is difficult to determine whether the 
 original purchase has been fully or partially used up in the game.  I am 
 attempting to implement a server-side database of unmanaged purchases so I 
 know who had bought what *and* the extent to which those purchased items 
 have been used up...but it is difficult to associate google purchases 
 (google accounts) with devices or app installations...and it is devices 
 which would report their unmanaged purchases to my server, not google 
 accounts.  Sure, my app can identify itself with a UUID, but how do I know 
 which *google account* that installation (and its unmanaged purchases) go 
 with.  To put it differently, if I receive a refund request, how do I look 
 the installation up in my server database to see if the unmanaged purchase 
 has been partially or fully used up such that the refund request from that 
 google account is unfair and should be denied?

 At any rate, I'm just swimming through these issues trying to decide how I 
 want to handle them, and I'm extremely curious what sorts of solutions 
 other developers have come up with.  This could make for a very riveting 
 discussion if others care to participate.

 *Cheers!*

 Cheers!


-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: How do other developers handle IAP refunds on unmanaged purchases?

2012-12-03 Thread Keith Wiley
On Monday, December 3, 2012 12:45:33 PM UTC-8, Brill Pappin wrote:

 Tough one and something I'm about to get into myself.
 As a rule we simply give anyone a refund who asks, but in app, unmanaged 
 purchased would be much tougher to handle.


Sure, I always refund actual baseline app purchases (good old fashioned 
direct app purchases)...but I've never used IAP before so these new issues 
are...new.
 

 What I would do in your case is simply reuse whatever system you have for 
 delivering the unmanaged purchase goods to flag as soon as the user did 
 anything with what they bought, and make the policy: refund on unopened 
 merchandise only. You may need to modify your app a little to make this 
 clear to the users, but should be a small price to pay for smoother 
 integration :)


I agree, but that's the problem.  I admit I didn't explain it very well.  
The server-side database for managing purchased items identifies 
installations by a UUID which is created when the app is run for the first 
time.  This is conceptually similar to using a unique *device* id except 
that if you research unique Android device identifiers you quickly learn 
there is no across-the-board 100% operational way to get such ids...so I 
use UUIDs generated in-app at first launch.  Fine...but google 
purchases don't identify their device (much less my own personal UUID 
scheme obviously).  So when a google account (a person or gmail address in 
effect) requests a refund...how on Earth do I look them up in my database 
of in-app unmanaged purchases (tied to installation UUIDs) to see if the 
purchased item has ever been used within the app?  How do I do that?  
That's what I cannot, for the life of me, figure out.  

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: How do other developers handle IAP refunds on unmanaged purchases?

2012-12-03 Thread Brill Pappin
Ahh,, now that is a different kettle of fish!

I'm in the situation where I want to be able to identify my legacy users so 
they don't get in-app purchase offers.
What I'm about to try (I think) is using the google account they are using 
with Play.

What you'd use is the AccountManager class to get their Goggle account 
email address (i'm surprised that IAP doesn't already identify this for you 
in the transaction) then attach the flag to that ID, which would be good 
for as long as the users uses the app for all Android users. Its also 
moveable between phones or phone resets and is tied to *the user* not the 
phone instance.

To get accounts, you would use something like:

AccountManager accountManager = AccountManager.get(this);

Account[] accounts = accountManager.getAccountsByType(com.google);


You could change or remove the filter to get all accounts but you can look 
up the correct API if you use this method.


- Brill


On Monday, December 3, 2012 4:03:11 PM UTC-5, Keith Wiley wrote:

 On Monday, December 3, 2012 12:45:33 PM UTC-8, Brill Pappin wrote:

 Tough one and something I'm about to get into myself.
 As a rule we simply give anyone a refund who asks, but in app, unmanaged 
 purchased would be much tougher to handle.


 Sure, I always refund actual baseline app purchases (good old fashioned 
 direct app purchases)...but I've never used IAP before so these new issues 
 are...new.
  

 What I would do in your case is simply reuse whatever system you have for 
 delivering the unmanaged purchase goods to flag as soon as the user did 
 anything with what they bought, and make the policy: refund on unopened 
 merchandise only. You may need to modify your app a little to make this 
 clear to the users, but should be a small price to pay for smoother 
 integration :)


 I agree, but that's the problem.  I admit I didn't explain it very well.  
 The server-side database for managing purchased items identifies 
 installations by a UUID which is created when the app is run for the first 
 time.  This is conceptually similar to using a unique *device* id except 
 that if you research unique Android device identifiers you quickly learn 
 there is no across-the-board 100% operational way to get such ids...so I 
 use UUIDs generated in-app at first launch.  Fine...but google 
 purchases don't identify their device (much less my own personal UUID 
 scheme obviously).  So when a google account (a person or gmail address in 
 effect) requests a refund...how on Earth do I look them up in my database 
 of in-app unmanaged purchases (tied to installation UUIDs) to see if the 
 purchased item has ever been used within the app?  How do I do that?  
 That's what I cannot, for the life of me, figure out.  


-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: How do other developers handle IAP refunds on unmanaged purchases?

2012-12-03 Thread John Coryat
We simply have No refunds under any circumstances in our refund policy. 
That covers most of the situations. We use IAP unmanaged items to do 
subscriptions, managed by our server and not Google. If a user purchases 
twice, they get twice the subscription period. It's pretty easy to 
determine if a user accidentally made a mistake and in that case, I refund 
the duplicates.

Sometimes a user is just unhappy and whines about the product in which case 
I usually give them a refund unless it's near the subscription period end, 
in which case I quote the refund policy. 

One recent case a user asked for a refund Because I am going to an 
iPhone. Needless to say, I quoted him the no refunds under any 
circumstances policy.

In the last year, I may have given 25 refunds so it's not a big deal.

-John Coryat

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: How do other developers handle IAP refunds on unmanaged purchases?

2012-12-03 Thread Keith Wiley
Thanks!  I really appreciate you sharing that with us.  I suppose part of 
my problem is that I'm not sure what the refund experience is like from the 
user's end.  I'm not even sure *how* an IAP refund is requested.  Since I 
know it isn't supported proper through Google Play (as opposed to app 
refunds) I'm not actually sure how it's done.  Are all IAP refund requests 
issued by way of personal email from the user to the developer or is there 
some existing mechanism for sending a refund request?  I may have to go the 
no refunds route too.

May I ask *where* you put your refund policy notice?  Is this just 
informational in your own app through a UI of your design, or is there an 
official place to put a refund policy in Google Play which is seen when the 
user tries to make a purchase?  I haven't seen anywhere in the developer 
console where a policy notice would be updated.

Thanks.

On Monday, December 3, 2012 1:46:08 PM UTC-8, John Coryat wrote:

 We simply have No refunds under any circumstances in our refund policy. 
 That covers most of the situations. We use IAP unmanaged items to do 
 subscriptions, managed by our server and not Google. If a user purchases 
 twice, they get twice the subscription period. It's pretty easy to 
 determine if a user accidentally made a mistake and in that case, I refund 
 the duplicates.

 Sometimes a user is just unhappy and whines about the product in which 
 case I usually give them a refund unless it's near the subscription period 
 end, in which case I quote the refund policy. 

 One recent case a user asked for a refund Because I am going to an 
 iPhone. Needless to say, I quoted him the no refunds under any 
 circumstances policy.

 In the last year, I may have given 25 refunds so it's not a big deal.

 -John Coryat


-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: How do other developers handle IAP refunds on unmanaged purchases?

2012-12-03 Thread Brill Pappin
We use Zendesk for support and all refund requests that the users can't do 
themselves go through our Zendesk account.

Oer refund policy if posted on our support site, i.e.:

http://support.sixgreen.com/entries/20554258-refund-policy

- Brill

On Monday, December 3, 2012 5:25:08 PM UTC-5, Keith Wiley wrote:

 Thanks!  I really appreciate you sharing that with us.  I suppose part of 
 my problem is that I'm not sure what the refund experience is like from the 
 user's end.  I'm not even sure *how* an IAP refund is requested.  Since I 
 know it isn't supported proper through Google Play (as opposed to app 
 refunds) I'm not actually sure how it's done.  Are all IAP refund requests 
 issued by way of personal email from the user to the developer or is there 
 some existing mechanism for sending a refund request?  I may have to go the 
 no refunds route too.

 May I ask *where* you put your refund policy notice?  Is this just 
 informational in your own app through a UI of your design, or is there an 
 official place to put a refund policy in Google Play which is seen when the 
 user tries to make a purchase?  I haven't seen anywhere in the developer 
 console where a policy notice would be updated.

 Thanks.

 On Monday, December 3, 2012 1:46:08 PM UTC-8, John Coryat wrote:

 We simply have No refunds under any circumstances in our refund policy. 
 That covers most of the situations. We use IAP unmanaged items to do 
 subscriptions, managed by our server and not Google. If a user purchases 
 twice, they get twice the subscription period. It's pretty easy to 
 determine if a user accidentally made a mistake and in that case, I refund 
 the duplicates.

 Sometimes a user is just unhappy and whines about the product in which 
 case I usually give them a refund unless it's near the subscription period 
 end, in which case I quote the refund policy. 

 One recent case a user asked for a refund Because I am going to an 
 iPhone. Needless to say, I quoted him the no refunds under any 
 circumstances policy.

 In the last year, I may have given 25 refunds so it's not a big deal.

 -John Coryat



-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: How do other developers handle IAP refunds on unmanaged purchases?

2012-12-03 Thread John Coryat
Refunds are made through the Checkout console. It takes a few seconds. The 
trick is locating the order to refund. Usually, it's linked to the user's 
GMail account so if they contact you that way, then it's a snap. Otherwise, 
you have to inform the user how to find their order number through Google 
Wallet, which is less than seamless. Most users have no problem with that 
either.

Occasionally, a user not using a GMail (It's almost always aol.com or 
hotmail) can't find their order number and I just tell them I can't help 
them. If it gets down to this, then the user always gives up. The onus is 
on the user. There is a no-refund policy in effect and if they can't help 
find the order then it's impossible to give them a refund anyway.

I suggest the no refunds under any circumstance policy to CYA.

-John Coryat

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: How do other developers handle IAP refunds on unmanaged purchases?

2012-12-03 Thread niko20
I usually find it's good enough if the user gives you their name, I can 
find it in the orders pretty easily that way. Very rarely do I need the 
order number.

-niko

On Monday, December 3, 2012 6:22:15 PM UTC-6, John Coryat wrote:

 Refunds are made through the Checkout console. It takes a few seconds. The 
 trick is locating the order to refund. Usually, it's linked to the user's 
 GMail account so if they contact you that way, then it's a snap. Otherwise, 
 you have to inform the user how to find their order number through Google 
 Wallet, which is less than seamless. Most users have no problem with that 
 either.

 Occasionally, a user not using a GMail (It's almost always aol.com or 
 hotmail) can't find their order number and I just tell them I can't help 
 them. If it gets down to this, then the user always gives up. The onus is 
 on the user. There is a no-refund policy in effect and if they can't help 
 find the order then it's impossible to give them a refund anyway.

 I suggest the no refunds under any circumstance policy to CYA.

 -John Coryat


-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en