Requests the integrator send an OTP to the phone number.
If the integrator returns success
, then Google expects an SMS sent to the phone number.
Google provides only an accountPhoneNumber
when a user initially associates their account with Google. During reauthentication, Google provides the accountPhoneNumber
and the associationId
. If, during reauthentication, the phone number provided (identified by the accountPhoneNumber
) does not match the phone number associated with the account (identified by the associationId
) the integrator must return PHONE_NUMBER_NOT_ASSOCIATED_WITH_ACCOUNT
.
If the endpoint encounters an error while processing the request, the response body from this endpoint should be of type
.ErrorResponse
An example request looks like:
{
"requestHeader": {
"protocolVersion": {
"major": 2
},
"requestId": "0123434-otp-abc",
"requestTimestamp": {
"epochMillis": "1502545413026"
},
"paymentIntegratorAccountId": "InvisiCashUSA_USD"
},
"accountPhoneNumber": {
"value": "+918067218010"
},
"smsMatchingToken": "AB12345678C"
}
An example response looks like:
{
"responseHeader": {
"responseTimestamp": {
"epochMillis": "1502545413098"
}
},
"result": {
"success": {}
}
}
HTTP request
POST https://www.integratorhost.example.com/v2/sendOtp
Request body
The request body contains data with the following structure:
JSON representation |
---|
{ "requestHeader": { object ( |
Fields | |
---|---|
requestHeader |
REQUIRED: Common header for all requests. |
accountPhoneNumber |
REQUIRED: The account phone number. |
associationId |
OPTIONAL: This is the association identifier used to reference a user's account. If this is populated then it is expected that the integrator check that this account's phone number is the same phone number passed into This is populated whenever Google is performing a re-authentication |
smsMatchingToken |
REQUIRED: This value is provided by Google and must be included in the SMS delivered to the user. This allows Google to auto-match the SMS on the device for Android O devices (see reference ). This will be 11 characters. So for example, if the SMS normally looks like:
And Google sends "0123456789A" for this field, then the SMS should look like:
Here's the OTP you requested: YYXXZZ Alternatively it could look like:
0123456789A |
Response body
Response object for the sendOtp method.
If successful, the response body contains data with the following structure:
JSON representation |
---|
{ "responseHeader": { object ( |
Fields | |
---|---|
responseHeader |
REQUIRED: Common header for all responses. |
result |
REQUIRED: Result of this request |
SendOtpResult
Result codes for send OTP request.
JSON representation |
---|
{ // Union field |
Fields | |
---|---|
Union field
|
|
success |
Integrator has sent the OTP. |
phoneNumberNotAssociatedWithAccount |
Phone number isn't associated with the account identified by |
unknownPhoneNumber |
Phone number isn't associated with any account. This is used when the |
messageUnableToBeSent |
Integrator couldn't send the OTP for some reason. This is a transient error, and may result in this call being retried. |
notEligible |
User's account is not eligible for this service. |
otpLimitReached |
User has requested or tried to verify too many OTPs. |
accountClosed |
The user's account held with the integrator has been closed. This should only be used when the "associationId" is being used to identify this user. Returning this value will cause the user's instrument to be closed with Google. The user will be forced to add a new instrument by going through the association flow again. |
accountClosedAccountTakenOver |
The user's account with the integrator has been closed, suspected account take over. This should only be used when the "associationId" is being used to identify this user. Returning this value will cause the user's instrument to be closed with Google. The user will be forced to add a new instrument by going through the association flow again. |
accountClosedFraud |
The user's account held with the integrator has been closed because of fraud. This should only be used when the "associationId" is being used to identify this user. Returning this value will cause the user's instrument to be closed with Google. The user will be forced to add a new instrument by going through the association flow again. |