払い戻しのフロー

概要

払い戻しは、ユーザーのアクティブな操作([払い戻し] ボタンを押す)によって開始することも、ユーザーの代わりに自動的に開始することもできます。トリガーに関係なく、非同期の払い戻しリクエストは Google から決済インテグレータに送信されます。インテグレータはリクエストを承認し、払い戻しが完了したら Google に通知する必要があります。

フローの仕組み

払い戻しフロー

ユーザーが開始する非同期の払い戻しフローの例を次に示します。

払い戻しフロー

上の図のオブジェクトは次のとおりです。

  • お客様: 全額払い戻しまたは一部払い戻しを希望しているユーザーです。
  • Google サーバー: refund コマンドを決済インテグレータに送信する Google のバックエンド サーバー。
  • 決済インテグレータ: 払い戻しリクエストを適切なカード発行会社に転送するインテグレータ。
  • 発行元: 支払いに使用されるカード発行会社。払い戻しリクエストを受け付けます。

この例の払い戻しは、ユーザーによって開始されます。

  1. ユーザーが Google サーバーへの払い戻し手続きを開始します。
  2. Google は、決済インテグレータの AsynchronousRefund エンドポイントを呼び出します。
  3. インテグレータは Acknowledged レスポンスを Google に送信します。
  4. インテグレータはカード発行会社の適切な Refund エンドポイントを呼び出します。
  5. カード発行会社は払い戻しを処理し、Success でインテグレータに応答します。
  6. インテグレータは Google サーバー上で RefundResultNotification エンドポイントを呼び出して、結果を Google に通知します。
  7. Google は RefundResultNotification を承認します。
  8. Google がユーザーの利用可能な残高を更新します。
  9. お客様に払い戻しが行われます。

ベスト プラクティスとその他の考慮事項

Google 広告などの一部の Google サービスでは、アカウントにクレジットが残っている限り払い戻しがサポートされているため、トランザクションの払い戻しリクエストは無期限に実施する必要があります。技術的な制限がある場合、払い戻し期間はプラットフォームで認められる期間にする必要があります。

払い戻しが不承認となるのは、元の取引の残高が払い戻し額に満たない場合、またはアカウントが閉鎖されているか保留中で、インテグレータがユーザーにこの金額を送金できない場合のみです。

回収は、回収から数秒以内に開始されます。払い戻しの時期は Google の裁量によります。

払い戻しを全額払い戻しとみなすべきではありません。アカウントの払い戻しを行う際は、常に refundAmount フィールドを考慮する必要があります。

一部払い戻しを複数サポートする必要があります。たとえば、1,100 円の取引が発生し、ユーザーが元の取引で 400 円、500 円、100 円の部分的な払い戻しに成功したとします。この場合、3 つの払い戻しの captureRequestId はすべて同じですが、requestId の値は異なります。この取引の残高は 1 ドルです。

今度は 1,200 円の商品を購入したとします。この例では、ユーザーは 2 回、それぞれ 600 円の払い戻しを行えます。この 2 つの払い戻しの requestId の値が異なる(かつ captureRequestId が同じ)場合、同じ取引に対する別々の払い戻しとして処理する必要があります。この場合、払い戻しが完了すると、お客様の取引の残高は 0 円になります。