How to test subscription without acknowledgePurchase in Google Play Billing Library? - in-app-purchase

When I integrated Google Play Billing Library to purchase Subscriptions ,it said if you do not acknowledge a purchase within three days, the user automatically receives a refund, and Google Play revokes the purchase.
But I use test account to buy subscriptions, how can I make the above result without acknowledge in test account ?

Related

Google Play store cancels every subscription

If a user subscribes in-app, it is always refunded exactly three days later. Like this:
Intended behaviour is for the subscription to remain activated and payment not to be refunded.
Why might this happen?
Google has updated its In-App payment policies a while back and you'd need to acknowledge the payment within three days in order to retain the payment. Otherwise, your payment would get automatically refunded.
There is a new acknowledge() method available so you'd need to acknowledge your purchase.
Google states that the acknowledgement should only place after processing and granting the said features that come with In-App purchase.
See more information here.
If you do not acknowledge a purchase within three days, the user automatically receives a refund, and Google Play revokes the purchase.
https://developer.android.com/google/play/billing/billing_library_releases_notes#release-2_0

Google Play Billing backend notifications about purchases

Google Play Billing allows get notifications about subscriptions that users make in the app. There is a doc describes how to use this feature https://developer.android.com/google/play/billing/realtime_developer_notifications
But the doc says only about subscription not about one time purchases that users make in the app within google play.
I can't find any information related with notifications about single purchases, not subscriptions. Is anyone know how is it possible to get notifications about purchases?
They don't offer it. You will get email from Google Play for one-time purchase.
I think that the Google documentation was updated. Because in this link that you shared, we can see that the information about one-time purchases (or product purchases) is on the OneTimePurchasing tag.
Also, we must pay attention to what the documentation says:
If this field is present, then this notification is related to a one-time
purchase, and this field contains additional information related to the
purchase. Note that this field is mutually exclusive with testNotification
and subscriptionProductNotification.

iOS - Subscription payment based on phone number or promo code

We plan to implement all the subscription server-side services. Here is the flow for our client iOS app:
The registered user enters phone number, we check if the number is valid and if it is, the user can subscribe and thus use some features of the app that an user without an active subscription can't. The subscription is not free and it doesn't go via AppStore; the user is charged at the side of his/her provider, based on his/her phone number. The user isn't asked to give any of his/her credit card data. One of the features that gets unlocked when user subscribes is the possibility to download digital content.
The question is: would Apple approve this flow? I know for subscriptions as in-app purchase types, but the plan is to have something different in our iOS app.
And what about promo codes? Is it possible for vip users to use our promo codes in order to subscribe..?
Apple will not approve any purchases that get added to an iOS device, are initiated on the iOS device, and don't go through the app store. You can do purchases through your web site; in that case you will have to avoid links to your website from the app.
On the other hand, physical purchases must not go through the app store. So if you have an app for buying hand bags, you can not get payments through the app store.
Apple will also give you a very hard time if you ask users for their personal information, like their phone number, and if there are features they can't get without giving you such information.

Direct Carrier Billing

Direct Carrier Billing is a payment option provided to subscriber while purchasing an App which will bill the subscriber in their mobile carrier bill (postpaid) or deduct from prepaid balance.
Dear friends I would request to throw some light on how to integrate App in this case with Google Play store or itunes app store API which in turn will call the Mobile Carrier Charging system for charging the subscriber while purchasing paid apps or in App purchases.
Any help would be a boon to me.
Currently Google support Direct Carrier Billing (DCB) for some countries which gives Android users the option to pay using their carrier for apps and content in Google Play.
As a mobile application developer, you don't need to integrate anything.
For purchasing apps, Google Play will offer DCB option as a payment method to end-users if their carrier supported.
For in-app purchases, You need to use Android In-app Billing API and google play will offer the DCB option as a payment method to end-users if their carrier supported.
Check this also (Decide Whether your App will be Free or Priced)
To explain more I will list bellow the end user flow:
REGISTRATION THROUGH GOOGLE PLAY STORE
Go to the Play Store.
Click “My Account”.
Click “Enable carrier_name billing” under Payment methods. (appear only if carrier supported)
Google will verify your account while carrier validates your mobile number
Enter any country billing address details, “Save” and “Accept” once completed.
carrier will appear as your default payment method on Google Play.
HOW TO BUY IN-APP ITEMS
Open your app.
Go to the store for in-game items or in-app purchases.
Choose your preferred denomination for the in-app purchase.
Click “Buy”.
Enter your Google password.
Click “Confirm”.
Payment will be verified and you will receive an SMS of the successful purchase.

iOS In-App purchase subscriptions integration with a third party system

I need to build an app for a system, which already has a subscription on its website. It looks like Apple doesn't allow to use any own subscriptions and forces to integrate any app with iOS in-app subscriptions.
Is it any way to integrate two subscription systems? The main problem is that users can manage iOS subscriptions via iTunes and I can't find whether it's possible to get information about this and to stop subscription in the existing system if it's stopped via iTunes.
So is it possible to get notifications about unsubscribed iTunes users?
Using third party subscriptions
First off, it is possible to support an existing subscription system in your app, but it must be in addition to the App Store subscriptions. Also you have to be very careful about the UI you use. You can't prompt users to bypass the App Store and purchase through your server, but you can offer existing subscribers the ability to sign in with credentials they may have previously obtained through your website.
That said, Apple can be fairly capricious in their rulings on what is and isn't allowed in the App Store. I have worked on apps that have done this sort of thing, but they have been for fairly well known magazine publications. There's no guarantee that they will allow it for everyone.
Detecting unsubscribed App Store subscriptions
As for using App Store subscriptions, when a user purchases a subscription in your app, they will receive a receipt in the SKPaymentTransaction object. This receipt should be posted to your backend server to make sure it is valid before you give the user access to anything. See the In-App Purchase Programming Guide for more details.
When you setup a subscription type, you specify how long that subscription lasts. So if you log the transaction date in the SKPaymentTransaction when you receive a receipt, you can determine exactly when that subscription should expire by adding the duration of the subscription to the transaction date.
If it's an auto-renewing subscription, you will receive a new receipt when the subscription is renewed. So once you have validated that with your backend server, you can update your expiry date based on the new transaction date. If you don't receive a new receipt before the first one expires, it's likely the user has cancelled their subscription.
On the backend, your server can also tell when a particular subscription will expire based on the response from the verification server. First there is the status code which will tell you whether the subscription has already expired, but there is also an expiry date returned in the decoded receipt which will tell you when it is expected to expire if it hasn't already.
For more details, see the Auto-Renewable Subscriptions documentation.
Testing auto-renewing subscriptions
It's worth noting that when you are testing auto-renewing subscriptions in the App Store sandbox environment, the length of the various subscription types is dramatically shortened to make it easier to test. For example a 1 week subscription lasts only 3 minutes in the sandbox environment. You can see the full list of times in the iTunes Connect Developer Guide.
So you want the people that have bought the service from the website to be able to use the app, exactly like if they had purchased it from in App Purchases and in App Purchases people to be able to join the service just like people that joined through the site? As far as I know, Apple doesn't allow you to pay through other services as you said, but let's say someone buys the service from the app. What should happen would be that the money will be transferred to the company. Then after the payment you should include some code doing what the site does after a new person has payed for the service, so create his account as a paid account. Then, the app should also have a login screen where the registered users (no matter where they registered from) will be able to login into the app and use the service. Now the problem is indeed that if the subscription is stopped through iTunes you would never know, though a way around this would be to make a check in the server of this company which should monitor the income coming from one account. Then if this user has stopped paying (or stopped the subscription) you would be able to stop the service from the app. And you should recheck the server for payment after the duration of the subscription has passed, let's say a weekly subscription should be checked every week. (Sorry I would do this a comment but I haven't got enough reputation for this)

Resources