How to get expiry date for Subscription with client side in Android?

微笑、不失礼 提交于 2019-12-21 02:01:05

问题


We are implementing the subscription using in-app purchase in android, We are getting the purchase timestamp like the below format

'{
   "orderId":"GPA.1234-5678-9012-34567",
   "packageName":"com.example.app",
   "productId":"exampleSku",
   "purchaseTime":1345678900000,
   "purchaseState":0,
   "developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
   "purchaseToken":"opaque-token-up-to-1000-characters"
 }'

But We need to display the expiry date in application UI and we wanna get the exact expiry date from play store. We assume that If we manually calculate the expiry date then it might be the conflict with the play store expiry date. Can anyone explain about "How to get the expiry date for Subscription in android?"


回答1:


To Get Subscription Expiry date after subscription, need to follow below steps.

Step 1: First Get "mRefreshToken" from following api Google Publisher API

Step 2: Next need to get "access_tokon" using params("mRefreshToken", "client_id" and "client_secret") and below api.

final StringRequest mStringRequest = new StringRequest(Request.Method.POST, "https://accounts.google.com/o/oauth2/token",
    new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            [From response -get access_tokon]
        }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
   }}) {
@Override
protected Map<String, String> getParams() {

    Map<String, String> params = new HashMap<>();
    params.put("grant_type", "refresh_token");
    params.put("client_id", "your_client_id");
    params.put("client_secret", "your_client_secret");
    params.put("refresh_token", mRefreshToken);

    return params;
}};

Step 3: You have "accessToken" from above api, after that get expiry json using below api and params

String url = "https://www.googleapis.com/androidpublisher/v2/applications/" + AppController.getInstance().getPackageName() + "/purchases/subscriptions/" + mSubscriptionId + "/" + "tokens/" + mPurchaseToken;

 final StringRequest mStringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            [From response -get expiry detail json]
        }
    }, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
    error.printStackTrace();
}}) {

@Override
public Map<String, String> getHeaders() throws AuthFailureError {

    Map<String, String> params = new HashMap<>();
    params.put("Authorization", "Bearer " + accessToken);
    return params;
}};

For more reference: official document url from Google "https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get" and "https://developers.google.com/android-publisher/authorization"



来源:https://stackoverflow.com/questions/38800937/how-to-get-expiry-date-for-subscription-with-client-side-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!