Method: captureResultNotification

Thông báo cho Google về kết quả chụp ảnh sau khi thực hiện lệnh gọi phương thức capture hoặc asynchronousCapture.

Giá trị captureResult là không thay đổi cho captureRequestId này nên bạn không thể thay đổi giá trị của nó bằng lệnh gọi tiếp theo đến phương thức này.

Nếu điểm cuối gặp lỗi trong khi xử lý yêu cầu, thì phản hồi từ điểm cuối này sẽ thuộc loại ErrorResponse.

Các phản hồi cho truy vấn này có thể trống nếu phương thức này không trả về HTTP 200. Nội dung phản hồi bị trống trong các tình huống mà ErrorResponse có nội dung mô tả rõ ràng có thể được sử dụng để giúp kẻ tấn công hiểu giá trị nhận dạng tài khoản của nhà tích hợp thanh toán của các nhà tích hợp khác. Trong các trường hợp này, khi khoá ký không khớp, không tìm thấy giá trị nhận dạng nhà tích hợp thanh toán hoặc khoá mã hoá, phương thức này sẽ trả về HTTP 404 không có mã. Nếu có thể xác minh chữ ký yêu cầu, thông tin bổ sung về lỗi sẽ được trả về nội dung phản hồi.

Một yêu cầu mẫu có dạng như sau:


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

Một phản hồi mẫu sẽ có dạng như sau:


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

Yêu cầu HTTP

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

Nội dung yêu cầu

Nội dung yêu cầu chứa dữ liệu với cấu trúc như sau:

Biểu diễn dưới dạng JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
Các trường
requestHeader

object (RequestHeader)

BẮT BUỘC: Tiêu đề chung cho tất cả các yêu cầu.

paymentIntegratorAccountId

string

BẮT BUỘC: Giá trị nhận dạng tài khoản của nhà tích hợp thanh toán xảy ra việc nắm bắt.

captureRequestId

string

BẮT BUỘC: Giá trị nhận dạng duy nhất của giao dịch này. Đây là requestId do Google tạo trong lệnh gọi capture hoặc asynchronousCapture mà yêu cầu này được liên kết.

Đây là một chuỗi có độ dài tối đa là 100 ký tự và chỉ chứa các ký tự "a-z", "A-Z", "0-9", ":", "-" và "_".

captureResult

object (CaptureResult)

BẮT BUỘC: Kết quả của ảnh chụp này.

paymentIntegratorTransactionId

string

KHÔNG BẮT BUỘC: Mã nhận dạng này dành riêng cho nhà tích hợp và do nhà tích hợp tạo ra. Đây là mã nhận diện mà nhà tích hợp biết giao dịch này.

Để thuận tiện, số nhận dạng này được bao gồm trong chi tiết chuyển khoản

Nội dung phản hồi

Đối tượng phản hồi cho phương thức captureResultNotification.

Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
Các trường
responseHeader

object (ResponseHeader)

BẮT BUỘC: Tiêu đề chung cho tất cả các phản hồi.

result

enum (CaptureResultNotificationResultCode)

BẮT BUỘC: Kết quả của cuộc gọi này.

Kết quả thu thập

Thông tin về kết quả cuối cùng của ảnh chụp.

Biểu diễn dưới dạng 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.
}
Các trường
captureResultCode

enum (CaptureResultCode)

BẮT BUỘC: Mã kết quả của ảnh chụp này.

rawResult

object (RawResult)

KHÔNG BẮT BUỘC: Kết quả thô của ảnh chụp này. Dùng để cung cấp thông tin về công cụ rủi ro và số liệu phân tích của Google. Trong các trường hợp lập bản đồ bằng mã từ chối, đôi khi dữ liệu bị mất. Nhà tích hợp có thể chọn cung cấp cho Google một mã thô. Ví dụ: cổng thẻ tín dụng (nhà tích hợp) có thể sử dụng trường này để thông báo cho Google mã từ chối chính xác đã nhận được từ mạng VISA. Trong trường hợp đó, scope sẽ là "visa" và rawCode sẽ là bất kỳ giá trị nào mà mạng VISA trả về.

Giá trị này là bắt buộc nếu result không phải là SUCCESS.

Trường nhóm FailureDetail.

FailureDetail chỉ có thể là một trong những loại sau đây:

transactionMaxLimit

string (Int64Value format)

KHÔNG BẮT BUỘC: Nếu captureResultCodeCHARGE_EXCEEDS_TRANSACTION_LIMIT thì đây là giá trị của giao dịch tối đa được phép. Tính năng này được dùng cho các thông báo có cấu trúc, giao diện người dùng và phân tích tỷ lệ từ chối.

Số tiền này là micros của currencyCode giống với lệnh gọi phương thức capture hoặc asynchronousCapture ban đầu.

transactionMinLimit

string (Int64Value format)

KHÔNG BẮT BUỘC: Nếu captureResultCodeCHARGE_UNDER_TRANSACTION_LIMIT thì đây là giá trị của giao dịch tối thiểu được phép. Tính năng này được dùng cho các thông báo có cấu trúc, giao diện người dùng và phân tích tỷ lệ từ chối.

Số tiền này là micros của currencyCode giống với lệnh gọi phương thức capture hoặc asynchronousCapture ban đầu.

currentBalance

string (Int64Value format)

KHÔNG BẮT BUỘC: Nếu Kết quả là INSUFFICIENT_FUNDS, thì đây là số dư hiện tại trong tài khoản của người dùng này (tính bằng micros). Tính năng này được dùng để nhắn tin trực tiếp với người dùng và có cấu trúc.

Giá trị này phải có cùng đơn vị tiền tệ với currencyCode trên yêu cầu.

Mã thu thập kết quả

Mã kết quả cho ảnh chụp.

Enum
UNKNOWN_RESULT Không bao giờ đặt giá trị mặc định này!
SUCCESS Đã chụp thành công.
CHARGE_UNDER_TRANSACTION_LIMIT Số tiền nắm bắt được yêu cầu không đáp ứng số tiền tối thiểu cho mỗi giao dịch của nhà tích hợp. Nếu bạn sử dụng mã này, hãy điền số tiền giao dịch tối thiểu vào trường transactionMinLimit cho mục đích nhắn tin cho người dùng.
CHARGE_EXCEEDS_TRANSACTION_LIMIT Số tiền nắm bắt được yêu cầu vượt quá giới hạn tối đa mỗi giao dịch của nhà tích hợp. Nếu bạn sử dụng mã này, hãy điền giới hạn giao dịch vào trường transactionMaxLimit cho mục đích nhắn tin cho người dùng.
CHARGE_EXCEEDS_DAILY_LIMIT Không thể sử dụng tài khoản của người dùng để mua hàng ngay bây giờ vì tài khoản đã vượt quá giới hạn hàng ngày.
CHARGE_EXCEEDS_MONTHLY_LIMIT Không thể sử dụng tài khoản của người dùng để mua hàng ngay bây giờ vì tài khoản đã vượt quá giới hạn hàng tháng.
INSUFFICIENT_FUNDS Tài khoản này không có đủ tiền để bảo đảm việc nắm bắt này.
SUSPECTED_FRAUD Nhà tích hợp có lý do để nghi ngờ giao dịch này là gian lận.
ACCOUNT_CLOSED Tài khoản của người dùng được tích hợp với nhà tích hợp đã bị đóng. Giá trị trả về này sẽ khiến công cụ của người dùng bị đóng với Google. Người dùng sẽ buộc phải thêm một công cụ mới.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER Tài khoản của người dùng với nhà tích hợp đã bị đóng, tài khoản bị nghi ngờ chiếm đoạt. Giá trị trả về này sẽ khiến công cụ của người dùng bị đóng với Google. Người dùng sẽ buộc phải thêm một công cụ mới.
ACCOUNT_CLOSED_FRAUD Tài khoản của người dùng do nhà tích hợp giữ đã bị đóng do gian lận. Giá trị trả về này sẽ khiến công cụ của người dùng bị đóng với Google. Người dùng sẽ buộc phải thêm một công cụ mới.
ACCOUNT_ON_HOLD Tài khoản của người dùng đang ở trạng thái treo.
OTP_NOT_MATCHED OTP không khớp với thông tin mà nhà tích hợp gửi đi.
OTP_ALREADY_USED OTP đã được sử dụng.
CAPTURE_REQUEST_EXPIRED Nhà tích hợp mất quá nhiều thời gian để có được tiền của người dùng. Google sẽ coi từ chối này là trạng thái cuối cùng, vì vậy nhà tích hợp phải đảm bảo rằng tiền của người dùng không bị nhận sau đó hoặc người dùng được tự động hoàn lại tiền nếu kết quả là quá trình chụp thành công.
INVALID_PIN Người dùng đã cung cấp mã PIN không hợp lệ.
OS_LOCK_FAILED Quy trình thanh toán này yêu cầu người dùng phải mở khoá thiết bị và không mở khoá được thiết bị.
PIN_ENTRY_ATTEMPTS_EXHAUSTED Quy trình thanh toán này yêu cầu người dùng phải nhập mã PIN. Người dùng đã không nhập được mã PIN đủ số lần họ đã thử lại.
USER_EXITED_PAYMENT_FLOW Người dùng đã hủy toàn bộ nỗ lực thanh toán (ở khóa hệ điều hành hoặc màn hình nhập mã PIN).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED Không thể sử dụng tài khoản của người dùng để mua hàng ngay bây giờ vì tài khoản này đã vượt quá giới hạn số lần giao dịch hàng tháng.
DECLINED_BY_ISSUER

Không bao giờ được sử dụng mã từ chối này ở trạng thái ổn định. Mã này có dạng mã nhận dạng tạm thời để sử dụng khi nhà tích hợp gặp mã từ chối không xác định trong công cụ phát hành công cụ của người dùng. Có thể sử dụng mã kết quả này trong khi nhà tích hợp xác định một mã kết quả phù hợp hơn để sử dụng hoặc thương lượng việc thêm mã kết quả mới vào thông số kỹ thuật này.

Quan trọng là mã từ chối này rất ít bị từ chối. Đó là sự sụt giảm vĩnh viễn theo liên quan đến Google. Nếu nhà tích hợp trả về mã này, thì họ phải theo dõi ý nghĩa thực sự của mã của nhà phát hành và hoàn tiền cho người dùng nếu mã đó thực sự có nghĩa là SUCCESS.

Nếu mã từ chối này được sử dụng cho cùng một mã từ chối cơ bản trong nhiều ngày nhất định, Google sẽ xử lý mã đó như lỗi và theo dõi nó phù hợp với bất kỳ hình phạt hợp đồng nào về việc sửa lỗi.

Kết quả thô

Đối tượng kết quả thô.

Biểu diễn dưới dạng JSON
{
  "scope": string,
  "rawCode": string
}
Các trường
scope

string

TÙY CHỌN: Có thể để trống phạm vi của RawCode.

rawCode

string

BẮT BUỘC: Mã thô từ trình tích hợp hoặc các hệ thống con trong đó.

Mã kết quả thông báo thu thập

Mã kết quả cho phương thức captureResultNotification.

Enum
UNKNOWN_RESULT Không bao giờ đặt giá trị mặc định này!
SUCCESS Thông báo kết quả chụp đã được xử lý thành công.