Method: capture

Google が保有するお客様のアカウントと決済代行業者の間での送金を開始します。ヘッダー内の requestIdpaymentIntegratorAccountId の組み合わせがべき等性キーであり、このトランザクションを一意に識別します。このトランザクションのすべてのミューテーション(払い戻し)で、captureRequestId フィールドに requestId 値が入力されます。

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

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


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "bWVyY2hhbnQgdHJhbnNhY3Rpb24gaWQ",
    "requestTimestamp": "1502220196077"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ",
  "transactionDescription": "Google - Music",
  "currencyCode": "INR",
  "amount": "728000000",
  "captureContext": {}
}

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


{
  "responseHeader": {
    "responseTimestamp": "1481900013178"
  },
  "result": "SUCCESS",
  "paymentIntegratorTransactionId": "aW50ZWdyYXRvciB0cmFuc2FjdGlvbiBpZA"
}

HTTP リクエスト

POST https://www.integratorhost.example.com/v1/capture

リクエスト本文

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

JSON 表現
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "transactionDescription": string,
  "currencyCode": string,
  "amount": string,
  "captureContext": {
    object (CaptureContext)
  },

  // Union field fopDetails can be only one of the following:
  "googlePaymentToken": string,
  "mandateDetails": {
    object (MandateDetails)
  },
  "mandateWithNotificationDetails": {
    object (MandateWithNotificationDetails)
  }
  // End of list of possible types for union field fopDetails.

  // Union field account_verification can be only one of the following:
  "authenticationRequestId": string,
  "otpVerification": {
    object (OtpVerification)
  }
  // End of list of possible types for union field account_verification.
}
フィールド
requestHeader

object (RequestHeader)

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

paymentIntegratorAccountId

string

必須: これは、この取引に関する契約上の制約を識別する、決済インテグレータのアカウント ID です。

transactionDescription

string

必須: お客様の明細書に記載できる取引の説明です。requestHeader にある userLocale に合わせてローカライズされます。この形式は予告なく変更されることがあり、解析されることはありません。

currencyCode

string

必須: ISO 4217 の 3 文字の通貨コード

amount

string (Int64Value format)

必須: 購入金額(通貨の マイクロ単位)。

captureContext

object (CaptureContext)

必須: このキャプチャに関するコンテキスト。

共用体フィールド fopDetails必須: このキャプチャ トランザクションの FOP の詳細。fopDetails は次のいずれかになります。
googlePaymentToken

string

両社が購入時のアカウントを識別するために両社が使用するトークン。

mandateDetails

object (MandateDetails)

委任に固有の支払いの詳細。

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

委任に固有の支払いの詳細(upcomingTransactionNotification が必要な場合)。

共用体フィールド account_verification

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

authenticationRequestId

string

省略可: 関連する認証リクエストの requestId。存在しない場合、このキャプチャに認証を関連付けることはできません。

これがある場合、ユーザーはこの呼び出しの直前に認証されているか、自動支払いスケジュールの設定で認証されています。

otpVerification

object (OtpVerification)

省略可: sendOtp から生成された OTP の検証に必要なデータ。これは、ユーザーが sendOtp パスを通過した場合にのみ表示されます。

レスポンスの本文

キャプチャ メソッドのレスポンス オブジェクト。

成功した場合、レスポンスの本文には次の構造のデータが含まれます。

JSON 表現
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorTransactionId": string,
  "userMessage": string,
  "result": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },
  "transactionLimit": string,
  "currentBalance": string
}
フィールド
responseHeader

object (ResponseHeader)

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

paymentIntegratorTransactionId

string

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

便宜上、この識別子は送金の詳細に含まれています。

userMessage
(deprecated)

string

DEPRECATED: 結果が SUCCESS でない場合にユーザーに表示される結果の説明。

result

enum (CaptureResultCode)

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

rawResult

object (RawResult)

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

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

transactionLimit

string (Int64Value format)

省略可: 結果が CHARGE_EXCEEDS_TRANSACTION_LIMIT の場合、ユーザーが 1 回のトランザクションに費やす可能性がある最大金額(マイクロ単位)です。これは、構造化されたユーザー向けのメッセージや不承認率の分析に使用されます。

これは、リクエストの currencyCode を基準とした相対的な上限である必要があります。

currentBalance

string (Int64Value format)

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

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

MandateDetails

取得元の委任に関する詳細。

JSON 表現
{
  "mandateId": string
}
フィールド
mandateId

string

必須: createMandate 呼び出し中に送信された、Google が生成した委任 ID。

MandateWithNotificationDetails

取得元の委任に関する詳細と、必要な通知の詳細。

JSON 表現
{
  "mandateId": string,
  "upcomingTransactionNotificationId": string
}
フィールド
mandateId

string

必須: createMandate 呼び出し中に送信された、Google が生成した委任 ID。

upcomingTransactionNotificationId

string

必須: このトランザクションについて事前通知するために行われた upcomingTransactionNotification 呼び出しの requestId

CaptureContext

このオブジェクトは、キャプチャがどのようにリクエストされたかに関するコンテキストを提供します。

JSON 表現
{
  "userIpAddress": string
}
フィールド
userIpAddress

string

省略可: ユーザーがセッションで行った購入の場合は、ユーザーのデバイスの IP アドレスです。ユーザーがセッションに参加していない場合は空になります。特定のコントラクトでこのフィールドの必要性が規定されていない場合は、常に空になります。

CaptureResultCode

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

列挙型
UNKNOWN_RESULT このデフォルト値は設定しないでください。
SUCCESS 商品を回収し、配送する。
CHARGE_EXCEEDS_TRANSACTION_LIMIT このキャプチャ リクエストの amount がトランザクションあたりの上限を超えています。このコードを使用する場合は、ユーザーにメッセージを伝えるために transactionLimit フィールドに値を設定します。
CHARGE_EXCEEDS_DAILY_LIMIT 1 日の上限を超えているため、このアカウントは現在購入に使用できません。
CHARGE_EXCEEDS_MONTHLY_LIMIT 1 か月の上限を超えているため、このアカウントは現在購入に使用できません。
CHARGE_UNDER_LIMIT この回収リクエストの amount が最小取引額を満たしていません。
INSUFFICIENT_FUNDS このアカウントには、この回収を保証できるだけの十分な資金がありません。
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY このアカウントはリクエストされた通貨に対応していません。
ACCOUNT_CLOSED

インテグレータが保持していたユーザーのアカウントが閉鎖されました。

この値が返されると、ユーザーの支払い方法が Google でクローズされます。ユーザーは、関連付けフローをもう一度実行して、新しい楽器を追加せざるを得なくなります。

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

インテグレーターと取引したユーザーのアカウントは閉鎖されています。アカウントが乗っ取られた疑いがあります。

この値が返されると、ユーザーの支払い方法が Google でクローズされます。ユーザーは、関連付けフローをもう一度実行して、新しい楽器を追加せざるを得なくなります。

ACCOUNT_ON_HOLD アカウントは保留中です。
ACCOUNT_CLOSED_FRAUD

インテグレータが保持しているユーザーのアカウントは、不正行為のため閉鎖されています。

この値が返されると、ユーザーの支払い方法が Google でクローズされます。ユーザーは、関連付けフローをもう一度実行して、新しい楽器を追加せざるを得なくなります。

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

アカウントは有効ですが、インテグレータ側のユーザーによって GPT が無効にされています。

この値が返されると、ユーザーの支払い方法が Google でクローズされます。ユーザーは、関連付けフローをもう一度実行して、新しい楽器を追加せざるを得なくなります。

TOKEN_REFRESH_REQUIRED これが返される場合、ユーザーは更新フローを行う必要があります。
OTP_NOT_MATCHED OTP がインテグレータから送信されたものと一致しない。
OTP_ALREADY_USED OTP はすでに使用されています。
RISK_DECLINED

インテグレーター側のリスクチェックにより、取引が承認されませんでした。

この支払いは恒久的に失敗しますが、お客様のお支払い方法が Google で閉鎖されることはありません。

NO_GOOD_FUNDING_SOURCE_AVAILABLE お客様のアカウントに、取引の支払いが可能な有効な入金元がありません。
FUNDING_SOURCE_UNAVAILABLE

基になるカード発行会社または資金源が利用できないため、この既存の支払いを再試行しても成功しません。

パートナーから 4xx または 5xx レスポンス コードが返された場合、Google は支払いを再試行します。そのため、基になる資金源が再び利用可能になったときに同じ支払いの再試行が成功した場合、パートナーは通常、これらのレスポンス コードのいずれかを返す必要があります。ただし、技術的な理由により Google が支払いを再試行しても失敗し続ける場合、パートナーは「FUNDING_SOURCE_UNAVAILABLE」を返すことができます同じ支払いを再試行しないように Google に伝える方法として選択できます。

注: Google は別の requestId でこの支払いを再試行する場合がありますが、この支払いリクエストは「不承認」とマークされます。

MANDATE_NOT_ACTIVE この回収に使用されたマンデートは無効になりました。この戻り値により、ユーザーの委任手段が Google によってクローズされます。
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED 定期的なマンデートの支払いについてユーザーに送信された通知の期限が切れています。