2016-06-17 14 views
2

私のアプリでサブスクリプションを使用しています。テスト目的のために、私はテストサブスクリプションを購入するテストデベロッパーを使用しています。AndroidのサブスクリプションgetPurchases

私はそのテストデベロッパーと私のアプリを3ヶ月購読しています。その後、私は自分のアカウントからサブスクリプションを取り消しました(基本的には、更新をfalseに設定することを意味します)。私は一度私はサブスクリプションをキャンセルした後、私は再びアプリケーションから購入することができます(それは、サブスクリプションを "マージ"し、あなたの有効期限を遅らせることを目的としています。 4ヶ月で)。

getPurchases()メソッドを呼び出すと、データが返されます(何も変更されていません。購入日ではなくトークンではありません)。

このデータを使用してgoogleデベロッパーAPIを使用してサーバーにリクエストすると(有効期限をリクエストするための唯一の方法です)、返された有効期限は過去です。だから私はいくつかのbussinessロジックを行う場合、私はサブスクリプションの期限が切れたと考えなければならないが、それは私がgetPurchases()をクエリするときGooglePlayから受け取っているデータです。また、ドキュメントでは、「getPurchases()メソッドは、失敗したまたは期限切れのサブスクリプションを返しません。

私は2回目のブーグ時に、新しい購入データが生成されていなければならないと考えています。新しいトークンを使用してサーバーからサーバーに照会する必要がありますが、受け取っていません。

何が起こっている可能性がありますか?

また、Googleのアカウントでこれらの注文を見ることができますか?私は店舗のアカウントをチェックしたので、表示されません。 ありがとう!

答えて

1

3年が経過したら、Google In-App Billing v2を使用していると仮定します。

しかし、問題はv3(少なくともサンドボックス/テストアカウントの場合)と同期のままです。 Googleアプリ内課金v3 API(GIABAPIv3)のみに依存して、支払いポップアップフローが正常に完了したときに新しいpurchaseTokendeveloperPayloadを提供することができます。 purchaseDatagetPurchasesによって返された場合は、私がよく見てきたように、リアリティ*と同期していない可能性があります。さらに、GIABAPIv3ポップアップフローの動作は現実と同期していない可能性があります*。

GIABAPIv3のpurchaseDataは、間違ったisAutoRenewing状態とGIABAPIv3ポップアップフローを反映する可能性があります。例えば、サブスクリプションは現実的にはキャンセルされる(そして期限切れになるかもしれない)*しかし、GIABAPIv3とそのポップアップの両方は、ユーザーがサブスクライブされたままであることを示している。そのような場合は、Google Playアプリ経由でもう一度キャンセルすると、GIABAPIv3を同期させるのに役立ちます。

"getPurchases()メソッドは、失敗したまたは期限切れの サブスクリプションを返しません。

逆に、getPurchasesは「キャンセル」購入のデータを返します。不思議なことに、GDAPI expiryTimeは、通常の契約終了日から購入がキャンセルされた時刻に変更されます。だからあなたのアプリケーションがサブスクリプション終了までサブスクリプションとしてユーザーを扱うという望ましい動作を達成するためには、サーバーは元の有効期限を覚えておく必要があります。 expiryTime <購読終了の場合、購入がキャンセルされたことを示します(また、GDAPIのAutoRenewingもfalseに変更されているはずです)。 https://developer.android.com/google/play/billing/billing_integrate.html "この呼び出しは、ユーザーが所有しているすべてのアクティブなサブスクリプションでバンドルを返します。サブスクリプションが更新されずに期限切れになると、返されたバンドルには表示されなくなります。 これは、Googleが上記の「expires」という単語を使用し、フィールド名がexpiryTimeと完全には関連していないと結論づけています(expiryTimeはキャンセルの時刻を表し、 GDAPIを介して利用できるようにする - GIAPAPIv3でその購入がないことを覚えているか、それを推測する必要があります^)。

※現実は、人間のユーザーが行ったこととGoogle Developer API(GDAPI)の記載に基づいています。

^サンドボックス/テストの毎日のリセットの症状かもしれないが、私はそれが起こったとは言いません。現実にはキャンセルされ、有効期限が切れたサブスクリプションを見たことがあります* GIABAPIv3には数日後も引き続き表示されます(Google Playアプリでの再キャンセルのみが現実に戻る*)。

関連する問題