Initiate action
POST {your_base_url}/initiate_actionĐược gọi khi cửa sổ challenge mở ra, và mỗi lần chủ thẻ yêu cầu gửi lại. Đây là nơi bạn thực sự gửi credential đi — gửi SMS, đẩy push notification.
Hình dạng request phụ thuộc vào StepupType bạn đã trả về từ /step_up.
OTP
ACS sinh mã và tự kiểm tra nó. Nền tảng của bạn chỉ có nhiệm vụ gửi những gì được cung cấp.
{
"ProcessorId": "cake-proc-01",
"IssuerId": "cake-iss-01",
"TransactionId": "9f6b6a2e-6f4e-4d0a-9b6e-2f9d6c1a7e10",
"DSTransactionId": "660e8400-e29b-41d4-a716-446655440000",
"StepupRequestId": "b2b6c9a4-1d0e-4e3a-8c8b-5a1f2d3c4b5a",
"StepupType": "OTP",
"StepupCounter": 1,
"VerificationToken": "482913",
"MessageVersion": "2.2.0",
"RDXMessageVersion": "2.2.4",
"MessageCategory": "01",
"CardBrandName": "VISA",
"Credentials": [{ "Id": "0b8ce7e2-8388-4b4c-9568-8f8da53c1b09", "Type": "OTPSMS" }]
}Gửi VerificationToken nguyên vẹn
Đây là mã mà ACS sẽ so sánh với giá trị chủ thẻ nhập vào. Nếu nền tảng của bạn tự sinh mã riêng, chủ thẻ sẽ nhận một giá trị trong khi ACS lại kiểm tra một giá trị khác, và mọi lần thử đều thất bại cho đến khi chạm giới hạn thử lại. Hãy truyền nguyên vẹn giá trị này.
Out-of-band
Không có giá trị credential — thay vào đó bạn nhận được URL để gọi khi chủ thẻ phản hồi.
{
"ProcessorId": "cake-proc-01",
"IssuerId": "cake-iss-01",
"TransactionId": "9f6b6a2e-6f4e-4d0a-9b6e-2f9d6c1a7e10",
"DSTransactionId": "660e8400-e29b-41d4-a716-446655440000",
"StepupRequestId": "b2b6c9a4-1d0e-4e3a-8c8b-5a1f2d3c4b5a",
"StepupType": "OUTOFBAND",
"StepupCounter": 1,
"OOBCallbackUrl": "https://acs.example.cake.vn/oob-callback",
"MessageVersion": "2.2.0",
"RDXMessageVersion": "2.2.4",
"MessageCategory": "01",
"CardBrandName": "VISA",
"Credentials": [{ "Id": "0b8ce7e2-8388-4b4c-9568-8f8da53c1b09", "Type": "OUTOFBANDOTHER" }]
}OOBCallbackUrl là nơi bạn đẩy kết quả — xem OOB callback.
Response
Chỉ cần một xác nhận tối thiểu. Hãy echo lại các trường định danh:
{
"ProcessorId": "cake-proc-01",
"IssuerId": "cake-iss-01",
"TransactionId": "9f6b6a2e-6f4e-4d0a-9b6e-2f9d6c1a7e10",
"StepupRequestId": "b2b6c9a4-1d0e-4e3a-8c8b-5a1f2d3c4b5a",
"Status": "SUCCESS",
"Credentials": [{ "Id": "0b8ce7e2-8388-4b4c-9568-8f8da53c1b09", "Type": "OTPSMS" }]
}Một lỗi khi gửi ở đây không hủy xác thực. ACS sẽ ghi nhận lỗi đó và vẫn hiển thị màn hình challenge, để chủ thẻ có thể yêu cầu gửi lại.
Gửi lại (Resend)
Mỗi lần gửi lại sẽ gọi lại endpoint này với cùng StepupRequestId và StepupCounter được tăng lên. Hãy xử lý đây như một lần gửi lại trong cùng phiên hiện có — không mở một phiên mới, và không vô hiệu hóa phiên bạn đang có.
Với OTP, VerificationToken ở lần gửi lại có thể khác với lần gọi trước. Luôn gửi giá trị từ request hiện tại.