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

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

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

省略可: この識別子はインテグレータに固有で、インテグレータによって生成されます。これは、インテグレータがこのトランザクションを認識するための識別子です。

便宜上、この ID は送金の詳細に含まれています

userMessage
(deprecated)

string

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

result

enum (CaptureResultCode)

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

rawResult

object (RawResult)

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

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

transactionLimit

string (Int64Value format)

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

リクエストの currencyCode に対する相対的な上限にする必要があります。

currentBalance

string (Int64Value format)

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

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

MandateDetails

取得元となる委任状に関する詳細。

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

string

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

MandateWithNotificationDetails

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

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

string

必須: Google が生成し、createMandate 呼び出し中に送信された委任 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 このアカウントは月間利用限度額を超えているため、現在購入に使用できません。
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 定期的な委任の支払いについてユーザーに送信された通知が期限切れになりました。