[WordPress] How To trigger TOT verification flow with custom code?
Collect required Data and call verifyPerson
- Endpoint: wp-admin/admin-ajax.php?action=tot_verify_person
- Method: POST
- Payload
{ "appData": { "billing_first_name": "string", "billing_last_name": "string", "billing_email": "string", "billing_phone": "string", "billing_country": "string", "billing_address_1": "string", "billing_address_2": "string", "billing_city": "string", "billing_state": "string", "billing_postcode": "string", "tot-api-verify-person-nonce": "string", "user_id": "string" // optional }, }
For tot-api-verify-person-nonce: you need to generate one for your use
Handle The response
For unverified user: response.code => WorkflowService:nextStepIsInteractive
For verified user: response.code => WorkflowService:conditionsMet
And here’s an example on how to handle in JS
function handleVerificationResponse(response) { if (response.code === "WorkflowService:nextStepIsInteractive" && response.status === 422) { // Launch verification interface const { modalType, params } = response.continuation; params.disableClose = true; // Trigger verification let verifyPersonInProgress = true; window.tot('modalOpen', modalType, params); // @see next section for handling modal close event } else if (response.code === "WorkflowService:conditionsMet") { // User is verified } else { // Handle other response types console.error('Unexpected verification response:', response); } }
Handle Modal Close event
Once the end user is done - the modal will close and control will return to your app. To be informed of this you will probably want to register for this event so you can take action. Here’s an example that’s done:
tot("bind", "modalClose", function (eventData, evt) { console.log("[CONSOLE] my modalClose event called!"); verifyPersonInProgress = false; if (evt && evt.data) { var eventData = {}; try { eventData = JSON.parse(evt.data); } catch (err) { return false; } eventData = eventData.data || eventData; if (eventData.continue) { if (lastEvent.eventTimestamp === evt.timeStamp) { return; // don't process invalid data, nor the same event twice. } lastEvent.eventTimestamp = evt.timeStamp; checkVerificationStatusAndDoSomething(); // your function. } } return false; });
function handleVerificationResponse(response) {
if (response.code === "WorkflowService:nextStepIsInteractive" && response.status === 422) {
// Launch verification interface
const {
modalType,
params
} = response.continuation;
params.disableClose = true;
// Trigger verification
let verifyPersonInProgress = true;
window.tot('modalOpen', modalType, params);
// @see next section for handling modal close event
} else if (response.code === "WorkflowService:conditionsMet") {
// User is verified
} else {
// Handle other response types
console.error('Unexpected verification response:', response);
}
}Once the end user is done - the modal will close and control will return to your app. To be informed of this you will probably want to register for this event so you can take action. Here’s an example that’s done:
tot("bind", "modalClose", function (eventData, evt) {
console.log("[CONSOLE] my modalClose event called!");
verifyPersonInProgress = false;
if (evt && evt.data) {
var eventData = {};
try {
eventData = JSON.parse(evt.data);
} catch (err) {
return false;
}
eventData = eventData.data || eventData;
if (eventData.continue) {
if (lastEvent.eventTimestamp === evt.timeStamp) {
return; // don't process invalid data, nor the same event twice.
}
lastEvent.eventTimestamp = evt.timeStamp;
checkVerificationStatusAndDoSomething(); // your function.
}
}
return false;
});