6

Androidアプリの1つで仮想アイテムを購入するために、GoogleCheckoutとPayPalの両方をサポートするアプリ内購入メカニズムを実装したいと考えています。私はこれらのメカニズムの両方の参照を読みましたが、そのような購入を処理する正しい方法は何であるかについてまだ1つの質問があります。問題は、購入トランザクションの一部として自分のサーバーへの呼び出しを管理したいということです。その呼び出しがトランザクション全体のキャンセル/ロールバックに失敗した場合に備えて。私が最初に購入取引を実行し、それが確認されたときにのみ自分のサービスに電話した場合、それが失敗した場合はどうすればよいですか?最初にサービスを呼び出してトランザクションを処理しようとして失敗した場合は、呼び出しをロールバックする必要があります(ロールバックが失敗した場合はどうなりますか???)

それを管理する正しい方法は何ですか?欠落しているマルチフェーズトランザクションを作成する方法はありますか?

4

4 に答える 4

4

Google CheckoutSDKよりもInAppBillingに提供されているメカニズムを使用してみてください。PayPalこれは、トランザクションのエラー応答を取得したりRESTORE TRANSACTIONS、アプリをデバイスから削除して再インストールしたりするための最良の方法です。Googleは、アプリの請求トランザクション中に非同期ブロードキャスト通知を提供します。購入タイプは、管理対象(ユーザーアカウントごと)と管理対象外に分けることができます。

Googleはここに情報を提供します:以下のようなアプリ課金の概要:

1.一部のアプリ内課金の実装では、プライベートリモートサーバーを使用してコンテンツを配信したり、トランザクションを検証したりすることもありますが、アプリ内課金を実装するためにリモートサーバーは必要ありません。

2.リモートサーバーは、メディアファイルや写真など、ユーザーのデバイスに配信する必要のあるデジタルコンテンツを販売している場合に役立ちます。

3.リモートサーバーを使用して、ユーザーのトランザクション履歴を保存したり、署名の検証などのさまざまなアプリ内課金セキュリティタスクを実行したりすることもできます。

4.アプリケーション内のすべてのセキュリティ関連タスクを処理できますが、アプリケーションをセキュリティ攻撃に対して脆弱にするのに役立つため、リモートサーバーでこれらのタスクを実行することをお勧めします。

したがって、最後に、他のサードパーティの支払いプロセスよりもGoogle InAppBillingImplementationをお勧めします。

于 2012-06-04T12:59:17.720 に答える
3

私はこれまでGoogleCheckoutを使用したことがなく、PayPalのみを使用しました。

あなたが探しているのはPayPalPaymentsProSDKです。

これにより、サーバーが支払いトランザクションの顔になります(通常のCheckout ExpressのようなPayPalサイトではありません)。

2フェーズコミットメカニズムを実装する必要があります。

2つの異なるアプローチをお勧めします。

a)サーバーで購入プロセスを開始し、データベースで「コミットされていない」状態の中間のままにすることができます。サーバーからPayPalに電話して、PPが電話を処理できるようにします。また、PPからの応答があり、その応答が支払いが受け入れられたことを意味する場合は、購入を確定します。このアプローチの問題は、アプリケーションがその時点でトランザクションを完了するか拒否するかを決定する必要があることです。これは、実際の購入トランザクションの動作とは異なります。PayPalは、単なるOK /エラーとは異なる応答をする場合があります。支払いが保留中の場合もあれば、警告付きでOKの場合もあります。

b)さらに信頼性が高いのは、PayPalに支払い状況を通知させることです。

前に説明したのと同じフローを変更して作成します。PayPalが支払いを処理し、肯定的な回答を提供したら、トランザクションIDをデータベースに保存しますが、何もコミットしません。トランザクションが完了したことだけをユーザーに伝えます。

PayPalサーバーへの呼び出しの一部として、使用できるパラメーターがあります。このパラメーターは、IPNリスナーURLと呼ばれます。

IPNは即時支払い通知を意味し、PayPalによって発信されたサーバーへのコールバックであり、アプリケーションは支払いステータスに関する即時情報を取得します。

保留中のトランザクションが受け入れられるか拒否される可能性があるため、これは非常に重要です。受け入れられた取引でさえ、あなたによって、またはあなたの購入者がPayPalに適した請求によってロールバックされるかもしれません。

PP IPNリスナーの実装方法についてさらに情報が必要な場合は、お知らせください。

于 2012-05-30T23:12:43.213 に答える
3

Googleが処理する支払い方法を実装する方法をまだ探している場合は、Androidマーケットのアプリ内課金を実装する方法の詳細な説明をここで見つけることができます。

http://developer.android.com/guide/market/billing/index.html

于 2012-06-04T08:48:07.847 に答える
0

AFAIK、トランザクションを「ロールバック」することはできません。グーグルの論理は可能な限り単純だと思います。もしあなたが(開発者コンソールに追加された)製品を持っていれば、あなたはそれを売ることができます。
GoogleのマーケットサービスからPURCHASE_STATE_CHANGEDと通知されたら、取引を確認する必要があります。それ以外の場合、アプリは確認されなくなるまでPURCHASE_STATE_CHANGEDを​​受け取りますが、実際にはユーザーはすでに課金されています。また、このトランザクションをロールバックすることはできません。
サーバーがトランザクションを拒否できる場合は、そのような場合に備えて、次のような追加のロジックを実装する必要があります。

  • 購入を開始する前に、製品が入手可能かどうかを確認してください。
  • 製品が利用可能な場合-購入時に製品が存在することを確認するために、製品の「予約」を使用します。
  • 等々;
  • それ以外の場合は、払い戻しについてサポートに連絡するようにユーザーに指示する必要があります。
于 2013-07-04T10:33:05.023 に答える