Method: captureResultNotification

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

Giá trị captureResult không thay đổi giá trị của captureRequestId này, vì vậy, bạn không thể thay đổi giá trị bằng lệnh gọi tiếp theo tới 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.

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

Yêu cầu mẫu sẽ 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"
  }
}

Câu trả lờ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 có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
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: Mã nhận dạng tài khoản của đối tác tích hợp thanh toán nơi diễn ra việc thu thập.

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 liên kết với yêu cầu này.

Đâ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: Giá trị nhận dạng này dành riêng cho đơn vị tích hợp và do đơn vị tích hợp tạo ra. Đây là giá trị nhận dạng mà đối tác tích hợp biết giao dịch này.

Để thuận tiện, mã nhận dạng này được đưa vào thông tin chuyển tiề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)
}
Trường
responseHeader

object (ResponseHeader)

BẮT BUỘC: Tiêu đề chung cho tất cả câu trả lời.

result

enum (CaptureResultNotificationResultCode)

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

CaptureResult

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

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.
}
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 cho công cụ phân tích và công cụ đánh giá rủi ro của Google. Trong các tình huống liên kết mã từ chối, đôi khi dữ liệu sẽ bị mất. Đơn vị tích hợp có thể chọn cung cấp cho Google một mã thô. Ví dụ: cổng vào thẻ tín dụng (nhà tích hợp) có thể sử dụng trường này để cung cấp 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ỳ thẻ 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 kết hợp FailureDetail.

FailureDetail chỉ có thể là một trong những trạng thá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. Số liệu này được sử dụng cho thông báo có cấu trúc dành cho người dùng và phân tích tỷ lệ từ chối.

Số tiền này là micrô của cùng một currencyCode 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. Số liệu này được sử dụng cho thông báo có cấu trúc dành cho người dùng và phân tích tỷ lệ từ chối.

Số tiền này là micrô của cùng một currencyCode 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 có trong tài khoản của người dùng (tính bằng đơn vị micrô). Loại thông báo này được dùng cho thông báo có cấu trúc dành cho người dùng.

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

CaptureResultCode

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

Enum
UNKNOWN_RESULT Đừ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 thu được được yêu cầu không đáp ứng số tiền tối thiểu trên mỗi giao dịch của nhà tích hợp. Nếu mã này được dùng, hãy điền số tiền giao dịch tối thiểu vào trường transactionMinLimit cho mục đích thông báo cho người dùng.
CHARGE_EXCEEDS_TRANSACTION_LIMIT Số tiền thu được được yêu cầu vượt quá giới hạn tối đa trên mỗi giao dịch của đơn vị tích hợp. Nếu bạn dùng mã này, hãy điền hạn mức giao dịch vào trường transactionMaxLimit để thông báo 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 này để mua hàng ngay bây giờ vì tài khoản này đã vượt quá giới hạn hằng ngày.
CHARGE_EXCEEDS_MONTHLY_LIMIT Hiện không thể sử dụng tài khoản của người dùng để mua hàng vì tài khoản này đã vượt quá giới hạn hằng tháng.
INSUFFICIENT_FUNDS Tài khoản này không có đủ tiền để đảm bảo ghi nhận được khoản tiền này.
SUSPECTED_FRAUD Nhà tích hợp có lý do để nghi ngờ rằng giao dịch này là gian lận.
ACCOUNT_CLOSED Tài khoản của người dùng do đối tác tích hợp giữ lại đã bị đóng. Giá trị trả về này sẽ khiến phương thứ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 người dùng với đơn vị tích hợp đã bị đóng và có thể là tài khoản bị chiếm đoạt. Giá trị trả về này sẽ khiến phương thứ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 được giữ với đối tác tích hợp đã bị đóng do gian lận. Giá trị trả về này sẽ khiến phương thứ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 bị tạm ngưng.
OTP_NOT_MATCHED OTP không khớp với thông tin mà nhà tích hợp đã gử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 để lấy đượ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, đơn vị tích hợp phải đảm bảo rằng tiền của người dùng không bị thu hồi sau đó, hoặc người dùng sẽ tự động được hoàn tiền nếu quá trình thu thậ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 thử thách khoá hệ điều hành và người dùng 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 nhập mã PIN. Người dùng không nhập được mã PIN đủ số lần nên đã hết số lần thử lại.
USER_EXITED_PAYMENT_FLOW Người dùng đã huỷ toàn bộ lần thanh toán (tại màn hình khoá hệ điều hành hoặc màn hình nhập mã PIN).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED Hiện không thể sử dụng tài khoản của người dùng để mua hàng vì tài khoản này đã vượt quá giới hạn giao dịch hằng tháng.
DECLINED_BY_ISSUER

Tuyệt đối không sử dụng mã từ chối này ở trạng thái ổn định. Mã này là mã nhận toàn bộ tạm thời để sử dụng khi nhà tích hợp gặp mã từ chối không xác định từ nhà phát hành công cụ cơ bản của người dùng. Bạn 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 quy cách này.

Quan trọng là mã từ chối này thực sự là mức giảm thực. Theo Google, đây là sự từ chối vĩnh viễn. Nếu nhà tích hợp trả về giá trị này, thì họ có quyền 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 hoá ra mã đó thực sự có ý nghĩa là SUCCESS.

Nếu mã từ chối này được dùng cho cùng một mã từ chối cơ bản trong hơn một số ngày nhất định, thì Google sẽ coi đó là lỗi và theo dõi lỗi tương ứng đối với mọi hình phạt hợp đồng liên quan đến việc sửa lỗi.

RawResult

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

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

string

KHÔNG BẮT BUỘC: Phạm vi của mã thô, có thể để trống.

rawCode

string

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

CaptureResultNotificationResultCode

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

Enum
UNKNOWN_RESULT Đừng bao giờ đặt giá trị mặc định này!
SUCCESS Đã xử lý thành công thông báo kết quả thu thập.