Method: sendOtp

Yêu cầu đối tác tích hợp gửi OTP đến số điện thoại.

Nếu đối tác tích hợp trả về giá trị SUCCESS, thì Google sẽ yêu cầu gửi một tin nhắn SMS đến số điện thoại đó.

Google chỉ cung cấp accountPhoneNumber khi người dùng liên kết tài khoản của họ với Google lần đầu. Sau đó, chỉ associationId được gửi cho tất cả các lệnh gọi tiếp theo.

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

Yêu cầu mẫu sẽ có dạng như sau:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "0123434-otp-abc",
    "requestTimestamp": "1502545413026"
  },
  "accountPhoneNumber": "+918067218010",
  "smsMatchingToken": "AB12345678C",
  "otpContext": {
    "association": {}
  }
}

Câu trả lời mẫu sẽ có dạng như sau:


{
  "responseHeader": {
    "responseTimestamp": "1502545413098"
  },
  "paymentIntegratorSendOtpId": "99==ABC EF",
  "result": "SUCCESS"
}

Yêu cầu HTTP

POST https://www.integratorhost.example.com/v1/sendOtp

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)
  },
  "smsMatchingToken": string,
  "otpContext": {
    object (OtpContext)
  },

  // Union field account_identifier can be only one of the following:
  "accountPhoneNumber": string,
  "associationId": string
  // End of list of possible types for union field account_identifier.
}
Trường
requestHeader

object (RequestHeader)

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

smsMatchingToken

string

BẮT BUỘC: Giá trị này do Google cung cấp và phải có trong tin nhắn SMS gửi đến người dùng. Việc này cho phép Google tự động so khớp SMS trên thiết bị dành cho các thiết bị Android O (xem tài liệu tham khảo). Mã này sẽ có 11 ký tự.

Ví dụ: nếu SMS thường trông giống như sau:

Here's the OTP you requested: <OTP>

Và Google gửi "0123456789A" đối với trường này, thì SMS sẽ có dạng như sau:

0123456789A

Here's the OTP you requested: YYXXZZ

Ngoài ra, mã này có thể có dạng như sau:

Here's the OTP you requested: YYXXZZ

0123456789A

otpContext

object (OtpContext)

KHÔNG BẮT BUỘC: Đây là bối cảnh trong đó yêu cầu OTP đang được thực hiện.

Trường kết hợp account_identifier. BẮT BUỘC: Đây là giá trị nhận dạng của tài khoản mà bạn cần gửi OTP. account_identifier chỉ có thể là một trong những trạng thái sau đây:
accountPhoneNumber

string

Đây là số điện thoại có định dạng E.164. Ví dụ: +14035551111 và +918067218000. Hàm này sẽ luôn bắt đầu bằng dấu + và chỉ bao gồm các số về sau (không có dấu gạch ngang).

Trường này được điền sẵn khi người dùng liên kết tài khoản lần đầu với Google và trong khi liên kết lại.

associationId

string

Đây là mã nhận dạng liên kết dùng để tham chiếu đến một tài khoản của người dùng.

Thông tin này được điền sẵn cho tất cả các lệnh gọi tiếp theo sau lần liên kết ban đầu.

Nội dung phản hồi

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

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)
  },
  "paymentIntegratorSendOtpId": string,
  "result": enum (SendOtpResultCode)
}
Trường
responseHeader

object (ResponseHeader)

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

paymentIntegratorSendOtpId

string

KHÔNG BẮT BUỘC: Giá trị nhận dạng mà đối tác tích hợp biết yêu cầu OTP gửi này dưới dạng. Đây là dữ liệu tích hợp do trình tích hợp tạo.

result

enum (SendOtpResultCode)

BẮT BUỘC: Kết quả của yêu cầu này

OtpContext

Bối cảnh trong đó yêu cầu OTP.

Biểu diễn dưới dạng JSON
{

  // Union field otp_context can be only one of the following:
  "association": {
    object (Empty)
  },
  "mandateCreation": {
    object (Empty)
  },
  "associationWithMandateCreation": {
    object (Empty)
  }
  // End of list of possible types for union field otp_context.
}
Trường
Trường kết hợp otp_context. BẮT BUỘC: Bối cảnh trong đó yêu cầu OTP. otp_context chỉ có thể là một trong những trạng thái sau đây:
association

object (Empty)

Bạn đang yêu cầu OTP cho việc liên kết/liên kết lại.

mandateCreation

object (Empty)

Yêu cầu OTP trong quá trình tạo uỷ nhiệm chi.

associationWithMandateCreation

object (Empty)

Đang yêu cầu OTP để liên kết cùng với việc tạo giấy uỷ nhiệm.

Trống

Loại này không có trường nào.

Đối tượng này được dùng để mở rộng vì boolean và enum thường cần được mở rộng khi có thêm dữ liệu. Trình triển khai sử dụng lớp này để xác định sự hiện diện. Bản liệt kê này đại diện có thể được mở rộng để chứa dữ liệu trong các phiên bản trong tương lai.

Cách biểu diễn JSON cho Empty là đối tượng JSON trống {}.

SendOtpResultCode

Mã kết quả cho việc gửi yêu cầu OTP.

Enum
UNKNOWN_RESULT Đừng bao giờ đặt giá trị mặc định này!
SUCCESS Nhà tích hợp đã gửi OTP.
PHONE_NUMBER_NOT_ASSOCIATED_WITH_ACCOUNT Số điện thoại chưa được liên kết với tài khoản do associationId xác định.
UNKNOWN_PHONE_NUMBER Số điện thoại chưa được liên kết với bất kỳ tài khoản nào. Thông tin này được dùng khi bạn không đặt associationId.
MESSAGE_UNABLE_TO_BE_SENT Trình tích hợp không thể gửi OTP vì lý do nào đó. Đây là một lỗi tạm thời và có thể khiến lệnh gọi này được thử lại.
INVALID_PHONE_NUMBER Định dạng số điện thoại không chính xác.
NOT_ELIGIBLE Tài khoản của người dùng không đủ điều kiện sử dụng dịch vụ này.
OTP_LIMIT_REACHED Người dùng đã yêu cầu hoặc cố xác minh quá nhiều OTP.
ACCOUNT_CLOSED

Tài khoản của người dùng do đối tác tích hợp nắm giữ đã bị đóng. Bạn chỉ nên sử dụng thuộc tính này khi "associationId" đang được sử dụng để nhận dạng người dùng này.

Việc trả về giá trị 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 bằng cách thực hiện lại quy trình liên kết.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Tài khoản của 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. Bạn chỉ nên sử dụng thuộc tính này khi "associationId" đang được sử dụng để nhận dạng người dùng này.

Việc trả về giá trị 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 bằng cách thực hiện lại quy trình liên kết.

ACCOUNT_CLOSED_FRAUD

Tài khoản của người dùng do đối tác tích hợp nắm giữ đã bị đóng do gian lận. Bạn chỉ nên sử dụng thuộc tính này khi "associationId" đang được sử dụng để nhận dạng người dùng này.

Việc trả về giá trị 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 bằng cách thực hiện lại quy trình liên kết.