Method: captureResultNotification

调用 captureasynchronousCapture 方法后,将拍摄结果通知 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

必需:发生捕获的付款集成商账号标识符。

captureRequestId

string

必需:此交易的唯一标识符。这是 Google 在与此请求关联的 captureasynchronousCapture 调用期间生成的 requestId

这是一个长度上限为 100 个字符的字符串,并且仅包含字符“a-z”、“A-Z”、“0-9”、“:”、“-”和“_”。

captureResult

object (CaptureResult)

必需:此捕获的结果。

paymentIntegratorTransactionId

string

可选:此标识符专用于集成商,由集成商生成。这是集成商用于识别此交易的标识符。

为方便起见,汇款详情中已包含此标识符

响应正文

captureResultNotification 方法的响应对象。

如果成功,响应正文将包含结构如下的数据:

JSON 表示法
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
字段
responseHeader

object (ResponseHeader)

必需:所有响应的通用标头。

result

enum (CaptureResultNotificationResultCode)

必需:此调用的结果。

CaptureResult

有关拍摄最终结果的信息。

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

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

联合字段 FailureDetail

FailureDetail 只能是下列其中一项:

transactionMaxLimit

string (Int64Value format)

可选:如果 captureResultCodeCHARGE_EXCEEDS_TRANSACTION_LIMIT,则这是允许的最大事务值。用于面向用户的结构化消息传递和拒绝率分析。

此数值以与原始 captureasynchronousCapture 方法调用相同的 currencyCode 的微单位表示。

transactionMinLimit

string (Int64Value format)

可选:如果 captureResultCodeCHARGE_UNDER_TRANSACTION_LIMIT,则这是允许的最小事务的值。用于面向用户的结构化消息传递和拒绝率分析。

此数值以与原始 captureasynchronousCapture 方法调用相同的 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 用户的账号已超出每日限额,因此目前无法用于购买。
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_ALREADY_USED 动态密码已被使用。
CAPTURE_REQUEST_EXPIRED 集成商获取用户的资金的用时过长。Google 会将此遭拒交易视为最终状态,因此集成商必须确保用户的资金日后不会被扣款,或者在扣款成功后自动为用户退款。
INVALID_PIN 用户提供的 PIN 码无效。
OS_LOCK_FAILED 此付款流程要求进行操作系统锁定质询,并且用户未能解锁设备。
PIN_ENTRY_ATTEMPTS_EXHAUSTED 此付款流程要求用户输入 PIN 码。用户输错 PIN 码的次数已经达到上限。
USER_EXITED_PAYMENT_FLOW 用户取消了所有付款尝试(在操作系统锁定或 PIN 码输入屏幕上取消)。
MONTHLY_FREQUENCY_LIMIT_EXCEEDED 用户的账号已超出每月交易尝试次数上限,因此目前无法用于购买。
DECLINED_BY_ISSUER

切勿在稳定状态下使用此拒绝代码。它作为一个临时的通用代码,在集成商遇到来自用户付款方式的基础发行商的未知拒绝代码时使用。当集成商确定要使用的更合适的结果代码或协商向此规范添加新结果代码时,可以使用此结果代码。

需要注意的是,此拒绝代码非常真实。在 Google 看来,这笔付款是永久遭拒。如果集成商返回此代码,则负责追踪发卡机构代码的实际含义,并在发现代码实际代表 SUCCESS 时向用户退款。

如果此拒绝代码用于同一底层拒绝代码超过一定天数,Google 会将其视为错误,并会根据与错误修复相关的任何合同惩罚跟踪此代码。

RawResult

原始结果对象。

JSON 表示法
{
  "scope": string,
  "rawCode": string
}
字段
scope

string

可选: rawCode 的范围可以为空。

rawCode

string

必需:来自集成商或其中的子系统的原始代码。

CaptureResultNotificationResultCode

captureResultNotification 方法的结果代码。

枚举
UNKNOWN_RESULT 切勿设置此默认值!
SUCCESS 拍摄结果通知已成功处理。