2013-05-29 30 views
6

Google Playアプリ内課金V3を使用して一定期間有効な商品を販売するアプリケーションを開発中です。ユーザーが購入した後、購入データをサーバーに送信し、成功した場合はすぐに消費します。その後、サーバーは、期間が終了するまで、この特定のユーザーの余分なサービスへのアクセスを許可します。注:私はアプリ内サブスクリプションを使用していません。Google Playアプリ内課金での購入の消化

支払いが行われないサンドボックスモードでテストユーザーとの購入をテストしています。それらのほとんどは成功しており、このフローは正常に動作します。しかし、時々、私の購入はすぐにGoogleによって取り消されます。私のGoogle Checkoutアカウントで注文履歴には、私はラインを参照してください。

「あなたの保護のために、Googleはこの注文をキャンセル取引が不正と見なさ ました。。」。

この場合でも、購入データには"purchaseState": 0が届きました。これは成功を示しています。また、この製品を使用しようとすると、成功します(IInAppBillingService.consumePurchase(version, package, token)を呼び出すと0が返されます)。在庫を後で照会すると、購入していない(したがって払い戻しもキャンセルもありません)、同じ商品を再び購入することができます。これは、通常のキャンセルされていない状態と同じ動作です。

  1. Googleは、テストサンドボックスの外で同じように注文をキャンセルすることはよくありますか?
  2. 正常に購入され、消費された商品は、開発者の支配外の理由でキャンセルされた(つまり、払い戻された)可能性がありますか?
  3. 既に消費されている商品のキャンセルについて知ることはできますか?

答えて

1

Googleは、多くの場合、テスト サンドボックスの外に、同じように注文をキャンセルしていますか?

Googleには、信頼できない支払いを特定するのに役立つ詐欺検出システムがあります。たとえば、誰かが盗難されたクレジットカードを使用したり、複数の口座などで同じクレジットカードが使用された場合などです。この場合、支払いの取引は、質問のメッセージで開始する前(支払いプロバイダに連絡する前)で停止します。 5月に、この詐欺検出システムはテストアカウントを確実に検出できませんでした。そのため、このメッセージが表示されます。今日はやや良いです。実際の生活では、これは非常にまれです。

に購入し、消費されたアイテムは、まだ は 開発者のコ​​ントロールの外の理由で(つまりお金は返金)をキャンセルすることはできますか?

キャンセルされるのはアイテムではなく、このアイテムに関連付けられた支払いトランザクションであるため、これは難しい質問です。理論的には、後でトランザクションをキャンセルすることもできますが、それには十分な理由が必要です。盗難されたクレジットカードを使用した同じ例をここで有効にすることができます。実生活で私はこれまでにそれを見たことがありません。

それは がすでに消費された製品のキャンセルについて知ることは可能ですか?

私は自分で試したことはありませんが、消費された商品をキャンセルすることはできません。私が言ったように、関連する支払い取引はキャンセルされるかもしれないが、消費された商品ではない。これは、消費された商品を再び販売することができ、まだ支払いに接続していないためです。商品が消費されない場合、それに割り当てられた支払取引が取り消されると、キャンセル状態になります。

これが役に立ちます。

+0

サーバー上で購入したアイテムを追跡している場合は、購入の注文IDも支払いトランザクションのIDです。アイテムがすでに消費されていても、何らかの検証を実装するのはあなた次第です。 – tomrozb

0

私は同じ種類のアプリケーションを設定しています。
ユーザーはアイテムを購入することができます。アイテムはサーバー上で追跡され、最後に消費されるため、ユーザーは同じアイテムを再び購入することができます。

私は購入に関するすべての情報を把握しており、すでに消費された注文を取り消そうとしました。注文状況が変更されることを確認できます(10分以内にキャンセルについてのメールが届きます)。

あなたのProductIDとpurchaseTokenとPurchaseAPIのこのURLを呼び出すと、購入情報が返されます:

https://www.googleapis.com/androidpublisher/v2/applications/<app.package.name>/purchases/products/<productId>/tokens/<purchaseToken>?access_token=<myToken> 

あなたが同様の応答を取得する最初の時間を:

{ 
    "kind": "androidpublisher#productPurchase", 
    "purchaseTimeMillis": "1458047931024", 
    "purchaseState": 0, 
    "consumptionState": 1, 
    "developerPayload": "mypurchasetoken" 
} 

とキャンセルpurchaseState後

{ 
    "kind": "androidpublisher#productPurchase", 
    "purchaseTimeMillis": "1458047931024", 
    "purchaseState": 1, 
    "consumptionState": 1, 
    "developerPayload": "mypurchasetoken" 
} 

これは同じです製品の検証では初めてです。
購入した商品の状態を定期的に確認し、キャンセルした場合はサーバー上の購入を更新することをお勧めします。

関連する問題