Method: captureResultNotification

capture または asynchronousCapture メソッドの呼び出しが行われた後に、キャプチャの結果を Google に通知します。

captureResult 値はこの captureRequestId のべき等であるため、この値を後続のメソッド呼び出しで変更することはできません。

エンドポイントでリクエストの処理中にエラーが発生した場合、このエンドポイントからのレスポンスは ErrorResponse 型になります。

このメソッドが HTTP 200 を返さない場合、このクエリへのレスポンスは空になる可能性があります。攻撃者が他のインテグレータの支払いインテグレータのアカウント識別子を理解できるように、明確な説明がある ErrorResponse を使用できる場合は、レスポンス本文が空になります。署名鍵が一致しない場合、支払いインテグレータ識別子が見つからなかった場合、または暗号鍵が不明な場合、このメソッドは空の本文を含む HTTP 404 を返します。リクエスト署名が確認されると、レスポンス本文にエラーに関する追加情報が返されます。

リクエストの例を次に示します。


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 1,
      "revision": 0
    },
    "requestId": "KcgwSKrV76eVNDUbsZ4UA3",
    "requestTimestamp": "1481852928293"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "captureRequestId": "awNaC510cefae3IJdNEvW2",
  "captureResult": {
    "captureResultCode": "SUCCESS"
  }
}

レスポンスの例を次に示します。


{
  "responseHeader": {
    "responseTimestamp": "1481852928324"
  },
  "result": "SUCCESS"
}

HTTP リクエスト

POST https://vgw.googleapis.com/secure-serving/gsp/v1/captureResultNotification/:PIAID

リクエスト本文

リクエストの本文には次の構造のデータが含まれます。

JSON 表現
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
フィールド
requestHeader

object (RequestHeader)

必須: すべてのリクエストに共通するヘッダーです。

paymentIntegratorAccountId

string

必須: キャプチャが発生した支払いインテグレーターのアカウント ID。

captureRequestId

string

必須: この取引の一意の識別子。これは、このリクエストが関連付けられている capture または asynchronousCapture の呼び出し中に Google によって生成された requestId です。

最大 100 文字までの文字列で、「a-z」、「A-Z」、「0-9」、「:」、「-」、「_」の文字のみが含まれます。

captureResult

object (CaptureResult)

必須: このキャプチャの結果。

paymentIntegratorTransactionId

string

省略可: この識別子はインテグレーターに固有であり、インテグレーターによって生成されます。これは、インテグレータがこの取引を認識するための識別子です。

この ID は送金の詳細に含まれており、便利です。

レスポンスの本文

captureResultNotification メソッドのレスポンス オブジェクト。

成功すると、レスポンスの本文に次の構造のデータが含まれます。

JSON 表現
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
フィールド
responseHeader

object (ResponseHeader)

必須: すべてのレスポンスに共通するヘッダーです。

result

enum (CaptureResultNotificationResultCode)

必須: この呼び出しの結果。

キャプチャ結果

キャプチャの最終結果に関する情報。

JSON 表現
{
  "captureResultCode": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },

  // Union field FailureDetail can be only one of the following:
  "transactionMaxLimit": string,
  "transactionMinLimit": string,
  "currentBalance": string
  // End of list of possible types for union field FailureDetail.
}
フィールド
captureResultCode

enum (CaptureResultCode)

必須: このキャプチャの結果コード。

rawResult

object (RawResult)

省略可: このキャプチャの元の結果。Google のリスクエンジンと分析に通知するために使用されます。不承認のコードのマッピングが行われた場合、データが失われることがあります。インテグレータは、Google に未加工のコードを与えることもできます。たとえば、クレジット カード ゲートウェイ(インテグレータ)は、このフィールドを使用して、VISA ネットワークから受け取った正確な不承認コードを Google に通知できます。この場合、scope は「visa」で、rawCode は VISA ネットワークが返したものになります。

resultSUCCESS でない場合、この値は必須です。

共用体フィールド FailureDetail

FailureDetail は次のいずれかになります。

transactionMaxLimit

string (Int64Value format)

省略可: captureResultCodeCHARGE_EXCEEDS_TRANSACTION_LIMIT の場合、最大許容トランザクションの値です。ユーザー向けの構造化メッセージと不承認率の分析に使用します。

この金額は、元の capture または asynchronousCapture メソッド呼び出しと同じ currencyCodeマイクロです。

transactionMinLimit

string (Int64Value format)

省略可: captureResultCodeCHARGE_UNDER_TRANSACTION_LIMIT の場合、これは最小許容トランザクションの値です。ユーザー向けの構造化メッセージと不承認率の分析に使用します。

この金額は、元の capture または asynchronousCapture メソッド呼び出しと同じ currencyCodeマイクロです。

currentBalance

string (Int64Value format)

省略可: 結果が INSUFFICIENT_FUNDS の場合、これはユーザーのアカウントで現在利用可能な残高(マイクロ単位)です。ユーザー向けの構造化されたメッセージに使用します。

この値は、リクエストの currencyCode と同じ通貨である必要があります。

CaptureResultCode

キャプチャの結果コード。

列挙型
UNKNOWN_RESULT このデフォルト値を設定しないでください。
SUCCESS 正常にキャプチャされました。
CHARGE_UNDER_TRANSACTION_LIMIT リクエストされたキャプチャ金額がインテグレータのトランザクションあたりの最小金額を満たしていません。このコードを使用する場合は、transactionMinLimit フィールドに、ユーザー メッセージングのための最小取引金額を入力します。
CHARGE_EXCEEDS_TRANSACTION_LIMIT リクエストされたキャプチャ金額がインテグレータのトランザクションごとの上限を超えています。このコードを使用する場合は、transactionMaxLimit フィールドに、ユーザー メッセージ用の取引上限を入力します。
CHARGE_EXCEEDS_DAILY_LIMIT お客様のアカウントは現在、1 日の上限を超えているため、購入にご利用いただけません。
CHARGE_EXCEEDS_MONTHLY_LIMIT お客様のアカウントは現在、月間限度額を超えているため、購入にはご利用いただけません。
INSUFFICIENT_FUNDS このアカウントには、このキャプチャを取得するのに十分な資金がありません。
SUSPECTED_FRAUD インテグレーターは、この取引が不正である疑いがあります。
ACCOUNT_CLOSED インテグレーターが保有するユーザーのアカウントが閉鎖されています。この戻り値により、ユーザーの支払い方法が Google で閉じられます。ユーザーは新しい支払い方法を追加するよう求められます。
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER インテグレーターのアカウントは閉鎖されています。アカウントが引き継がれたようです。この戻り値により、ユーザーの支払い方法が Google で閉じられます。ユーザーは新しい支払い方法を追加するよう求められます。
ACCOUNT_CLOSED_FRAUD インテグレーターが保有するユーザーのアカウントは、不正行為により閉鎖されました。この戻り値により、ユーザーの支払い方法が Google で閉じられます。ユーザーは新しい支払い方法を追加するよう求められます。
ACCOUNT_ON_HOLD お客様のアカウントは保留中です。
OTP_NOT_MATCHED OTP がインテグレーターが送信したものと一致しません。
OTP_ALREADY_USED OTP はすでに使用されています。
CAPTURE_REQUEST_EXPIRED インテグレータがユーザーの資金を取得するのに時間がかかりすぎています。Google はこの不承認を最終状態として扱うため、インテグレーターは後でユーザーの資金が回収されないこと、またはキャプチャが成功した場合はユーザーに自動的に払い戻しが行われるようにする必要があります。
INVALID_PIN ユーザーが無効な PIN を提示しました。
OS_LOCK_FAILED この支払いフローでは OS ロックのチャレンジが必要であり、ユーザーはデバイスのロックを解除できませんでした。
PIN_ENTRY_ATTEMPTS_EXHAUSTED この支払いフローでは、ユーザーの PIN 入力が必要です。ユーザーは PIN の入力に失敗し、再試行回数上限に達しました。
USER_EXITED_PAYMENT_FLOW ユーザーが OS ロックまたは PIN 入力画面で支払い手続き全体をキャンセルした。
MONTHLY_FREQUENCY_LIMIT_EXCEEDED お客様のアカウントは 1 か月のトランザクション試行回数の上限を超えたため、現在購入には使用できません。
DECLINED_BY_ISSUER

この不承認コードは定常状態では使用しないでください。これは、インテグレータがユーザーの支払い方法の発行元から不明な不承認コードを検出したときに使用する一時的なキャッチオール コードです。インテグレータが、より適切な結果コードの使用を決定したり、新しい結果コードの追加をこの仕様にネゴシエートしたりする際に、この結果コードを使用できます。

不承認コードは非常に不承認になります。これは Google が行う限り、恒久的な不承認です。インテグレータがこれを返す場合は、カード発行会社のコードが実際に何を意味しているかを追跡し、コードが実際には SUCCESS を意味することが判明した場合はユーザーに払い戻します。

この不承認コードが一定の日数を超えて同じ拒否コードに対して使用される場合、Google はそのコードをバグとして扱い、バグ修正に関する契約上のペナルティについてそれを追跡します。

未加工の結果

未加工の結果オブジェクト。

JSON 表現
{
  "scope": string,
  "rawCode": string
}
フィールド
scope

string

省略可: rawCode のスコープは空にできます。

rawCode

string

必須: インテグレータまたはそれ内のサブシステムからの未加工コード。

CaptureResultNotificationResultCode

captureResultNotification メソッドの結果コード。

列挙型
UNKNOWN_RESULT このデフォルト値を設定しないでください。
SUCCESS キャプチャ結果の通知が正常に処理されました。