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

必需:这是付款集成商账号标识符,用于标识有关此交易的合同限制。

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 生成的动态密码所需的数据。仅当用户经过 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 提供原始代码。例如,信用卡网关(集成商)可能会使用此字段向 Google 传达从 VISA 网络收到的确切拒绝代码。在这种情况下,scope 将为“visa”rawCode 将是 VISA 网络返回的值。

如果 result 不是 SUCCESS,则此值为必需值。

transactionLimit

string (Int64Value format)

可选:如果 Result 为 CHARGE_EXCEEDS_TRANSACTION_LIMIT,则表示用户可以为一笔交易支出的最高金额(以微单位表示)。用于面向用户的结构化消息传递和拒绝率分析。

此值必须是相对于请求中的 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 此账号已超出每日上限,因此目前无法用于购买交易。
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_ALREADY_USED 动态密码已被使用。
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 向用户发送的定期授权付款通知已过期。